diff options
Diffstat (limited to 'imap')
-rw-r--r-- | imap/src/c-client/rfc822.c | 13 | ||||
-rw-r--r-- | imap/src/c-client/rfc822.h | 1 |
2 files changed, 14 insertions, 0 deletions
diff --git a/imap/src/c-client/rfc822.c b/imap/src/c-client/rfc822.c index 214ba141..9a26af7f 100644 --- a/imap/src/c-client/rfc822.c +++ b/imap/src/c-client/rfc822.c @@ -2093,6 +2093,19 @@ unsigned char *rfc822_binary (void *src,unsigned long srcl,unsigned long *len) if (((unsigned long) (d - ret)) != *len) fatal ("rfc822_binary logic flaw"); return ret; /* return the resulting string */ } +unsigned char *rfc822_urlbinary (void *src,unsigned long srcl,unsigned long *len) +{ + unsigned char *s, *ret = rfc822_binary (src, srcl, len); + + for(s = ret; s && *s; s++) + switch(*s){ + case '+': *s = '-'; break; + case '/': *s = '_'; break; + case '=': *s = '\0'; *len = s - ret; *++s = '\0'; break; + default : break; + } + return ret; +} /* Convert QUOTED-PRINTABLE contents to 8BIT * Accepts: source diff --git a/imap/src/c-client/rfc822.h b/imap/src/c-client/rfc822.h index 0621732a..f8f605b8 100644 --- a/imap/src/c-client/rfc822.h +++ b/imap/src/c-client/rfc822.h @@ -101,6 +101,7 @@ void rfc822_encode_body_8bit (ENVELOPE *env,BODY *body); long rfc822_output_text (RFC822BUFFER *buf,BODY *body); void *rfc822_base64 (unsigned char *src,unsigned long srcl,unsigned long *len); unsigned char *rfc822_binary (void *src,unsigned long srcl,unsigned long *len); +unsigned char *rfc822_urlbinary (void *src,unsigned long srcl,unsigned long *len); unsigned char *rfc822_qprint (unsigned char *src,unsigned long srcl, unsigned long *len); unsigned char *rfc822_8bit (unsigned char *src,unsigned long srcl, |