Annotation of researchv9/cmd/id.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include <pwd.h>
                      3: #include <grp.h>
                      4: 
                      5: int getopt();
                      6: 
                      7: main (argc, argv)
                      8:        int argc;
                      9:        char **argv;
                     10: {
                     11:        int uid, gid, euid, egid, c, flags=0;
                     12:        static char stdbuf[BUFSIZ];
                     13:        char ln[64];
                     14: 
                     15:        setbuf (stdout, stdbuf);
                     16: 
                     17:        uid = getuid();
                     18:        gid = getgid();
                     19:        euid = geteuid();
                     20:        egid = getegid();
                     21:        ln[0] = '\0';
                     22:        getlogname (ln);
                     23: 
                     24:        while ((c = getopt (argc, argv, "ugUGl")) >= 0) {
                     25:                flags++;
                     26:                switch (c) {
                     27:                case 'u':
                     28:                        puid ("", euid);
                     29:                        break;
                     30:                case 'g':
                     31:                        pgid ("", egid);
                     32:                        break;
                     33:                case 'U':
                     34:                        puid ("", uid);
                     35:                        break;
                     36:                case 'G':
                     37:                        pgid ("", gid);
                     38:                        break;
                     39:                case 'l':
                     40:                        plogin ("", ln);
                     41:                        break;
                     42:                }
                     43:                putchar ('\n');
                     44:        }
                     45: 
                     46:        if (!flags) {
                     47:                puid ("uid=", uid);
                     48:                pgid (" gid=", gid);
                     49:                if (uid != euid)
                     50:                        puid (" euid=", euid);
                     51:                if (gid != egid)
                     52:                        pgid (" egid=", egid);
                     53:                plogin (" login=", ln);
                     54:                putchar ('\n');
                     55:        }
                     56:        return 0;
                     57: }
                     58: 
                     59: puid (s, id)
                     60:        char *s;
                     61:        int id;
                     62: {
                     63:        struct passwd *pw;
                     64:        struct passwd *getpwuid();
                     65: 
                     66:        printf ("%s%d", s, id);
                     67:        setpwent();
                     68:        pw = getpwuid(id);
                     69:        if (pw)
                     70:                printf ("(%s)", pw->pw_name);
                     71: }
                     72: 
                     73: pgid (s, id)
                     74:        char *s;
                     75:        int id;
                     76: {
                     77:        struct group *gr;
                     78:        struct group *getgrgid();
                     79: 
                     80:        printf ("%s%d", s, id);
                     81:        setgrent();
                     82:        gr = getgrgid(id);
                     83:        if (gr)
                     84:                printf ("(%s)", gr->gr_name);
                     85: }
                     86: 
                     87: plogin (s, l)
                     88:        char *s, *l;
                     89: {
                     90:        if (*l)
                     91:                printf ("%s%s", s, l);
                     92: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.