home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / cmd / learn / dounit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-01-10  |  1.1 KB  |  60 lines

  1. #include "stdio.h"
  2. #include "lrnref"
  3.  
  4. dounit()
  5. {
  6.     char tbuff[100];
  7.  
  8.     if (todo == 0)
  9.         return;
  10.     wrong = 0;
  11. retry:
  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.  
  60.