-
-/*
- * aliasbr.c -- new aliasing mechanism
+/* aliasbr.c -- new aliasing mechanism
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
char *
akvalue (char *s)
{
- register char *v;
+ char *v;
if (akahead == NULL)
alias (AliasFile);
char *
akresult (struct aka *ak)
{
- register char *cp = NULL, *dp, *pp;
- register struct adr *ad;
+ char *cp = NULL, *dp, *pp;
+ struct adr *ad;
for (ad = ak->ak_addr; ad; ad = ad->ad_next) {
pp = ad->ad_local ? akval (ak->ak_next, ad->ad_text)
for (; ak; ak = ak->ak_next) {
if (aleq (s, ak->ak_name)) {
return akresult (ak);
- } else if (strchr (s, ':')) {
+ }
+
+ if (strchr (s, ':')) {
/* The first address in a blind list will contain the
alias name, so try to match, but just with just the
address (not including the list name). If there's a
if (mp && mp->m_ingrp) {
char *gname = add (mp->m_gname, NULL);
+ /* FIXME: gname must be true; add() never returns NULL.
+ * Is some other test required? */
if (gname && aleq (name, ak->ak_name)) {
/* Will leak cp. */
cp = concat (gname, akresult (ak), NULL);
}
}
- return getcpy (s);
+ return mh_xstrdup(s);
}
static int
aleq (char *string, char *aliasent)
{
- register char c;
+ char c;
- while ((c = *string++))
+ while ((c = *string++)) {
if (*aliasent == '*')
return 1;
- else
- if ((c | 040) != (*aliasent | 040))
- return 0;
- else
- aliasent++;
+ if (tolower((unsigned char)c) != tolower((unsigned char)*aliasent))
+ return 0;
+ aliasent++;
+ }
return (*aliasent == 0 || *aliasent == '*');
}
alias (char *file)
{
int i;
- register char *bp, *cp, *pp;
+ char *bp, *cp, *pp;
char lc, *ap;
- register struct aka *ak = NULL;
- register FILE *fp;
+ struct aka *ak = NULL;
+ FILE *fp;
if (*file != '/'
- && (strncmp (file, "./", 2) && strncmp (file, "../", 3)))
+ && !has_prefix(file, "./") && !has_prefix(file, "../"))
file = etcpath (file);
if ((fp = fopen (file, "r")) == NULL) {
akerrst = file;
fclose (fp);
return i;
}
-
+ /* FALLTHRU */
case ':': /* comment */
case ';':
case '#':
static int
addfile (struct aka *ak, char *file)
{
- register char *cp;
+ char *cp;
char buffer[BUFSIZ];
- register FILE *fp;
+ FILE *fp;
if (!(fp = fopen (etcpath (file), "r"))) {
akerrst = file;
static int
addgroup (struct aka *ak, char *grp)
{
- register char *gp;
- register struct group *gr = getgrnam (grp);
- register struct home *hm = NULL;
+ char *gp;
+ struct group *gr = getgrnam (grp);
+ struct home *hm = NULL;
if (!gr)
gr = getgrgid (atoi (grp));
addmember (struct aka *ak, char *grp)
{
gid_t gid;
- register struct group *gr = getgrnam (grp);
- register struct home *hm = NULL;
+ struct group *gr = getgrnam (grp);
+ struct home *hm = NULL;
if (gr)
gid = gr->gr_gid;
static void
add_aka (struct aka *ak, char *pp)
{
- register struct adr *ad, *ld;
+ struct adr *ad, *ld;
for (ad = ak->ak_addr, ld = NULL; ad; ld = ad, ad = ad->ad_next)
if (!strcmp (pp, ad->ad_text))
return;
NEW(ad);
- ad->ad_text = getcpy (pp);
+ ad->ad_text = mh_xstrdup(pp);
ad->ad_local = strchr(pp, '@') == NULL && strchr(pp, '!') == NULL;
ad->ad_next = NULL;
if (ak->ak_addr)
void
init_pw (void)
{
- register struct passwd *pw;
+ struct passwd *pw;
static int init;
if (!init)
static struct aka *
akalloc (char *id)
{
- register struct aka *p;
+ struct aka *p;
NEW(p);
p->ak_name = getcpy (id);
static struct home *
hmalloc (struct passwd *pw)
{
- register struct home *p;
+ struct home *p;
NEW(p);
p->h_name = getcpy (pw->pw_name);