version 1.3, 1996/08/07 17:49:49 |
version 1.4, 1996/08/30 11:39:36 |
|
|
register char *p, *t; |
register char *p, *t; |
struct stat sb; |
struct stat sb; |
extern int errno; |
extern int errno; |
char *bp, name[1024]; |
char *mbp, *bp, *name; |
|
int len; |
|
|
pn->realname = pn->office = pn->officephone = pn->homephone = NULL; |
pn->realname = pn->office = pn->officephone = pn->homephone = NULL; |
|
|
|
|
pn->shell = strdup(pw->pw_shell); |
pn->shell = strdup(pw->pw_shell); |
|
|
/* why do we skip asterisks!?!? */ |
/* why do we skip asterisks!?!? */ |
(void)strcpy(bp = tbuf, pw->pw_gecos); |
mbp = bp = (char *)malloc(strlen(pw->pw_gecos)+1); |
|
strcpy(bp, pw->pw_gecos); |
if (*bp == '*') |
if (*bp == '*') |
++bp; |
++bp; |
|
|
/* ampersands get replaced by the login name */ |
/* ampersands get replaced by the login name */ |
if (!(p = strsep(&bp, ","))) |
if (!(p = strsep(&bp, ","))) { |
|
free(mbp); |
return; |
return; |
for (t = name; *t = *p; ++p) |
} |
|
for (len = 0, t = p; *p; ++p) { |
|
len++; |
|
if (*p == '&') |
|
len += strlen(pw->pw_name); |
|
} |
|
name = (char *)malloc(len + 1); |
|
for (p = t, t = name; *t = *p; ++p) |
if (*t == '&') { |
if (*t == '&') { |
(void)strcpy(t, pw->pw_name); |
(void)strcpy(t, pw->pw_name); |
if (islower(*t)) |
if (islower(*t)) |
*t = toupper(*t); |
*t = toupper(*t); |
while (*++t); |
while (*++t); |
} |
} else |
else |
|
++t; |
++t; |
|
*t = '\0'; |
pn->realname = strdup(name); |
pn->realname = strdup(name); |
pn->office = ((p = strsep(&bp, ",")) && *p) ? |
pn->office = ((p = strsep(&bp, ",")) && *p) ? |
strdup(p) : NULL; |
strdup(p) : NULL; |
|
|
if (errno != ENOENT) { |
if (errno != ENOENT) { |
(void)fprintf(stderr, |
(void)fprintf(stderr, |
"finger: %s: %s\n", tbuf, strerror(errno)); |
"finger: %s: %s\n", tbuf, strerror(errno)); |
|
free(name); |
|
free(mbp); |
return; |
return; |
} |
} |
} else if (sb.st_size != 0) { |
} else if (sb.st_size != 0) { |
pn->mailrecv = sb.st_mtime; |
pn->mailrecv = sb.st_mtime; |
pn->mailread = sb.st_atime; |
pn->mailread = sb.st_atime; |
} |
} |
|
free(name); |
|
free(mbp); |
} |
} |
|
|
match(pw, user) |
match(pw, user) |