Annotation of 3BSD/cmd/learn/dounit.c, revision 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.