|
|
researchv9-SUN3(old)
#include <stdio.h>
#include <pwd.h>
#include <grp.h>
int getopt();
main (argc, argv)
int argc;
char **argv;
{
int uid, gid, euid, egid, c, flags=0;
static char stdbuf[BUFSIZ];
char ln[64];
setbuf (stdout, stdbuf);
uid = getuid();
gid = getgid();
euid = geteuid();
egid = getegid();
ln[0] = '\0';
getlogname (ln);
while ((c = getopt (argc, argv, "ugUGl")) >= 0) {
flags++;
switch (c) {
case 'u':
puid ("", euid);
break;
case 'g':
pgid ("", egid);
break;
case 'U':
puid ("", uid);
break;
case 'G':
pgid ("", gid);
break;
case 'l':
plogin ("", ln);
break;
}
putchar ('\n');
}
if (!flags) {
puid ("uid=", uid);
pgid (" gid=", gid);
if (uid != euid)
puid (" euid=", euid);
if (gid != egid)
pgid (" egid=", egid);
plogin (" login=", ln);
putchar ('\n');
}
return 0;
}
puid (s, id)
char *s;
int id;
{
struct passwd *pw;
struct passwd *getpwuid();
printf ("%s%d", s, id);
setpwent();
pw = getpwuid(id);
if (pw)
printf ("(%s)", pw->pw_name);
}
pgid (s, id)
char *s;
int id;
{
struct group *gr;
struct group *getgrgid();
printf ("%s%d", s, id);
setgrent();
gr = getgrgid(id);
if (gr)
printf ("(%s)", gr->gr_name);
}
plogin (s, l)
char *s, *l;
{
if (*l)
printf ("%s%s", s, l);
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.