- const char *p;
-
- if (argc >= 3 && !strcmp((p= strrchr(argv[0],'/')) ? ++p : argv[0], "with-lock")) {
- mode= 'f';
- } else if (argc < 3 || argv[1][0] != '-' || argv[1][2] ||
- ((mode= argv[1][1]) != 'w' && mode != 'q' && mode != 'f'
- && mode != 'l') ||
- (mode != 'l' && argc < 4) ||
- (mode == 'l' && argc != 3)) {
- fputs("usage: with-lock-ex -w|-q|-f <lockfile> <command> <args>...\n"
- " with-lock-ex -l <lockfile>\n"
- " with-lock <lockfile> <command> <args>...\n",
- stderr);
- exit(255);
- } else {
- argv++; argc--;
+
+ mode= 'x';
+ while ((c= getopt(argc,argv,"+wfqlt:")) != -1) {
+ switch(c) {
+ case 'l':
+ case 'w':
+ case 'f':
+ case 'q':
+ if (mode != 'x') badusage();
+ mode= c;
+ break;
+ default:
+ badusage();
+ }