summaryrefslogtreecommitdiff
path: root/sqmail-4.3.07/src/quote.c
diff options
context:
space:
mode:
Diffstat (limited to 'sqmail-4.3.07/src/quote.c')
-rw-r--r--sqmail-4.3.07/src/quote.c81
1 files changed, 0 insertions, 81 deletions
diff --git a/sqmail-4.3.07/src/quote.c b/sqmail-4.3.07/src/quote.c
deleted file mode 100644
index ef1bf45..0000000
--- a/sqmail-4.3.07/src/quote.c
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "stralloc.h"
-#include "str.h"
-#include "quote.h"
-
-/*
-quote() encodes a box as per rfc 821 and rfc 822,
-while trying to do as little quoting as possible.
-no, 821 and 822 don't have the same encoding. they're not even close.
-no special encoding here for bytes above 127.
-*/
-
-static char ok[128] = {
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-,0,7,0,7,7,7,7,7,0,0,7,7,0,7,7,7 ,7,7,7,7,7,7,7,7,7,7,0,0,0,7,0,7
-,0,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 ,7,7,7,7,7,7,7,7,7,7,7,0,0,0,7,7
-,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 ,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,0
-} ;
-
-static int doit(stralloc *saout,stralloc *sain)
-{
- char ch;
- int i;
- int j;
-
- if (!stralloc_ready(saout,sain->len * 2 + 2)) return 0;
- j = 0;
- saout->s[j++] = '"';
-
- for (i = 0; i < sain->len; ++i) {
- ch = sain->s[i];
- if ((ch == '\r') || (ch == '\n') || (ch == '"') || (ch == '\\'))
- saout->s[j++] = '\\';
- saout->s[j++] = ch;
- }
- saout->s[j++] = '"';
- saout->len = j;
-
- return 1;
-}
-
-int quote_need(char *s,unsigned int n)
-{
- unsigned char uch;
- int i;
- if (!n) return 1;
-
- for (i = 0; i < n; ++i) {
- uch = s[i];
- if (uch >= 128) return 1;
- if (!ok[uch]) return 1;
- }
- if (s[0] == '.') return 1;
- if (s[n - 1] == '.') return 1;
-
- for (i = 0; i < n - 1; ++i)
- if (s[i] == '.')
- if (s[i + 1] == '.') return 1;
-
- return 0;
-}
-
-int quote(stralloc *saout,stralloc *sain)
-{
- if (quote_need(sain->s,sain->len)) return doit(saout,sain);
- return stralloc_copy(saout,sain);
-}
-
-static stralloc foo = {0};
-
-int quote2(stralloc *sa,char *s)
-{
- int j;
- if (!*s) return stralloc_copys(sa,s);
- j = str_rchr(s,'@');
- if (!stralloc_copys(&foo,s)) return 0;
- if (!s[j]) return quote(sa,&foo);
- foo.len = j;
- if (!quote(sa,&foo)) return 0;
-
- return stralloc_cats(sa,s + j);
-}