Annotation of 43BSDTahoe/new/cpm/src/interact.c, revision 1.1

1.1     ! root        1: /*     interact.c      1.8     83/07/27        */
        !             2: #include <stdio.h>
        !             3: #include "command.h"
        !             4: #include <setjmp.h>
        !             5: #include <signal.h>
        !             6: 
        !             7: #define errinp { printf("??\n"); break; }
        !             8: 
        !             9: jmp_buf        env;
        !            10: int    firsttime = 0;
        !            11: 
        !            12: interact()
        !            13: 
        !            14: {
        !            15: 
        !            16:        int     i, intrpt();
        !            17:        char    cmd[80], *rest, *index();
        !            18: 
        !            19:        for (;;) {
        !            20:                if (firsttime++ == 0) {
        !            21:                        signal(SIGINT, intrpt, -1);
        !            22:                        (void) setjmp(env);
        !            23:                }
        !            24:                if (cmdinp(cmd) < 0)
        !            25:                        return (0);
        !            26:                rest = index(cmd, ' ');
        !            27:                if (rest)
        !            28:                        *rest++ = '\0';
        !            29:                i = chkcmd(cmd);
        !            30: #ifdef DEBUG
        !            31:                printf("command: %s, ind: %d\n", cmd, i);
        !            32: #endif
        !            33: 
        !            34:                switch (i) {
        !            35:                default:
        !            36:                        errinp;
        !            37:                        break;
        !            38:                case CMD_DIR:   
        !            39:                case CMD_LS:
        !            40:                        dispdir();
        !            41:                        break;
        !            42: 
        !            43:                case CMD_RENAME:
        !            44:                        rename(rest);
        !            45:                        break;
        !            46: 
        !            47:                case CMD_OCOPY:
        !            48:                        copyc(rest, 0);
        !            49:                        break;
        !            50: 
        !            51:                case CMD_ICOPY:
        !            52:                        pip(rest, 0);
        !            53:                        break;
        !            54: 
        !            55:                case CMD_DELETE:
        !            56:                case CMD_ERASE:
        !            57:                        delete(rest);
        !            58:                        break;
        !            59: 
        !            60:                case CMD_EXIT:
        !            61:                case CMD_LOGOUT:
        !            62:                        return(0);
        !            63: 
        !            64:                case CMD_TYPE:
        !            65:                        copy(rest, stdout, 0);
        !            66:                        break;
        !            67: 
        !            68:                case CMD_HELP:
        !            69:                        help();
        !            70:                        break;
        !            71: 
        !            72:                case CMD_OCCOPY:
        !            73:                        copyc(rest, 1);
        !            74:                        break;
        !            75: 
        !            76:                case CMD_ICCOPY:
        !            77:                        pip(rest,1);
        !            78:                        break;
        !            79: 
        !            80:                case CMD_DUMP:
        !            81:                        dump(rest);
        !            82:                        break;
        !            83: 
        !            84:                }
        !            85:        }
        !            86: }
        !            87: 
        !            88: /*
        !            89:  * handle interrupts (in interactive mode only),
        !            90:  * just (long)jump back to command input mode
        !            91:  */
        !            92: 
        !            93: intrpt()
        !            94: {
        !            95:        firsttime = 0;
        !            96:        printf("\n");
        !            97:        longjmp(env, 0);
        !            98: }

unix.superglobalmegacorp.com

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