Home | History | Annotate | Download | only in toolbox
      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <unistd.h>
      4 #include <sys/types.h>
      5 #include <pwd.h>
      6 #include <grp.h>
      7 
      8 static void print_uid(uid_t uid)
      9 {
     10     struct passwd *pw = getpwuid(uid);
     11 
     12     if (pw) {
     13         printf("%d(%s)", uid, pw->pw_name);
     14     } else {
     15         printf("%d",uid);
     16     }
     17 }
     18 
     19 static void print_gid(gid_t gid)
     20 {
     21     struct group *gr = getgrgid(gid);
     22     if (gr) {
     23         printf("%d(%s)", gid, gr->gr_name);
     24     } else {
     25         printf("%d",gid);
     26     }
     27 }
     28 
     29 int id_main(int argc, char **argv)
     30 {
     31     gid_t list[64];
     32     int n, max;
     33 
     34     max = getgroups(64, list);
     35     if (max < 0) max = 0;
     36 
     37     printf("uid=");
     38     print_uid(getuid());
     39     printf(" gid=");
     40     print_gid(getgid());
     41     if (max) {
     42         printf(" groups=");
     43         print_gid(list[0]);
     44         for(n = 1; n < max; n++) {
     45             printf(",");
     46             print_gid(list[n]);
     47         }
     48     }
     49     printf("\n");
     50     return 0;
     51 }
     52