Fixed explanation of why the unset SHELL test is uselessif /bin/sh is bash.
[mmh] / uip / aliasbr.c
index af3827b..b2e51f5 100644 (file)
@@ -2,8 +2,6 @@
 /*
  * aliasbr.c -- new aliasing mechanism
  *
- * $Id$
- *
  * This code is Copyright (c) 2002, by the authors of nmh.  See the
  * COPYRIGHT file in the root directory of the nmh distribution for
  * complete copyright information.
@@ -36,7 +34,7 @@ char *akerror (int);
 
 static  char *akval (struct aka *, char *);
 static int aleq (char *, char *);
-static char *scanp (char *);
+static char *scanp (unsigned char *);
 static char *getp (char *);
 static char *seekp (char *, char *, char **);
 static int addfile (struct aka *, char *);
@@ -279,7 +277,7 @@ akerror (int i)
 
 
 static char *
-scanp (char *p)
+scanp (unsigned char *p)
 {
     while (isspace (*p))
        p++;
@@ -290,7 +288,7 @@ scanp (char *p)
 static char *
 getp (char *p)
 {
-    register char  *cp = scanp (p);
+    register unsigned char  *cp = scanp (p);
 
     p = cp;
     while (!isspace (*cp) && *cp)
@@ -304,7 +302,7 @@ getp (char *p)
 static char *
 seekp (char *p, char *c, char **a)
 {
-    register char *cp;
+    register unsigned char *cp;
 
     p = cp = scanp (p);
     while (!isspace (*cp) && *cp && *cp != ':' && *cp != ';')
@@ -352,29 +350,20 @@ 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)) {
                add_aka (ak, hm->h_name);
                break;
            }
-#ifdef DBMPWD
         if ((pw = getpwnam(gp)))
        {
                hmalloc(pw);
                add_aka (ak, gp);
        }
     }
-#endif /* DBMPWD */
 
     return 1;
 }
@@ -398,10 +387,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)
@@ -417,15 +403,13 @@ addall (struct aka *ak)
     int noshell = NoShell == NULL || *NoShell == 0;
     register struct home *hm;
 
-#ifndef DBMPWD
-    if (homehead == NULL)
-#endif /* DBMPWD */
-       init_pw ();
+    init_pw ();
+
     if (Everyone < 0)
        Everyone = EVERYONE;
 
     for (hm = homehead; hm; hm = hm->h_next)
-       if (hm->h_uid > Everyone
+        if ((int) hm->h_uid > Everyone
                && (noshell || strcmp (hm->h_shell, NoShell)))
            add_aka (ak, hm->h_name);
 
@@ -436,7 +420,7 @@ addall (struct aka *ak)
 static char *
 getalias (char *addrs)
 {
-    register char *pp, *qp;
+    register unsigned char *pp, *qp;
     static char *cp = NULL;
 
     if (cp == NULL)
@@ -489,28 +473,24 @@ void
 init_pw (void)
 {
     register struct passwd  *pw;
-#ifdef DBMPWD
     static int init;
   
     if (!init)
     {
-          /* if the list has yet to be initialized */
-           /* zap the list, and rebuild from scratch */
-           homehead=NULL;
-           hometail=NULL;
-           init++;
-#endif /* DBMPWD */
+       /* if the list has yet to be initialized */
+       /* zap the list, and rebuild from scratch */
+       homehead=NULL;
+       hometail=NULL;
+       init++;
 
-    setpwent ();
+       setpwent ();
 
-    while ((pw = getpwent ()))
-       if (!hmalloc (pw))
-           break;
+       while ((pw = getpwent ()))
+           if (!hmalloc (pw))
+               break;
 
-    endpwent ();
-#ifdef DBMPWD
+       endpwent ();
     }
-#endif /* DBMPWD */
 }
 
 
@@ -563,26 +543,22 @@ struct home *
 seek_home (char *name)
 {
     register struct home *hp;
-#ifdef DBMPWD
     struct passwd *pw;
     char lname[32];
-    char *c,*c1;
-#else  /* DBMPWD */
-
-    if (homehead == NULL)
-       init_pw ();
-#endif /* DBMPWD */
+    unsigned char *c;
+    char *c1;
 
     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); c++, c1++) {
+    for (c = name, c1 = lname;
+         *c && (c1 - lname < (int) sizeof(lname) - 1);
+         c++, c1++) {
         if (isalpha(*c) && isupper(*c))
            *c1 = tolower (*c);
        else
@@ -591,7 +567,6 @@ seek_home (char *name)
     *c1 = '\0';
     if ((pw = getpwnam(lname)))
        return(hmalloc(pw));
-#endif /* DBMPWD */
-       
+
     return NULL;
 }