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