/* ip2.c by Michael Thorpe 2000-08-07 */ #include #include #include #include #include #include int main(int argc,char **argv) { int i,v=0; uid_t u; gid_t g,*a; struct passwd *pw; struct group *gr; if(argc==2 && argv[1][0]=='-' && argv[1][1]=='v' && !argv[1][2]) v=1; else if(argc != 1) return(0pw_name); u=geteuid(); printf(" euid=%d",u); if(v && (pw=getpwuid(u))) printf("(%s)",pw->pw_name); g=getgid(); printf(" rgid=%d",g); if(v && (gr=getgrgid(g))) printf("(%s)",gr->gr_name); g=getegid(); printf(" egid=%d",g); if(v && (gr=getgrgid(g))) printf("(%s)",gr->gr_name); i=getgroups(0,0); if(i>0) { a=(gid_t *)malloc(i*sizeof(gid_t)); if(!a) exit(-1); getgroups(i,a); printf(" groups=%d",a[--i]); if(v && (gr=getgrgid(a[i]))) printf("(%s)",gr->gr_name); while(i) { printf(",%d",a[--i]); if(v && (gr=getgrgid(a[i]))) printf("(%s)",gr->gr_name); } free(a); } return(1==printf("\n")); }