#include #include #include #include int main (int argc, char *argv[]) { int ret = -1; if (argc != 2){ fprintf (stderr,"user2group user\n"); }else{ const char *user = argv[1]; struct passwd *p = getpwnam (user); if (p == NULL){ fprintf (stderr,"user %s does not exist\n",user); }else{ struct group *g; bool once = false; while ((g=getgrent())!=NULL){ for (int i=0; g->gr_mem[i] != NULL; i++){ if (strcmp(user,g->gr_mem[i])==0){ if (once){ printf (" "); } once = true; printf ("%s",g->gr_name); break; } } } printf ("\n"); ret = 0; } } return ret; }