Annotation of 42BSD/usr.bin/learn/learn.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)learn.c    4.2     (Berkeley)      4/27/83";
                      3: #endif not lint
                      4: 
                      5: #include "stdio.h"
                      6: #include "lrnref.h"
                      7: #include "signal.h"
                      8: 
                      9: char   *direct = "/usr/lib/learn";     /* CHANGE THIS ON YOUR SYSTEM */
                     10: int    more;
                     11: char   *level;
                     12: int    speed;
                     13: char   *sname;
                     14: char   *todo;
                     15: FILE   *incopy = NULL;
                     16: int    didok;
                     17: int    sequence        = 1;
                     18: int    comfile = -1;
                     19: int    status;
                     20: int    wrong;
                     21: char   *pwline;
                     22: char   *dir;
                     23: FILE   *scrin;
                     24: int    logging = 1;    /* set to 0 to turn off logging */
                     25: int    ask;
                     26: int    again;
                     27: int    skip;
                     28: int    teed;
                     29: int    total;
                     30: 
                     31: main(argc,argv)
                     32: int argc;
                     33: char *argv[];
                     34: {
                     35:        extern hangup(), intrpt();
                     36:        extern char * getlogin();
                     37:        char *malloc();
                     38: 
                     39:        speed = 0;
                     40:        more = 1;
                     41:        pwline = getlogin();
                     42:        setbuf(stdout, malloc(BUFSIZ));
                     43:        setbuf(stderr, malloc(BUFSIZ));
                     44:        selsub(argc, argv);
                     45:        chgenv();
                     46:        signal(SIGHUP, hangup);
                     47:        signal(SIGINT, intrpt);
                     48:        while (more) {
                     49:                selunit();
                     50:                dounit();
                     51:                whatnow();
                     52:        }
                     53:        wrapup(0);
                     54: }
                     55: 
                     56: hangup()
                     57: {
                     58:        wrapup(1);
                     59: }
                     60: 
                     61: intrpt()
                     62: {
                     63:        char response[20], *p;
                     64: 
                     65:        signal(SIGINT, hangup);
                     66:        write(2, "\nInterrupt.\nWant to go on?  ", 28);
                     67:        p = response;
                     68:        *p = 'n';
                     69:        while (read(0, p, 1) == 1 && *p != '\n')
                     70:                p++;
                     71:        if (response[0] != 'y')
                     72:                wrapup(0);
                     73:        ungetc('\n', stdin);
                     74:        signal(SIGINT, intrpt);
                     75: }

unix.superglobalmegacorp.com

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