BSD 4 release
[unix-history] / usr / src / cmd / learn / dounit.c
CommitLineData
aaa7ced1
BJ
1#include "stdio.h"
2#include "lrnref"
3
4dounit()
5{
6 char tbuff[100];
7
8 if (todo == 0)
9 return;
10 wrong = 0;
11retry:
12 start(todo);
13 sprintf(tbuff, "../../%s/L%s", sname, todo); /* script = lesson */
14 scrin = fopen(tbuff, "r");
15 if (scrin == NULL) {
16 fprintf(stderr, "No script.\n");
17 wrapup(1);
18 }
19
20 copy(0, scrin);
21 if (more == 0)
22 return;
23 copy(1, stdin);
24 if (more == 0)
25 return;
26 copy(0, scrin);
27
28 if (comfile >= 0)
29 close(comfile);
30 wait(&didok);
31 didok = (status == 0);
32 if (!didok) {
33 wrong++;
34 printf("\nSorry, that's %snot right. Do you want to try again? ",
35 wrong > 1 ? "still " : "");
36 fflush(stdout);
37 for(;;) {
38 gets(tbuff);
39 if (tbuff[0] == 'y') {
40 printf("Try the problem again.\n");
41 fflush(stdout);
42 goto retry;
43 } else if (strcmp(tbuff, "bye") == 0) {
44 wrapup(1);
45 } else if (tbuff[0] == 'n') {
46 wrong = 0;
47 printf("\nOK. Lesson %s (%d)\n", todo, speed);
48 printf("Skipping to next lesson.\n\n");
49 fflush(stdout);
50 break;
51 } else {
52 printf("Please type yes, no or bye: ");
53 fflush(stdout);
54 }
55 }
56 }
57 setdid(todo, sequence++);
58}
59