- struct passwd *root_pwd, *my_pwd;
- struct timeval timval;
- struct itimerval ntimer, otimer;
- struct tm *timp;
- int sectimeout = TIMEOUT,
- use_mine;
- char *ttynam, *ap, *tzn,
- hostname[MAXHOSTNAMELEN], s[BUFSIZ], s1[BUFSIZ],
- *crypt(), *index(), *ttyname();
-
- use_mine = NO;
- for (++argv; *argv; ++argv) {
- if (argv[0][0] != '-')
- usage();
- if (argv[0][1] == 'p')
- use_mine = YES;
- else if (!isdigit(argv[0][1])) {
- fprintf(stderr, "lock: illegal option -- %c\n", argv[0][1]);
- usage();
- }
- else if ((sectimeout = atoi(*argv + 1)) <= 0)
- usage();
+ extern char *optarg;
+ extern int optind;
+ struct passwd *root_pwd, *my_pwd;
+ struct timeval timval;
+ struct itimerval ntimer, otimer;
+ struct tm *timp;
+ int ch, sectimeout, use_mine;
+ char *ttynam, *ap, *tzn;
+ char hostname[MAXHOSTNAMELEN], s[BUFSIZ], s1[BUFSIZ];
+ char *crypt(), *index(), *ttyname();
+
+ use_mine = 0;
+ sectimeout = TIMEOUT;
+ while ((ch = getopt(argc, argv, "pt:")) != EOF)
+ switch((char)ch) {
+ case 't':
+ if ((sectimeout = atoi(optarg)) <= 0)
+ exit(0);
+ break;
+ case 'p':
+ use_mine = 1;
+ break;
+ case '?':
+ default:
+ fputs("usage: lock [-p] [-t timeout]\n", stderr);
+ exit(1);