Back to index

courier  0.68.2
args.c
Go to the documentation of this file.
00001 /*
00002 ** Copyright 2001 Double Precision, Inc.  See COPYING for
00003 ** distribution information.
00004 */
00005 
00006 
00007 /*
00008 */
00009 #include      "sqwebmail.h"
00010 #include      "config.h"
00011 #include      <stdio.h>
00012 #include      <string.h>
00013 #include      <stdlib.h>
00014 
00015 struct arglist {
00016        struct arglist *next;
00017        char *argbuf;
00018 } ;
00019 
00020 static struct arglist *arglist=0;
00021 
00022 void freeargs()
00023 {
00024        struct arglist *a;
00025 
00026        while ((a=arglist) != NULL)
00027        {
00028               arglist=a->next;
00029               free(a->argbuf);
00030               free(a);
00031        }
00032 }
00033 
00034 void addarg(const char *p)
00035 {
00036        char *s=strdup(p);
00037        struct arglist *a;
00038 
00039        if (!s)
00040               enomem();
00041 
00042        a=(struct arglist *)malloc(sizeof(struct arglist));
00043 
00044        if (!a)
00045        {
00046               free(s);
00047               enomem();
00048        }
00049 
00050        a->next=arglist;
00051        arglist=a;
00052        a->argbuf=s;
00053 }
00054 
00055 const char *getarg(const char *n)
00056 {
00057        size_t l=strlen(n);
00058        struct arglist *a;
00059 
00060        for (a=arglist; a; a=a->next)
00061               if (strncmp(a->argbuf, n, l) == 0 &&
00062                   a->argbuf[l] == '=')
00063                      return (a->argbuf+l+1);
00064        return ("");
00065 }