* 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.
*/
#include <h/mh.h>
#include <h/aliasbr.h>
+#include <h/utils.h>
#include <grp.h>
#include <pwd.h>
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 *);
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. */
char *
akvalue (char *s)
{
static char *
-scanp (char *p)
+scanp (unsigned char *p)
{
while (isspace (*p))
p++;
static char *
getp (char *p)
{
- register char *cp = scanp (p);
+ register unsigned char *cp = scanp (p);
p = cp;
while (!isspace (*cp) && *cp)
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 != ';')
static char *
getalias (char *addrs)
{
- register char *pp, *qp;
+ register unsigned char *pp, *qp;
static char *cp = NULL;
if (cp == NULL)
if (*qp == ',')
*qp++ = 0;
for (cp = qp, qp--; qp > pp; qp--)
- if (*qp != 0)
+ if (*qp != 0) {
if (isspace (*qp))
*qp = 0;
else
break;
+ }
return 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;
{
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;
{
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;
}
-#ifndef MMDFMTS
struct home *
seek_home (char *name)
{
#ifdef DBMPWD
struct passwd *pw;
char lname[32];
- char *c,*c1;
+ unsigned char *c;
+ char *c1;
#else /* DBMPWD */
if (homehead == NULL)
#endif /* DBMPWD */
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
return NULL;
}
-#endif /* MMDFMTS */