int main(int argc, char *argv[]) { int ngroups; gid_t mygid, gidset[NGROUPS]; int i, ch, gflag = 0, uflag = 0, errflag = 0; while ((ch = getopt(argc, argv, "f:ghlrquv")) != -1) { switch(ch) { case 'f': filename = optarg; break; case 'g': gflag++; break; case 'h': hflag++; break; case 'l': lflag++; break; case 'q': qflag++; break; case 'r': rflag++; break; case 'u': uflag++; break; case 'v': vflag++; break; default: usage(); } } argc -= optind; argv += optind; if (!uflag && !gflag) uflag++; if (argc == 0) { if (uflag) errflag += showuid(getuid()); if (gflag) { mygid = getgid(); ngroups = getgroups(NGROUPS, gidset); if (ngroups < 0) err(1, "getgroups"); errflag += showgid(mygid); for (i = 0; i < ngroups; i++) if (gidset[i] != mygid) errflag += showgid(gidset[i]); } return(errflag); } if (uflag && gflag) usage(); if (uflag) { for (; argc > 0; argc--, argv++) { if (alldigits(*argv)) errflag += showuid(atoi(*argv)); else errflag += showusrname(*argv); } return(errflag); } if (gflag) { for (; argc > 0; argc--, argv++) { if (alldigits(*argv)) errflag += showgid(atoi(*argv)); else errflag += showgrpname(*argv); } } return(errflag); }
int main(int argc, char *argv[]) { int ngroups; gid_t mygid, gidset[NGROUPS]; int i, gflag = 0, uflag = 0; int ch; extern char *optarg; extern int optind; while ((ch = getopt(argc, argv, "ugvq")) != -1) { switch(ch) { case 'g': gflag++; break; case 'u': uflag++; break; case 'v': vflag++; break; case 'q': qflag++; break; default: usage(); } } argc -= optind; argv += optind; if (!uflag && !gflag) uflag++; if (argc == 0) { if (uflag) showuid(getuid()); if (gflag) { mygid = getgid(); ngroups = getgroups(NGROUPS, gidset); if (ngroups < 0) err(1, "getgroups"); showgid(mygid); for (i = 0; i < ngroups; i++) if (gidset[i] != mygid) showgid(gidset[i]); } exit(0); } if (uflag && gflag) usage(); if (uflag) { for (; argc > 0; argc--, argv++) { if (alldigits(*argv)) showuid(atoi(*argv)); else showusrname(*argv); } exit(0); } if (gflag) { for (; argc > 0; argc--, argv++) { if (alldigits(*argv)) showgid(atoi(*argv)); else showgrpname(*argv); } exit(0); } /* NOTREACHED */ exit(1); }