Annotation of 43BSD/contrib/cpm/src/interact.c, revision 1.1.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.