Annotation of coherent/b/bin/id.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #include <pwd.h>
                      3: #include <grp.h>
                      4: 
                      5: main()
                      6: {
                      7:        register struct passwd  *pstp;
                      8:        register struct group   *psgr;
                      9:        int                     ruid,   /* real user id */
                     10:                                rgid,   /* real group id */
                     11:                                euid,   /* effective user id */
                     12:                                egid;   /* effetcive group id */
                     13: 
                     14: 
                     15:        ruid = getuid();
                     16:        rgid = getgid();
                     17:        euid = geteuid();
                     18:        egid = getegid();
                     19:        
                     20:        if ((pstp = getpwuid(ruid)) == NULL) {
                     21:                perror("id");
                     22:                exit(1);
                     23:        }
                     24:        if ((psgr = getgrgid(rgid)) == NULL) {
                     25:                perror("id");
                     26:                exit(1);
                     27:        }
                     28:        printf("uid=%d(%s) gid=%d(%s)", ruid, pstp->pw_name, 
                     29:                                                        rgid, psgr->gr_name);
                     30:        if (ruid != euid) {
                     31:                if ((pstp = getpwuid(euid)) == NULL) {
                     32:                        perror("id");
                     33:                        exit(1);
                     34:                }
                     35:                if ((psgr = getgrgid(rgid)) == NULL) {
                     36:                        perror("id");
                     37:                        exit(1);
                     38:                }
                     39:                printf(" euid=%d(%s) egid=%d(%s)\n", 
                     40:                                euid, pstp->pw_name, egid, psgr->gr_name);
                     41:        } else
                     42:                putchar('\n');
                     43: } 

unix.superglobalmegacorp.com

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