blob: bb03cad2ae655b9dac24661019e226454c1b895f [file] [log] [blame]
The Android Open Source Projectdd7bc332009-03-03 19:32:55 -08001#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
8static 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
19static 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
29int 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}