Annotation of 41BSD/cmd/learn/dounit.c, revision 1.1.1.1

1.1       root        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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.