|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)learn.c 4.4 (Berkeley) 5/15/86";
3: #endif not lint
4:
5: #include "stdio.h"
6: #include "lrnref.h"
7: #include "signal.h"
8:
9: char *direct = "/usr/lib/learn"; /* CHANGE THIS ON YOUR SYSTEM */
10: int more;
11: char *level;
12: int speed;
13: char *sname;
14: char *todo;
15: FILE *incopy = NULL;
16: int didok;
17: int sequence = 1;
18: int comfile = -1;
19: int status;
20: int wrong;
21: char *pwline;
22: char *dir;
23: FILE *scrin;
24: int logging = 1; /* set to 0 to turn off logging */
25: int ask;
26: int again;
27: int skip;
28: int teed;
29: int total;
30:
31: main(argc,argv)
32: int argc;
33: char *argv[];
34: {
35: extern hangup(), intrpt();
36: extern char * getlogin(), *malloc();
37:
38: speed = 0;
39: more = 1;
40: pwline = getlogin();
41: #ifndef BSD4_2
42: setbuf(stdout, malloc(BUFSIZ));
43: setbuf(stderr, malloc(BUFSIZ));
44: #endif
45: selsub(argc, argv);
46: chgenv();
47: signal(SIGHUP, hangup);
48: signal(SIGINT, intrpt);
49: while (more) {
50: selunit();
51: dounit();
52: whatnow();
53: }
54: wrapup(0);
55: }
56:
57: hangup()
58: {
59: wrapup(1);
60: }
61:
62: intrpt()
63: {
64: char response[20], *p;
65:
66: signal(SIGINT, hangup);
67: write(2, "\nInterrupt.\nWant to go on? ", 28);
68: p = response;
69: *p = 'n';
70: while (read(0, p, 1) == 1 && *p != '\n')
71: p++;
72: if (response[0] != 'y')
73: wrapup(0);
74: ungetc('\n', stdin);
75: signal(SIGINT, intrpt);
76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.