From d79920ed2519caaf0f4035edbb1f57ca73ed7249 Mon Sep 17 00:00:00 2001 From: markus schnalke Date: Thu, 22 Mar 2012 17:46:06 +0100 Subject: [PATCH] Removed the DBMPWD (aka. DBM) define. It was per default enabled, anyway. The explanation of this option is: For sites with a dbm-style password file (such as with Yellow Pages), MH will not read the entire passwd file into a cache. At one site that runs YP on a large passwd file, using this showed a 6:1 performance improvement. I don't like performance optimization, but if the non-cached version is faster, then we surely take that one. --- acconfig.h | 6 ------ uip/aliasbr.c | 51 ++++++++++++--------------------------------------- 2 files changed, 12 insertions(+), 45 deletions(-) diff --git a/acconfig.h b/acconfig.h index 3ab8a46..7352240 100644 --- a/acconfig.h +++ b/acconfig.h @@ -20,12 +20,6 @@ */ /* #define LOCKDIR "/usr/spool/locks" */ -/* - * Define this if your passwords are stored in some type of - * distributed name service, such as NIS, or NIS+. - */ -#define DBMPWD 1 - /***** END USER CONFIGURATION SECTION *****/ @TOP@ diff --git a/uip/aliasbr.c b/uip/aliasbr.c index baeab6f..6a68c51 100644 --- a/uip/aliasbr.c +++ b/uip/aliasbr.c @@ -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); } } -#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) @@ -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 */ } @@ -531,22 +512,15 @@ 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. @@ -561,7 +535,6 @@ seek_home(char *name) *c1 = '\0'; if ((pw = getpwnam(lname))) return(hmalloc(pw)); -#endif /* DBMPWD */ return NULL; } -- 1.7.10.4