+ nexttime = timval.tv_sec + (sectimeout * 60);
+ timp = localtime(&timval.tv_sec);
+ ap = asctime(timp);
+ tzn = timp->tm_zone;
+
+ (void)signal(SIGINT, quit);
+ (void)signal(SIGQUIT, quit);
+ ntty = tty; ntty.sg_flags &= ~ECHO;
+ (void)ioctl(0, TIOCSETP, &ntty);
+
+ if (!use_mine) {
+ /* get key and check again */
+ fputs("Key: ", stdout);
+ if (!gets(s, sizeof(s)))
+ quit();
+ fputs("\nAgain: ", stdout);
+ /*
+ * Don't need EOF test here, if we get EOF, then s1 != s
+ * and the right things will happen.
+ */
+ (void)gets(s1, sizeof(s1));
+ putchar('\n');
+ if (strcmp(s1, s)) {
+ puts("\07lock: passwords didn't match.");
+ ioctl(0, TIOCSETP, &tty);
+ exit(1);
+ }
+ s[0] = NULL;
+ }
+
+ /* set signal handlers */
+ (void)signal(SIGINT, hi);
+ (void)signal(SIGQUIT, hi);
+ (void)signal(SIGTSTP, hi);
+ (void)signal(SIGALRM, bye);
+
+ ntimer.it_interval = zerotime;
+ ntimer.it_value = timeout;
+ setitimer(ITIMER_REAL, &ntimer, &otimer);
+
+ /* header info */
+ printf ("lock: %s on %s. timeout in %d minutes\ntime now is %.20s%s%s",
+ ttynam, hostname, sectimeout, ap, tzn, ap + 19);
+
+ /* wait */
+ root_pwd = getpwuid(0);
+ if (use_mine)
+ my_pwd = getpwuid(getuid());