|
|
1.1 ! root 1: #ifndef lint ! 2: static char *sccsid = "@(#)lock.c 4.3 (Berkeley) 6/10/83"; ! 3: #endif ! 4: ! 5: /* ! 6: * Lock a terminal up until the knowledgeable Joe returns. ! 7: */ ! 8: #include <stdio.h> ! 9: #include <sys/types.h> ! 10: #include <sys/stat.h> ! 11: #include <signal.h> ! 12: #include <sgtty.h> ! 13: ! 14: char masterp[] = "hasta la vista\n"; ! 15: struct sgttyb tty, ntty; ! 16: char s[BUFSIZ], s1[BUFSIZ]; ! 17: ! 18: main(argc, argv) ! 19: char **argv; ! 20: { ! 21: register int t; ! 22: struct stat statb; ! 23: ! 24: signal(SIGINT, SIG_IGN); ! 25: signal(SIGQUIT, SIG_IGN); ! 26: signal(SIGTSTP, SIG_IGN); ! 27: if (argc > 0) ! 28: argv[0] = 0; ! 29: if (ioctl(0, TIOCGETP, &tty)) ! 30: exit(1); ! 31: ntty = tty; ntty.sg_flags &= ~ECHO; ! 32: ioctl(0, TIOCSETN, &ntty); ! 33: printf("Key: "); ! 34: fgets(s, sizeof s, stdin); ! 35: printf("\nAgain: "); ! 36: fgets(s1, sizeof s1, stdin); ! 37: putchar('\n'); ! 38: if (strcmp(s1, s)) { ! 39: putchar(07); ! 40: stty(0, &tty); ! 41: exit(1); ! 42: } ! 43: s[0] = 0; ! 44: for (;;) { ! 45: fgets(s, sizeof s, stdin); ! 46: if (strcmp(s1, s) == 0) ! 47: break; ! 48: if (strcmp(s, masterp) == 0) ! 49: break; ! 50: putchar(07); ! 51: if (ioctl(0, TIOCGETP, &ntty)) ! 52: exit(1); ! 53: } ! 54: ioctl(0, TIOCSETN, &tty); ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.