#include <h/utils.h>
#include <grp.h>
#include <pwd.h>
+#include <ctype.h>
static int akvis;
static char *akerrst;
char *
akvalue(char *s)
{
- register char *v;
+ char *v;
akvis = -1;
v = akval(akahead, s);
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)
- : getcpy(ad->ad_text);
+ : mh_xstrdup(ad->ad_text);
if (cp) {
dp = cp;
cp = concat(cp, ",", pp, NULL);
- free(dp);
- free(pp);
+ mh_free0(&dp);
+ mh_free0(&pp);
} else
cp = pp;
}
if (aleq(s, ak->ak_name))
return akresult(ak);
- return getcpy(s);
+ return mh_xstrdup(s);
}
static int
aleq(char *string, char *aliasent)
{
- register char c;
+ char c;
while ((c = *string++))
if (*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 ((fp = fopen(file, "r")) == NULL) {
akerrst = file;
static char *
getp(char *p)
{
- register unsigned char *cp = scanp(p);
+ unsigned char *cp = scanp(p);
p = cp;
while (!isspace(*cp) && *cp)
static char *
seekp(char *p, char *c, char **a)
{
- register unsigned char *cp;
+ unsigned char *cp;
p = cp = scanp(p);
while (!isspace(*cp) && *cp && *cp != ':' && *cp != ';')
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 char *
getalias(char *addrs)
{
- register unsigned char *pp, *qp;
+ unsigned char *pp, *qp;
static char *cp = NULL;
if (cp == NULL)
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)==0)
return;
- ad = (struct adr *) mh_xmalloc(sizeof(*ad));
- ad->ad_text = getcpy(pp);
+ ad = mh_xcalloc(1, sizeof(*ad));
+ ad->ad_text = mh_xstrdup(pp);
ad->ad_local = 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 = 0;
if (!init) {
static struct aka *
akalloc(char *id)
{
- register struct aka *p;
+ struct aka *p;
- p = (struct aka *) mh_xmalloc(sizeof(*p));
+ p = mh_xcalloc(1, sizeof(*p));
- p->ak_name = getcpy(id);
+ p->ak_name = mh_xstrdup(id);
p->ak_visible = 0;
p->ak_addr = NULL;
p->ak_next = NULL;
static struct home *
hmalloc(struct passwd *pw)
{
- register struct home *p;
+ struct home *p;
- p = (struct home *) mh_xmalloc(sizeof(*p));
+ p = mh_xcalloc(1, sizeof(*p));
- p->h_name = getcpy(pw->pw_name);
+ p->h_name = mh_xstrdup(pw->pw_name);
p->h_uid = pw->pw_uid;
p->h_gid = pw->pw_gid;
- p->h_home = getcpy(pw->pw_dir);
- p->h_shell = getcpy(pw->pw_shell);
+ p->h_home = mh_xstrdup(pw->pw_dir);
+ p->h_shell = mh_xstrdup(pw->pw_shell);
p->h_ngrps = 0;
p->h_next = NULL;
/* append to end */
struct home *
seek_home(char *name)
{
- register struct home *hp;
+ struct home *hp;
struct passwd *pw;
char lname[32];
unsigned char *c;