+ gid_is_set = 1;
+ break;
+
+ case 'v':
+ if (!isdigit(optarg[0])) {
+ struct passwd *pw = getpwnam(optarg);
+ if (pw == NULL) {
+ fprintf(stderr, "parameter '%s' bad\n",
+ optarg);
+ Usage_and_abort(name);
+ }
+ euid = pw->pw_uid;
+ } else {
+ euid = (uid_t)atoi(optarg);
+ }
+ euid_is_set = 1;
+ break;
+
+ case 'j':
+ if (!isdigit(optarg[0])) {
+ struct group *gr = getgrnam(optarg);
+ if (gr == NULL) {
+ fprintf(stderr, "getgrname %s failed\n",
+ optarg);
+ Usage_and_abort(name);
+ }
+ egid = gr->gr_gid;
+ } else {
+ egid = (gid_t)atoi(optarg);
+ }
+ egid_is_set = 1;
+ break;
+
+ case 'G':
+ num_supp = 0;
+ if (optarg == NULL || !isdigit(optarg[0]))
+ break;
+ while ((grp = strsep(&optarg, ",")) != NULL) {
+ printf("adding supp group %d\n", atoi(grp));
+ supp_groups[num_supp++] = atoi(grp);
+ if (num_supp >= NGROUPS_MAX)
+ break;
+ }
+ break;