=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/id/id.c,v retrieving revision 1.3 retrieving revision 1.4 diff -c -r1.3 -r1.4 *** src/usr.bin/id/id.c 1997/01/15 23:42:35 1.3 --- src/usr.bin/id/id.c 1997/06/30 06:22:18 1.4 *************** *** 1,4 **** ! /* $OpenBSD: id.c,v 1.3 1997/01/15 23:42:35 millert Exp $ */ /*- * Copyright (c) 1991, 1993 --- 1,4 ---- ! /* $OpenBSD: id.c,v 1.4 1997/06/30 06:22:18 deraadt Exp $ */ /*- * Copyright (c) 1991, 1993 *************** *** 41,47 **** #ifndef lint /*static char sccsid[] = "@(#)id.c 8.3 (Berkeley) 4/28/95";*/ ! static char rcsid[] = "$OpenBSD: id.c,v 1.3 1997/01/15 23:42:35 millert Exp $"; #endif /* not lint */ #include --- 41,47 ---- #ifndef lint /*static char sccsid[] = "@(#)id.c 8.3 (Berkeley) 4/28/95";*/ ! static char rcsid[] = "$OpenBSD: id.c,v 1.4 1997/06/30 06:22:18 deraadt Exp $"; #endif /* not lint */ #include *************** *** 153,159 **** struct passwd *pw; { struct group *gr; ! u_int eid, rid; char *login; if (pw) { --- 153,159 ---- struct passwd *pw; { struct group *gr; ! uid_t eid, rid; char *login; if (pw) { *************** *** 173,184 **** (void)printf("uid\t%u\n", rid); if ((eid = geteuid()) != rid) ! if (pw = getpwuid(eid)) (void)printf("euid\t%s", pw->pw_name); else (void)printf("euid\t%u", eid); if ((rid = getgid()) != (eid = getegid())) ! if (gr = getgrgid(rid)) (void)printf("rgid\t%s\n", gr->gr_name); else (void)printf("rgid\t%u\n", rid); --- 173,184 ---- (void)printf("uid\t%u\n", rid); if ((eid = geteuid()) != rid) ! if ((pw = getpwuid(eid))) (void)printf("euid\t%s", pw->pw_name); else (void)printf("euid\t%u", eid); if ((rid = getgid()) != (eid = getegid())) ! if ((gr = getgrgid(rid))) (void)printf("rgid\t%s\n", gr->gr_name); else (void)printf("rgid\t%u\n", rid); *************** *** 192,227 **** { struct group *gr; struct passwd *pw; ! int cnt, id, eid, lastid, ngroups; ! gid_t groups[NGROUPS]; char *fmt; id = getuid(); (void)printf("uid=%u", id); ! if (pw = getpwuid(id)) (void)printf("(%s)", pw->pw_name); if ((eid = geteuid()) != id) { (void)printf(" euid=%u", eid); ! if (pw = getpwuid(eid)) (void)printf("(%s)", pw->pw_name); } id = getgid(); (void)printf(" gid=%u", id); ! if (gr = getgrgid(id)) (void)printf("(%s)", gr->gr_name); if ((eid = getegid()) != id) { (void)printf(" egid=%u", eid); ! if (gr = getgrgid(eid)) (void)printf("(%s)", gr->gr_name); } ! if (ngroups = getgroups(NGROUPS, groups)) { ! for (fmt = " groups=%u", lastid = -1, cnt = 0; cnt < ngroups; ! fmt = ", %u", lastid = id) { ! id = groups[cnt++]; ! if (lastid == id) continue; ! (void)printf(fmt, id); ! if (gr = getgrgid(id)) (void)printf("(%s)", gr->gr_name); } } --- 192,228 ---- { struct group *gr; struct passwd *pw; ! int cnt, ngroups; ! uid_t id, eid; ! gid_t groups[NGROUPS], gid, lastgid; char *fmt; id = getuid(); (void)printf("uid=%u", id); ! if ((pw = getpwuid(id))) (void)printf("(%s)", pw->pw_name); if ((eid = geteuid()) != id) { (void)printf(" euid=%u", eid); ! if ((pw = getpwuid(eid))) (void)printf("(%s)", pw->pw_name); } id = getgid(); (void)printf(" gid=%u", id); ! if ((gr = getgrgid(id))) (void)printf("(%s)", gr->gr_name); if ((eid = getegid()) != id) { (void)printf(" egid=%u", eid); ! if ((gr = getgrgid(eid))) (void)printf("(%s)", gr->gr_name); } ! if ((ngroups = getgroups(NGROUPS, groups))) { ! for (fmt = " groups=%u", lastgid = (gid_t)-1, cnt = 0; cnt < ngroups; ! fmt = ", %u", lastgid = gid) { ! gid = groups[cnt++]; ! if (lastgid == gid) continue; ! (void)printf(fmt, gid); ! if ((gr = getgrgid(gid))) (void)printf("(%s)", gr->gr_name); } } *************** *** 233,245 **** register struct passwd *pw; { register struct group *gr; ! register char *fmt, **p; int cnt, id, lastid, ngroups, groups[NGROUPS + 1]; id = pw->pw_uid; (void)printf("uid=%u(%s)", id, pw->pw_name); (void)printf(" gid=%u", pw->pw_gid); ! if (gr = getgrgid(pw->pw_gid)) (void)printf("(%s)", gr->gr_name); ngroups = NGROUPS + 1; (void) getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups); --- 234,246 ---- register struct passwd *pw; { register struct group *gr; ! register char *fmt; int cnt, id, lastid, ngroups, groups[NGROUPS + 1]; id = pw->pw_uid; (void)printf("uid=%u(%s)", id, pw->pw_name); (void)printf(" gid=%u", pw->pw_gid); ! if ((gr = getgrgid(pw->pw_gid))) (void)printf("(%s)", gr->gr_name); ngroups = NGROUPS + 1; (void) getgrouplist(pw->pw_name, pw->pw_gid, groups, &ngroups); *************** *** 249,255 **** continue; (void)printf(fmt, id); fmt = " %u"; ! if (gr = getgrgid(id)) (void)printf("(%s)", gr->gr_name); lastid = id; } --- 250,256 ---- continue; (void)printf(fmt, id); fmt = " %u"; ! if ((gr = getgrgid(id))) (void)printf("(%s)", gr->gr_name); lastid = id; } *************** *** 278,284 **** if (lastid == (id = groups[cnt])) continue; if (nflag) { ! if (gr = getgrgid(id)) (void)printf(fmt, gr->gr_name); else (void)printf(*fmt == ' ' ? " %u" : "%u", --- 279,285 ---- if (lastid == (id = groups[cnt])) continue; if (nflag) { ! if ((gr = getgrgid(id))) (void)printf(fmt, gr->gr_name); else (void)printf(*fmt == ' ' ? " %u" : "%u", *************** *** 298,313 **** char *u; { struct passwd *pw; ! long id; char *ep; /* * Translate user argument into a pw pointer. First, try to * get it as specified. If that fails, try it as a number. */ ! if (pw = getpwnam(u)) return(pw); ! id = strtol(u, &ep, 10); if (*u && !*ep && (pw = getpwuid(id))) return(pw); err("%s: No such user", u); --- 299,314 ---- char *u; { struct passwd *pw; ! uid_t id; char *ep; /* * Translate user argument into a pw pointer. First, try to * get it as specified. If that fails, try it as a number. */ ! if ((pw = getpwnam(u))) return(pw); ! id = strtoul(u, &ep, 10); if (*u && !*ep && (pw = getpwuid(id))) return(pw); err("%s: No such user", u);