diff options
Diffstat (limited to 'sqwebmail/args.c')
| -rw-r--r-- | sqwebmail/args.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/sqwebmail/args.c b/sqwebmail/args.c new file mode 100644 index 0000000..45457f6 --- /dev/null +++ b/sqwebmail/args.c @@ -0,0 +1,65 @@ +/* +** Copyright 2001 Double Precision, Inc. See COPYING for +** distribution information. +*/ + + +/* +*/ +#include "sqwebmail.h" +#include "config.h" +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +struct arglist { + struct arglist *next; + char *argbuf; +} ; + +static struct arglist *arglist=0; + +void freeargs() +{ + struct arglist *a; + + while ((a=arglist) != NULL) + { + arglist=a->next; + free(a->argbuf); + free(a); + } +} + +void addarg(const char *p) +{ + char *s=strdup(p); + struct arglist *a; + + if (!s) + enomem(); + + a=(struct arglist *)malloc(sizeof(struct arglist)); + + if (!a) + { + free(s); + enomem(); + } + + a->next=arglist; + arglist=a; + a->argbuf=s; +} + +const char *getarg(const char *n) +{ + size_t l=strlen(n); + struct arglist *a; + + for (a=arglist; a; a=a->next) + if (strncmp(a->argbuf, n, l) == 0 && + a->argbuf[l] == '=') + return (a->argbuf+l+1); + return (""); +} |
