Renamed -version switch to -Version to remove the conflict with -verbose.
[mmh] / uip / aliasbr.c
index 073b1b2..8b32826 100644 (file)
@@ -31,7 +31,7 @@ char *akresult(struct aka *);
 char *akvalue(char *);
 char *akerror(int);
 
-static  char *akval(struct aka *, char *);
+static char *akval(struct aka *, char *);
 static int aleq(char *, char *);
 static char *scanp(unsigned char *);
 static char *getp(char *);
@@ -281,7 +281,7 @@ scanp(unsigned char *p)
 static char *
 getp(char *p)
 {
-       register unsigned char  *cp = scanp(p);
+       register unsigned char *cp = scanp(p);
 
        p = cp;
        while (!isspace(*cp) && *cp)
@@ -343,28 +343,19 @@ addgroup(struct aka *ak, char *grp)
                return 0;
        }
 
-#ifndef DBMPWD
-       if (homehead == NULL)
-               init_pw();
-#endif /* DBMPWD */
-
        while ((gp = *gr->gr_mem++))
-#ifdef DBMPWD
        {
                struct passwd *pw;
-#endif /* DBMPWD */
                for (hm = homehead; hm; hm = hm->h_next)
                        if (strcmp(hm->h_name, gp)==0) {
                                add_aka(ak, hm->h_name);
                                break;
                        }
-#ifdef DBMPWD
                if ((pw = getpwnam(gp))) {
-                               hmalloc(pw);
-                               add_aka(ak, gp);
+                       hmalloc(pw);
+                       add_aka(ak, gp);
                }
        }
-#endif /* DBMPWD */
 
        return 1;
 }
@@ -388,10 +379,7 @@ addmember(struct aka *ak, char *grp)
                return 0;
        }
 
-#ifndef DBMPWD
-       if (homehead == NULL)
-#endif /* DBMPWD */
-               init_pw();
+       init_pw();
 
        for (hm = homehead; hm; hm = hm->h_next)
                if (hm->h_gid == gid)
@@ -444,7 +432,7 @@ add_aka(struct aka *ak, char *pp)
 
        ad = (struct adr *) mh_xmalloc(sizeof(*ad));
        ad->ad_text = getcpy(pp);
-       ad->ad_local = strchr(pp, '@') == NULL && strchr(pp, '!') == NULL;
+       ad->ad_local = strchr(pp, '@') == NULL;
        ad->ad_next = NULL;
        if (ak->ak_addr)
                ld->ad_next = ad;
@@ -456,28 +444,21 @@ add_aka(struct aka *ak, char *pp)
 void
 init_pw(void)
 {
-       register struct passwd  *pw;
-#ifdef DBMPWD
-       static int init;
+       register struct passwd *pw;
+       static int init = 0;
 
        if (!init) {
-               /* if the list has yet to be initialized */
-               /* zap the list, and rebuild from scratch */
-               homehead=NULL;
-               hometail=NULL;
-               init++;
-#endif /* DBMPWD */
-
+               /* read the passwd database and build a list */
                setpwent();
-
-               while ((pw = getpwent()))
-                       if (!hmalloc(pw))
+               while ((pw = getpwent())) {
+                       if (!hmalloc(pw)) {
                                break;
-
+                       }
+               }
                endpwent();
-#ifdef DBMPWD
+
+               init++;  /* now we're initialized */
        }
-#endif /* DBMPWD */
 }
 
 
@@ -516,10 +497,11 @@ hmalloc(struct passwd *pw)
        p->h_shell = getcpy(pw->pw_shell);
        p->h_ngrps = 0;
        p->h_next = NULL;
-       if (hometail != NULL)
-               hometail->h_next = p;
-       if (homehead == NULL)
+       /* append to end */
+       if (!homehead)
                homehead = p;
+       if (hometail)
+               hometail->h_next = p;
        hometail = p;
 
        return p;
@@ -530,27 +512,20 @@ struct home *
 seek_home(char *name)
 {
        register struct home *hp;
-#ifdef DBMPWD
        struct passwd *pw;
        char lname[32];
        unsigned char *c;
        char *c1;
-#else  /* DBMPWD */
-
-       if (homehead == NULL)
-               init_pw();
-#endif /* DBMPWD */
 
        for (hp = homehead; hp; hp = hp->h_next)
                if (!mh_strcasecmp(name, hp->h_name))
                        return hp;
 
-#ifdef DBMPWD
        /*
        ** The only place where there might be problems.
        ** This assumes that ALL usernames are kept in lowercase.
        */
-       for (c = name, c1 = lname; *c && (c1 - lname < sizeof(lname) - 1);
+       for (c = name, c1 = lname; *c && (c1 - lname < (int)sizeof(lname) - 1);
                        c++, c1++) {
                if (isalpha(*c) && isupper(*c))
                        *c1 = tolower(*c);
@@ -560,7 +535,6 @@ seek_home(char *name)
        *c1 = '\0';
        if ((pw = getpwnam(lname)))
                return(hmalloc(pw));
-#endif /* DBMPWD */
 
        return NULL;
 }