int main(int argc, char *argv[]) { int c, result, target_id; key_t target_key; while ((c = getopt(argc, argv, "q:m:s:Q:M:S:vWy")) != -1) { signaled = 0; switch (c) { case 'v': rmverbose++; break; case 'y': use_sysctl = 0; break; } } optind = 1; errflg = 0; signal(SIGSYS, not_configured); while ((c = getopt(argc, argv, "q:m:s:Q:M:S:vWy")) != -1) { signaled = 0; switch (c) { case 'q': case 'm': case 's': target_id = atoi(optarg); if (c == 'q') result = msgrm(0, target_id); else if (c == 'm') result = shmrm(0, target_id); else result = semrm(0, target_id); if (result < 0) { errflg++; if (!signaled) warn("%sid(%d): ", IPC_TO_STR(toupper(c)), target_id); else warnx( "%ss are not configured " "in the running kernel", IPC_TO_STRING(toupper(c))); } break; case 'Q': case 'M': case 'S': target_key = atol(optarg); if (target_key == IPC_PRIVATE) { warnx("can't remove private %ss", IPC_TO_STRING(c)); continue; } if (c == 'Q') result = msgrm(target_key, 0); else if (c == 'M') result = shmrm(target_key, 0); else result = semrm(target_key, 0); if (result < 0) { errflg++; if (!signaled) warn("%ss(%ld): ", IPC_TO_STR(c), target_key); else warnx("%ss are not configured " "in the running kernel", IPC_TO_STRING(c)); } break; case 'v': case 'y': /* Handled in other getopt() loop */ break; case 'W': msgrm(-1, 0); shmrm(-1, 0); semrm(-1, 0); break; case ':': fprintf(stderr, "option -%c requires an argument\n", optopt); usage(); case '?': fprintf(stderr, "unrecognized option: -%c\n", optopt); usage(); } } if (optind != argc) { fprintf(stderr, "unknown argument: %s\n", argv[optind]); usage(); } exit(errflg); }
int main(int argc, char **argv) { int c, result, errflg, target_id; key_t target_key; errflg = 0; signal(SIGSYS, not_configured); while ((c = getopt(argc, argv, ":q:m:s:Q:M:S:")) != -1) { signaled = 0; switch (c) { case 'q': case 'm': case 's': target_id = atoi(optarg); if (c == 'q') result = msgrm(0, target_id); else if (c == 'm') result = shmrm(0, target_id); else result = semrm(0, target_id); if (result < 0) { errflg++; if (!signaled) warn("%sid(%d)", IPC_TO_STR(toupper(c)), target_id); else warnx("%ss are not configured in the running kernel", IPC_TO_STRING(toupper(c))); } break; case 'Q': case 'M': case 'S': target_key = atol(optarg); if (target_key == IPC_PRIVATE) { warnx("can't remove private %ss", IPC_TO_STRING(c)); continue; } if (c == 'Q') result = msgrm(target_key, 0); else if (c == 'M') result = shmrm(target_key, 0); else result = semrm(target_key, 0); if (result < 0) { errflg++; if (!signaled) warn("%s key %ld aborted", IPC_TO_STR(c), target_key); else warnx("%ss are not configured in the running kernel", IPC_TO_STRING(c)); } break; case ':': warnx("option -%c requires an argument\n", optopt); usage(); case '?': warnx("unrecognized option: -%c\n", optopt); usage(); } } if (optind != argc) { warnx("unknown argument: %s\n", argv[optind]); usage(); } exit(errflg); }
int main(int argc, char *argv[]) { int c, result, errflg, target_id; key_t target_key; setprogname(argv[0]); errflg = 0; (void)signal(SIGSYS, not_configured); while ((c = getopt(argc, argv, "q:m:s:Q:M:S:")) != -1) { signaled = 0; target_id = 0; target_key = 0; result = 0; if (optarg != NULL && strcmp(optarg, "all") == 0) { switch (c) { case 'm': case 'M': result = shmrmall(); break; case 'q': case 'Q': result = msgrmall(); break; case 's': case 'S': result = semrmall(); break; default: usage(); } } else { switch (c) { case 'q': case 'm': case 's': target_id = atoi(optarg); break; case 'Q': case 'M': case 'S': target_key = atol(optarg); if (target_key == IPC_PRIVATE) { warnx("can't remove private %ss", IPC_TO_STRING(c)); continue; } break; default: usage(); } switch (c) { case 'q': result = msgrm((key_t)0, target_id); break; case 'm': result = shmrm((key_t)0, target_id); break; case 's': result = semrm((key_t)0, target_id); break; case 'Q': result = msgrm(target_key, 0); break; case 'M': result = shmrm(target_key, 0); break; case 'S': result = semrm(target_key, 0); break; } } if (result < 0) { if (!signaled) { if (target_id) { warn("%sid(%d): ", IPC_TO_STR(toupper(c)), target_id); errflg++; } else if (target_key) { warn("%skey(%ld): ", IPC_TO_STR(c), (long)target_key); errflg++; } } else { errflg++; warnx("%ss are not configured in " "the running kernel", IPC_TO_STRING(toupper(c))); } } } if (optind != argc) { warnx("Unknown argument: %s", argv[optind]); usage(); } return errflg; }