1: #ifndef lint
2: static char sccsid[] = "@(#)dounit.c 4.2 (Berkeley) 4/25/83";
3: #endif not lint
4:
5: #include "stdio.h"
6: #include "lrnref.h"
7:
8: int remind = 2; /* to remind user of "again" and "bye" */
9: extern int noclobber;
10:
11: dounit()
12: {
13: char tbuff[100];
14:
15: if (todo == 0)
16: return;
17: wrong = 0;
18: retry:
19: if (!noclobber)
20: start(todo); /* clean up play directory */
21: sprintf(tbuff, "%s/%s/L%s", direct, sname, todo); /* script = lesson */
22: scrin = fopen(tbuff, "r");
23: if (scrin == NULL) {
24: perror(tbuff);
25: fprintf(stderr, "Dounit: no lesson %s.\n", tbuff);
26: wrapup(1);
27: }
28:
29: copy(0, scrin); /* print lesson, usually */
30: if (more == 0)
31: return;
32: copy(1, stdin); /* user takes over */
33: if (skip)
34: setdid(todo, sequence++);
35: if (again || skip) /* if "again" or "skip" */
36: return;
37: if (more == 0)
38: return;
39: copy(0, scrin); /* evaluate user's response */
40:
41: if (comfile >= 0)
42: close(comfile);
43: wait(&didok);
44: didok = (status == 0);
45: if (!didok) {
46: wrong++;
47: printf("\nSorry, that's %snot right. Do you want to try again? ",
48: wrong > 1 ? "still " : "");
49: fflush(stdout);
50: for(;;) {
51: gets(tbuff);
52: if (tbuff[0] == 'y') {
53: printf("Try the problem again.\n");
54: if (remind--) {
55: printf("[ Whenever you want to re-read the lesson, type \"again\".\n");
56: printf(" You can always leave learn by typing \"bye\". ]\n");
57: }
58: goto retry;
59: } else if (strcmp(tbuff, "bye") == 0) {
60: wrapup(0);
61: } else if (tbuff[0] == 'n') {
62: wrong = 0;
63: printf("\nOK. That was lesson %s.\n", todo);
64: printf("Skipping to next lesson.\n\n");
65: fflush(stdout);
66: break;
67: } else {
68: printf("Please type yes, no or bye: ");
69: fflush(stdout);
70: }
71: }
72: }
73: setdid(todo, sequence++);
74: }
Defined functions
Defined variables
remind
defined in line
8; used 1 times
sccsid
defined in line
2;
never used