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

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)learn.c    4.4     (Berkeley)      5/15/86";
                      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(), *malloc();
                     37: 
                     38:        speed = 0;
                     39:        more = 1;
                     40:        pwline = getlogin();
                     41: #ifndef BSD4_2
                     42:        setbuf(stdout, malloc(BUFSIZ));
                     43:        setbuf(stderr, malloc(BUFSIZ));
                     44: #endif
                     45:        selsub(argc, argv);
                     46:        chgenv();
                     47:        signal(SIGHUP, hangup);
                     48:        signal(SIGINT, intrpt);
                     49:        while (more) {
                     50:                selunit();
                     51:                dounit();
                     52:                whatnow();
                     53:        }
                     54:        wrapup(0);
                     55: }
                     56: 
                     57: hangup()
                     58: {
                     59:        wrapup(1);
                     60: }
                     61: 
                     62: intrpt()
                     63: {
                     64:        char response[20], *p;
                     65: 
                     66:        signal(SIGINT, hangup);
                     67:        write(2, "\nInterrupt.\nWant to go on?  ", 28);
                     68:        p = response;
                     69:        *p = 'n';
                     70:        while (read(0, p, 1) == 1 && *p != '\n')
                     71:                p++;
                     72:        if (response[0] != 'y')
                     73:                wrapup(0);
                     74:        ungetc('\n', stdin);
                     75:        signal(SIGINT, intrpt);
                     76: }

unix.superglobalmegacorp.com

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