X-Git-Url: http://git.hcoop.net/hcoop/debian/courier-authlib.git/blobdiff_plain/8d138742ae268344f406cb75d79aa6bf853f9d87:/rfc822/rfc822_getaddrs.c..b0322a8536f3cab76471c98122fe1df75bb7c387:/libs/rfc822/static/git-favicon.png diff --git a/rfc822/rfc822_getaddrs.c b/rfc822/rfc822_getaddrs.c deleted file mode 100644 index a17113f..0000000 --- a/rfc822/rfc822_getaddrs.c +++ /dev/null @@ -1,109 +0,0 @@ -/* -** Copyright 1998 - 2009 Double Precision, Inc. -** See COPYING for distribution information. -*/ - -/* -** $Id: rfc822_getaddrs.c,v 1.6 2009/11/08 18:14:47 mrsam Exp $ -*/ -#include "rfc822.h" -#include - -static void cntlen(char c, void *p) -{ - c=c; - ++ *(size_t *)p; -} - -static void cntlensep(const char *p, void *ptr) -{ - while (*p) cntlen(*p++, ptr); -} - -static void saveaddr(char c, void *ptr) -{ - *(*(char **)ptr)++=c; -} - -static void saveaddrsep(const char *p, void *ptr) -{ - while (*p) saveaddr(*p++, ptr); -} - -char *rfc822_getaddrs(const struct rfc822a *rfc) -{ - size_t addrbuflen=0; - char *addrbuf, *ptr; - - if (rfc822_print(rfc, &cntlen, &cntlensep, &addrbuflen) < 0) - return NULL; - - if (!(addrbuf=malloc(addrbuflen+1))) - return (0); - - ptr=addrbuf; - if (rfc822_print(rfc, &saveaddr, &saveaddrsep, &ptr) < 0) - { - free(addrbuf); - return NULL; - } - - addrbuf[addrbuflen]=0; - return (addrbuf); -} - -static void saveaddrsep_wrap(const char *p, void *ptr) -{ -int c; - - while ((c=*p++) != 0) - { - if (c == ' ') c='\n'; - saveaddr(c, ptr); - } -} - -char *rfc822_getaddrs_wrap(const struct rfc822a *rfc, int w) -{ - size_t addrbuflen=0; - char *addrbuf, *ptr, *start, *lastnl; - - if (rfc822_print(rfc, &cntlen, &cntlensep, &addrbuflen) < 0) - return NULL; - - if (!(addrbuf=malloc(addrbuflen+1))) - return (0); - - ptr=addrbuf; - - if (rfc822_print(rfc, &saveaddr, &saveaddrsep_wrap, &ptr) < 0) - { - free(addrbuf); - return NULL; - } - - addrbuf[addrbuflen]=0; - - for (lastnl=0, start=ptr=addrbuf; *ptr; ) - { - while (*ptr && *ptr != '\n') ptr++; - if (ptr-start < w) - { - if (lastnl) *lastnl=' '; - lastnl=ptr; - if (*ptr) ++ptr; - } - else - { - if (lastnl) - start=lastnl+1; - else - { - start=ptr+1; - if (*ptr) ++ptr; - } - lastnl=0; - } - } - return (addrbuf); -}