X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Faliasbr.c;h=b2e51f560cfbda2dc4241af104264f294442c5f2;hb=356f49083391bd018b6c5dfed21e59247b4cc74a;hp=19f204faa9ad177bae87a9ab5e73bd243dbc263b;hpb=6c42153ad9362cc676ea66563bf400d7511b3b68;p=mmh diff --git a/uip/aliasbr.c b/uip/aliasbr.c index 19f204f..b2e51f5 100644 --- a/uip/aliasbr.c +++ b/uip/aliasbr.c @@ -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. @@ -11,6 +9,7 @@ #include #include +#include #include #include @@ -35,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 *); @@ -46,9 +45,7 @@ static char *getalias (char *); static void add_aka (struct aka *, char *); static struct aka *akalloc (char *); static struct home *hmalloc (struct passwd *); -#ifndef MMDFMTS struct home *seek_home (char *); -#endif /* Do mh alias substitution on 's' and return the results. */ @@ -280,7 +277,7 @@ akerror (int i) static char * -scanp (char *p) +scanp (unsigned char *p) { while (isspace (*p)) p++; @@ -291,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) @@ -305,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 != ';') @@ -353,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; } @@ -399,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) @@ -418,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); @@ -437,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) @@ -475,9 +458,7 @@ add_aka (struct aka *ak, char *pp) if (!strcmp (pp, ad->ad_text)) return; - ad = (struct adr *) malloc (sizeof(*ad)); - if (ad == NULL) - return; + ad = (struct adr *) mh_xmalloc (sizeof(*ad)); ad->ad_text = getcpy (pp); ad->ad_local = strchr(pp, '@') == NULL && strchr(pp, '!') == NULL; ad->ad_next = NULL; @@ -492,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 */ } @@ -522,8 +499,7 @@ akalloc (char *id) { register struct aka *p; - if (!(p = (struct aka *) malloc (sizeof(*p)))) - return NULL; + p = (struct aka *) mh_xmalloc (sizeof(*p)); p->ak_name = getcpy (id); p->ak_visible = 0; @@ -544,8 +520,7 @@ hmalloc (struct passwd *pw) { register struct home *p; - if (!(p = (struct home *) malloc (sizeof(*p)))) - return NULL; + p = (struct home *) mh_xmalloc (sizeof(*p)); p->h_name = getcpy (pw->pw_name); p->h_uid = pw->pw_uid; @@ -564,31 +539,26 @@ hmalloc (struct passwd *pw) } -#ifndef MMDFMTS 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 (!strcasecmp (name, hp->h_name)) + 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 @@ -597,8 +567,6 @@ seek_home (char *name) *c1 = '\0'; if ((pw = getpwnam(lname))) return(hmalloc(pw)); -#endif /* DBMPWD */ - + return NULL; } -#endif /* MMDFMTS */