Annotation of 43BSDReno/contrib/jove/funcdefs.c, revision 1.1.1.1

1.1       root        1: /***************************************************************************
                      2:  * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne.  JOVE *
                      3:  * is provided to you without charge, and with no warranty.  You may give  *
                      4:  * away copies of JOVE, including sources, provided that this notice is    *
                      5:  * included in all the files.                                              *
                      6:  ***************************************************************************/
                      7: 
                      8: #include "jove.h"
                      9: #include "ctype.h"
                     10: 
                     11: #if !defined(MSDOS) && !defined(SYSV) && !defined(MAC)
                     12: # include <sgtty.h>
                     13: #endif
                     14: 
                     15: #if !defined(TXT_TO_C)
                     16: 
                     17: #if defined(MAC)
                     18: #      define WIRED_CMD(c) (c),'\0','\0'       /* for About Jove... */
                     19: #else
                     20: #      define WIRED_CMD(c)     (c)
                     21: #endif /* MAC */
                     22: 
                     23: #else /* TXT_TO_C */
                     24: 
                     25: #if defined(MAC)
                     26: #      define WIRED_CMD(c) 0,'\0','\0'
                     27: #else
                     28: #      define WIRED_CMD(c)     0
                     29: #endif
                     30: #endif /* TXT_TO_C */
                     31: 
                     32: const struct cmd       commands[] = {
                     33: #if defined(LISP)
                     34:        FUNCTION, "add-lisp-special", WIRED_CMD(AddSpecial),
                     35: #endif
                     36:        FUNCTION, "append-region", WIRED_CMD(AppReg),
                     37:        FUNCTION, "apropos", WIRED_CMD(Apropos),
                     38:        FUNCTION, "auto-execute-command", WIRED_CMD(CAutoExec),
                     39:        FUNCTION, "auto-execute-macro", WIRED_CMD(MAutoExec),
                     40:        DefMinor(Fill), "auto-fill-mode", WIRED_CMD(0),
                     41:        DefMinor(Indent), "auto-indent-mode", WIRED_CMD(0),
                     42:        FUNCTION, "backward-character", WIRED_CMD(BackChar),
                     43:        FUNCTION, "backward-list", WIRED_CMD(BList),
                     44:        FUNCTION, "backward-paragraph", WIRED_CMD(BackPara),
                     45:        FUNCTION, "backward-s-expression", WIRED_CMD(BSexpr),
                     46:        FUNCTION, "backward-sentence", WIRED_CMD(Bos),
                     47:        FUNCTION, "backward-up-list", WIRED_CMD(BUpList),
                     48:        FUNCTION, "backward-word", WIRED_CMD(BackWord),
                     49:        FUNCTION, "begin-kbd-macro", WIRED_CMD(Remember),
                     50:        FUNCTION, "beginning-of-file", WIRED_CMD(Bof),
                     51:        FUNCTION, "beginning-of-line", WIRED_CMD(Bol),
                     52:        FUNCTION, "beginning-of-window", WIRED_CMD(Bow),
                     53:        FUNCTION, "bind-to-key", WIRED_CMD(BindAKey),
                     54:        FUNCTION, "bind-keymap-to-key", WIRED_CMD(KmBind),
                     55:        FUNCTION, "bind-macro-to-key", WIRED_CMD(BindMac),
                     56: #if defined(ABBREV)
                     57:        FUNCTION, "bind-macro-to-word-abbrev", WIRED_CMD(BindMtoW),
                     58: #endif
                     59:        FUNCTION, "buffer-position", WIRED_CMD(BufPos),
                     60:        DefMajor(CMODE), "c-mode", WIRED_CMD(0),
                     61:        MODFUNC, "case-character-capitalize", WIRED_CMD(CapChar),
                     62:        MODFUNC, "case-region-lower", WIRED_CMD(CasRegLower),
                     63:        MODFUNC, "case-region-upper", WIRED_CMD(CasRegUpper),
                     64:        MODFUNC, "case-word-capitalize", WIRED_CMD(CapWord),
                     65:        MODFUNC, "case-word-lower", WIRED_CMD(LowWord),
                     66:        MODFUNC, "case-word-upper", WIRED_CMD(UppWord),
                     67:        MODFUNC, "character-to-octal-insert", WIRED_CMD(ChrToOct),
                     68:        FUNCTION, "cd", WIRED_CMD(Chdir),
                     69:        FUNCTION, "clear-and-redraw", WIRED_CMD(ClAndRedraw),
                     70: #if !defined(MAC)
                     71:        FUNCTION, "compile-it", WIRED_CMD(MakeErrors),
                     72: #endif
                     73: #if defined(IPROCS) && !defined(PIPEPROCS) && defined(TIOCSLTC)
                     74:        FUNCTION, "continue-process", WIRED_CMD(ProcCont),
                     75: #endif
                     76:        FUNCTION, "copy-region", WIRED_CMD(CopyRegion),
                     77: #if !defined(MAC)
                     78:        FUNCTION, "current-error", WIRED_CMD(ShowErr),
                     79: #endif
                     80:        FUNCTION, "date", WIRED_CMD(prCTIME),
                     81: #if defined(IPROCS)
                     82:        FUNCTION, "process-dbx-output", WIRED_CMD(DBXpoutput),
                     83: #endif
                     84: #if defined(ABBREV)
                     85:        FUNCTION, "define-global-word-abbrev", WIRED_CMD(DefGAbbrev),
                     86:        FUNCTION, "define-mode-word-abbrev", WIRED_CMD(DefMAbbrev),
                     87: #endif
                     88:        FUNCTION, "define-macro", WIRED_CMD(DefKBDMac),
                     89:        MODFUNC, "delete-blank-lines", WIRED_CMD(DelBlnkLines),
                     90:        FUNCTION, "delete-buffer", WIRED_CMD(BufKill),
                     91:        FUNCTION, "delete-macro", WIRED_CMD(DelMacro),
                     92:        MODFUNC, "delete-next-character", WIRED_CMD(DelNChar),
                     93:        FUNCTION, "delete-other-windows", WIRED_CMD(OneWindow),
                     94:        MODFUNC, "delete-previous-character", WIRED_CMD(DelPChar),
                     95:        MODFUNC, "delete-white-space", WIRED_CMD(DelWtSpace),
                     96:        FUNCTION, "delete-current-window", WIRED_CMD(DelCurWindow),
                     97:        FUNCTION, "describe-bindings", WIRED_CMD(DescBindings),
                     98:        FUNCTION, "describe-command", WIRED_CMD(DescCom),
                     99:        FUNCTION, "describe-key", WIRED_CMD(KeyDesc),
                    100:        FUNCTION, "describe-variable", WIRED_CMD(DescCom),
                    101:        FUNCTION, "digit", WIRED_CMD(Digit),
                    102:        FUNCTION, "digit-1", WIRED_CMD(Digit1),
                    103:        FUNCTION, "digit-2", WIRED_CMD(Digit2),
                    104:        FUNCTION, "digit-3", WIRED_CMD(Digit3),
                    105:        FUNCTION, "digit-4", WIRED_CMD(Digit4),
                    106:        FUNCTION, "digit-5", WIRED_CMD(Digit5),
                    107:        FUNCTION, "digit-6", WIRED_CMD(Digit6),
                    108:        FUNCTION, "digit-7", WIRED_CMD(Digit7),
                    109:        FUNCTION, "digit-8", WIRED_CMD(Digit8),
                    110:        FUNCTION, "digit-9", WIRED_CMD(Digit9),
                    111:        FUNCTION, "digit-0", WIRED_CMD(Digit0),
                    112:        FUNCTION, "dirs", WIRED_CMD(prDIRS),
                    113:        FUNCTION, "down-list", WIRED_CMD(FDownList),
                    114: #if defined(IPROCS) && !defined(PIPEPROCS) && defined(TIOCSLTC)
                    115:        FUNCTION, "dstop-process", WIRED_CMD(ProcDStop),
                    116: #endif
                    117: #if defined(ABBREV)
                    118:        FUNCTION, "edit-word-abbrevs", WIRED_CMD(EditAbbrevs),
                    119: #endif
                    120:        FUNCTION, "end-kbd-macro", WIRED_CMD(Forget),
                    121:        FUNCTION, "end-of-file", WIRED_CMD(Eof),
                    122:        FUNCTION, "end-of-line", WIRED_CMD(Eol),
                    123:        FUNCTION, "end-of-window", WIRED_CMD(Eow),
                    124: #if defined(IPROCS) && !defined(PIPEPROCS)
                    125:        FUNCTION, "eof-process", WIRED_CMD(ProcEof),
                    126: #endif
                    127:        FUNCTION, "erase-buffer", WIRED_CMD(BufErase),
                    128:        FUNCTION, "exchange-point-and-mark", WIRED_CMD(PtToMark),
                    129:        FUNCTION, "execute-named-command", WIRED_CMD(Extend),
                    130:        FUNCTION, "execute-kbd-macro", WIRED_CMD(ExecMacro),
                    131:        FUNCTION, "execute-macro", WIRED_CMD(RunMacro),
                    132:        FUNCTION, "exit-jove", WIRED_CMD(Leave),
                    133: #if defined(CMT_FMT)
                    134:        MODFUNC, "fill-comment", WIRED_CMD(Comment),
                    135: #endif /* CMT_FMT */
                    136:        MODFUNC, "fill-paragraph", WIRED_CMD(Justify),
                    137:        MODFUNC, "fill-region", WIRED_CMD(RegJustify),
                    138: #if !defined(MAC)
                    139:        MODFUNC, "filter-region", WIRED_CMD(FilterRegion),
                    140: #endif
                    141:        FUNCTION, "find-file", WIRED_CMD(FindFile),
                    142:        FUNCTION, "find-tag", WIRED_CMD(FindTag),
                    143:        FUNCTION, "find-tag-at-point", WIRED_CMD(FDotTag),
                    144:        FUNCTION, "first-non-blank", WIRED_CMD(ToIndent),
                    145:        FUNCTION, "forward-character", WIRED_CMD(ForChar),
                    146:        FUNCTION, "forward-list", WIRED_CMD(FList),
                    147:        FUNCTION, "forward-paragraph", WIRED_CMD(ForPara),
                    148:        FUNCTION, "forward-s-expression", WIRED_CMD(FSexpr),
                    149:        FUNCTION, "forward-sentence", WIRED_CMD(Eos),
                    150:        FUNCTION, "forward-word", WIRED_CMD(ForWord),
                    151:        DefMajor(FUNDAMENTAL), "fundamental-mode", WIRED_CMD(0),
                    152:        FUNCTION, "gather-numeric-argument", WIRED_CMD(TimesFour),
                    153: #if defined(LISP)
                    154:        MODFUNC, "grind-s-expr", WIRED_CMD(GSexpr),
                    155: #endif
                    156:        FUNCTION, "goto-line", WIRED_CMD(GoLine),
                    157:        FUNCTION, "goto-window-with-buffer", WIRED_CMD(GotoWind),
                    158:        FUNCTION, "grow-window", WIRED_CMD(GrowWindow),
                    159:        MODFUNC, "handle-tab", WIRED_CMD(Tab),
                    160:        FUNCTION, "i-search-forward", WIRED_CMD(IncFSearch),
                    161:        FUNCTION, "i-search-reverse", WIRED_CMD(IncRSearch),
                    162:        MODFUNC, "insert-file", WIRED_CMD(InsFile),
                    163: #if defined(IPROCS)
                    164:        FUNCTION, "interrupt-process", WIRED_CMD(ProcInt),
                    165:        FUNCTION, "i-shell-command", WIRED_CMD(Iprocess),
                    166: #endif
                    167:        MODFUNC, "kill-next-word", WIRED_CMD(DelNWord),
                    168:        MODFUNC, "kill-previous-word", WIRED_CMD(DelPWord),
                    169: #if defined(IPROCS)
                    170:        FUNCTION, "kill-process", WIRED_CMD(ProcKill),
                    171: #endif
                    172:        MODFUNC, "kill-region", WIRED_CMD(DelReg),
                    173:        MODFUNC, "kill-s-expression", WIRED_CMD(KillExpr),
                    174:        FUNCTION, "kill-some-buffers", WIRED_CMD(KillSome),
                    175:        MODFUNC, "kill-to-beginning-of-sentence", WIRED_CMD(KillBos),
                    176:        MODFUNC, "kill-to-end-of-line", WIRED_CMD(KillEOL),
                    177:        MODFUNC, "kill-to-end-of-sentence", WIRED_CMD(KillEos),
                    178:        FUNCTION, "left-margin-here", WIRED_CMD(SetLMargin),
                    179: #if defined(LISP)
                    180:        DefMajor(LISPMODE), "lisp-mode", WIRED_CMD(0),
                    181: #endif
                    182:        FUNCTION, "list-buffers", WIRED_CMD(BufList),
                    183: #if defined(IPROCS)
                    184:        FUNCTION, "list-processes", WIRED_CMD(ProcList),
                    185: #endif
                    186:        FUNCTION, "make-buffer-unmodified", WIRED_CMD(NotModified),
                    187:        FUNCTION, "make-keymap", WIRED_CMD(MakeKMap),
                    188:        FUNCTION, "make-macro-interactive", WIRED_CMD(MacInter),
                    189:        FUNCTION, "name-kbd-macro", WIRED_CMD(NameMac),
                    190:        MODFUNC, "newline", WIRED_CMD(Newline),
                    191:        MODFUNC, "newline-and-backup", WIRED_CMD(OpenLine),
                    192:        MODFUNC, "newline-and-indent", WIRED_CMD(LineAI),
                    193: #if !defined(MAC)
                    194:        FUNCTION, "next-error", WIRED_CMD(NextError),
                    195: #endif
                    196:        FUNCTION, "next-line", WIRED_CMD(NextLine),
                    197:        FUNCTION, "next-page", WIRED_CMD(NextPage),
                    198:        FUNCTION, "next-window", WIRED_CMD(NextWindow),
                    199:        FUNCTION, "number-lines-in-window", WIRED_CMD(WNumLines),
                    200:        DefMinor(OverWrite), "over-write-mode", WIRED_CMD(0),
                    201:        FUNCTION, "page-next-window", WIRED_CMD(PageNWind),
                    202:        MODFUNC, "paren-flash", WIRED_CMD(DoParen),
                    203: #if !defined(MAC)
                    204:        FUNCTION, "parse-errors", WIRED_CMD(ErrParse),
                    205: #endif
                    206: #if defined(SPELL)
                    207:        FUNCTION, "parse-spelling-errors-in-buffer", WIRED_CMD(SpelWords),
                    208: #endif
                    209: #if defined(JOB_CONTROL)
                    210:        FUNCTION, "pause-jove", WIRED_CMD(PauseJove),
                    211: #else
                    212: #      ifndef MAC
                    213:        FUNCTION, "pause-jove", WIRED_CMD(Push),
                    214: #      endif
                    215: #endif
                    216:        FUNCTION, "pop-mark", WIRED_CMD(PopMark),
                    217:        FUNCTION, "popd", WIRED_CMD(Popd),
                    218: #if !defined(MAC)
                    219:        FUNCTION, "previous-error", WIRED_CMD(PrevError),
                    220: #endif
                    221:        FUNCTION, "previous-line", WIRED_CMD(PrevLine),
                    222:        FUNCTION, "previous-page", WIRED_CMD(PrevPage),
                    223:        FUNCTION, "previous-window", WIRED_CMD(PrevWindow),
                    224:        FUNCTION, "print", WIRED_CMD(PrVar),
                    225: #if defined(IPROCS)
                    226:        FUNCTION, "process-bind-keymap-to-key", WIRED_CMD(ProcKmBind),
                    227:        FUNCTION, "process-bind-to-key", WIRED_CMD(ProcBind),
                    228:        MODFUNC, "process-newline", WIRED_CMD(ProcNewline),
                    229:        FUNCTION, "process-send-data-no-return", WIRED_CMD(ProcSendData),
                    230: #endif
                    231: #if !defined(MAC)
                    232:        FUNCTION, "push-shell", WIRED_CMD(Push),
                    233: #endif
                    234:        FUNCTION, "pushd", WIRED_CMD(Pushd),
                    235:        FUNCTION, "pwd", WIRED_CMD(prCWD),
                    236:        MODFUNC, "query-replace-string", WIRED_CMD(QRepSearch),
                    237: #if defined(IPROCS)
                    238:        FUNCTION, "quit-process", WIRED_CMD(ProcQuit),
                    239: #endif
                    240:        MODFUNC, "quoted-insert", WIRED_CMD(QuotChar),
                    241:        DefMinor(ReadOnly), "read-only-mode", WIRED_CMD(0),
                    242: #if defined(ABBREV)
                    243:        FUNCTION, "read-word-abbrev-file", WIRED_CMD(RestAbbrevs),
                    244: #endif
                    245:        FUNCTION, "redraw-display", WIRED_CMD(RedrawDisplay),
                    246:        FUNCTION, "recursive-edit", WIRED_CMD(Recur),
                    247:        FUNCTION, "rename-buffer", WIRED_CMD(ReNamBuf),
                    248:        MODFUNC, "replace-in-region", WIRED_CMD(RegReplace),
                    249:        MODFUNC, "replace-string", WIRED_CMD(RepSearch),
                    250:        FUNCTION, "right-margin-here", WIRED_CMD(SetRMargin),
                    251:        FUNCTION, "save-file", WIRED_CMD(SaveFile),
                    252:        FUNCTION, "scroll-down", WIRED_CMD(DownScroll),
                    253:        FUNCTION, "scroll-left", WIRED_CMD(ScrollLeft),
                    254: #if defined(MSDOS)
                    255:        FUNCTION, "scroll-next-page", WIRED_CMD(PageScrollUp),
                    256:        FUNCTION, "scroll-previous-page", WIRED_CMD(PageScrollDown),
                    257: #endif /* MSDOS */
                    258:        FUNCTION, "scroll-right", WIRED_CMD(ScrollRight),
                    259:        FUNCTION, "scroll-up", WIRED_CMD(UpScroll),
                    260:        FUNCTION, "search-forward", WIRED_CMD(ForSearch),
                    261:        FUNCTION, "search-forward-nd", WIRED_CMD(FSrchND),
                    262:        FUNCTION, "search-reverse", WIRED_CMD(RevSearch),
                    263:        FUNCTION, "search-reverse-nd", WIRED_CMD(RSrchND),
                    264:        FUNCTION, "select-buffer", WIRED_CMD(BufSelect),
                    265: #if defined(MSDOS)
                    266:        FUNCTION, "select-buffer-1", WIRED_CMD(Buf1Select),
                    267:        FUNCTION, "select-buffer-2", WIRED_CMD(Buf2Select),
                    268:        FUNCTION, "select-buffer-3", WIRED_CMD(Buf3Select),
                    269:        FUNCTION, "select-buffer-4", WIRED_CMD(Buf4Select),
                    270:        FUNCTION, "select-buffer-5", WIRED_CMD(Buf5Select),
                    271:        FUNCTION, "select-buffer-6", WIRED_CMD(Buf6Select),
                    272:        FUNCTION, "select-buffer-7", WIRED_CMD(Buf7Select),
                    273:        FUNCTION, "select-buffer-8", WIRED_CMD(Buf8Select),
                    274:        FUNCTION, "select-buffer-9", WIRED_CMD(Buf9Select),
                    275:        FUNCTION, "select-buffer-10", WIRED_CMD(Buf10Select),
                    276: #endif /* MSDOS */
                    277:        MODFUNC, "self-insert", WIRED_CMD(SelfInsert),
                    278:        FUNCTION, "set", WIRED_CMD(SetVar),
                    279:        FUNCTION, "set-mark", WIRED_CMD(SetMark),
                    280: #if defined(IPROCS)    /* for GNU compatibility */
                    281:        FUNCTION, "shell", WIRED_CMD(ShellProc),
                    282: #endif
                    283: #if !defined(MAC)
                    284:        FUNCTION, "shell-command", WIRED_CMD(ShellCom),
                    285:        FUNCTION, "shell-command-no-buffer", WIRED_CMD(ShNoBuf),
                    286:        FUNCTION, "shell-command-to-buffer", WIRED_CMD(ShToBuf),
                    287:        FUNCTION, "shell-command-with-typeout", WIRED_CMD(Shtypeout),
                    288: #endif
                    289:        MODFUNC, "shift-region-left", WIRED_CMD(LRShift),
                    290:        MODFUNC, "shift-region-right", WIRED_CMD(RRShift),
                    291:        DefMinor(ShowMatch), "show-match-mode", WIRED_CMD(0),
                    292:        FUNCTION, "shrink-window", WIRED_CMD(ShrWindow),
                    293:        FUNCTION, "source", WIRED_CMD(Source),
                    294: #if defined(SPELL)
                    295:        FUNCTION, "spell-buffer", WIRED_CMD(SpelBuffer),
                    296: #endif
                    297:        FUNCTION, "split-current-window", WIRED_CMD(SplitWind),
                    298:        FUNCTION, "start-remembering", WIRED_CMD(Remember),
                    299: #if defined(IPROCS) && !defined(PIPEPROCS)
                    300:        FUNCTION, "stop-process", WIRED_CMD(ProcStop),
                    301: #endif
                    302:        FUNCTION, "stop-remembering", WIRED_CMD(Forget),
                    303:        FUNCTION, "string-length", WIRED_CMD(StrLength),
                    304: #if defined(JOB_CONTROL)
                    305:        FUNCTION, "suspend-jove", WIRED_CMD(PauseJove),
                    306: #endif
                    307:        DefMajor(TEXT), "text-mode", WIRED_CMD(0),
                    308:        MODFUNC, "transpose-characters", WIRED_CMD(TransChar),
                    309:        MODFUNC, "transpose-lines", WIRED_CMD(TransLines),
                    310:        FUNCTION, "unbind-key", WIRED_CMD(UnbindC),
                    311:        FUNCTION, "version", WIRED_CMD(ShowVersion),
                    312:        FUNCTION, "visible-spaces-in-window", WIRED_CMD(WVisSpace),
                    313:        FUNCTION, "visit-file", WIRED_CMD(ReadFile),
                    314:        FUNCTION, "window-find", WIRED_CMD(WindFind),
                    315: #if defined(ABBREV)
                    316:        DefMinor(Abbrev), "word-abbrev-mode", WIRED_CMD(0),
                    317:        FUNCTION, "write-word-abbrev-file", WIRED_CMD(SaveAbbrevs),
                    318: #endif
                    319:        FUNCTION, "write-file", WIRED_CMD(WriteFile),
                    320:        FUNCTION, "write-macros-to-file", WIRED_CMD(WriteMacs),
                    321:        FUNCTION, "write-modified-files", WIRED_CMD(WtModBuf),
                    322:        FUNCTION, "write-region", WIRED_CMD(WrtReg),
                    323:        MODFUNC, "yank", WIRED_CMD(Yank),
                    324:        MODFUNC, "yank-pop", WIRED_CMD(YankPop),
                    325:        FUNCTION, 0, 0
                    326: };
                    327: 
                    328: #if !defined(TXT_TO_C)
                    329: data_obj *
                    330: findcom(prompt)
                    331: char   *prompt;
                    332: {
                    333:        /* This is for faster startup.  This just reads until a space or a
                    334:           tab or a newline character is reached, and then does a
                    335:           semi-hashed lookup on that string.  This should be much faster
                    336:           than initializing the minibuffer for each line. */
                    337:        if (InJoverc) {
                    338:                char    cmdbuf[128];
                    339:                register const struct cmd       *cmd;
                    340:                register char   *cp = cmdbuf;
                    341: #if !(defined(IBMPC) || defined(MAC))
                    342:                register int    c;
                    343: #else
                    344:                int c;
                    345: #endif
                    346:                const struct cmd        *which;
                    347:                size_t  cmdlen;
                    348:                int     found = 0;
                    349:                static const struct cmd *cmdhash[26];
                    350:                static int      beenhere = NO;
                    351: 
                    352: /* special case for prefix commands--only upper case ones */
                    353: #define hash(c)        ((c) - 'a')
                    354: 
                    355:                /* initialize the hash table */
                    356:                if (beenhere == NO) {
                    357:                        int     lastc = 0;
                    358: 
                    359:                        for (cmd = commands; cmd->Name != 0; cmd++)
                    360:                                if (lastc != cmd->Name[0]) {
                    361:                                        lastc = cmd->Name[0];
                    362:                                        cmdhash[hash(lastc)] = cmd;
                    363:                                }
                    364:                        beenhere = YES;
                    365:                }
                    366: #ifdef MAC
                    367:                menus_off();    /* Block menu choices during input */
                    368: #endif
                    369:                /* gather the cmd name */
                    370:                while (((c = getch()) != EOF) && !strchr(" \t\r\n", c)) {
                    371: #if (defined(IBMPC) || defined(MAC))
                    372:                        lower((char *) &c);
                    373: #else
                    374:                        if (isupper(c))
                    375:                                c = tolower(c);
                    376: #endif
                    377:                        *cp++ = c;
                    378:                }
                    379:                if (c == EOF)
                    380:                        return 0;
                    381:                *cp = '\0';
                    382:                cmdlen = cp - cmdbuf;
                    383:                if (cmdlen == 0)
                    384:                        return 0;
                    385: 
                    386:                /* look it up (in the reduced search space) */
                    387:                if (islower(cmdbuf[0]))
                    388:                    for (cmd = cmdhash[hash(cmdbuf[0])]; cmd != 0 && cmd->Name[0] == cmdbuf[0]; cmd++) {
                    389:                        if (strncmp(cmd->Name, cmdbuf, cmdlen) == 0) {
                    390:                                if (strcmp(cmd->Name, cmdbuf) == 0)
                    391:                                        return (data_obj *) cmd;
                    392:                                found += 1;
                    393:                                which = cmd;
                    394:                        }
                    395:                    }
                    396:                if (found > 1) {
                    397:                        complain("[\"%s\" ambiguous]", cmdbuf);
                    398:                        /* NOTREACHED */
                    399:                } else if (found == 0) {
                    400:                        complain("[\"%s\" unknown]", cmdbuf);
                    401:                        /* NOTREACHED */
                    402:                }else
                    403:                        return (data_obj *) which;
                    404:        } else {
                    405:                static char     *strings[(sizeof commands) / sizeof (commands[0])];
                    406:                static int      beenhere = NO;
                    407:                register int    com;
                    408: 
                    409:                if (beenhere == NO) {
                    410:                        register char   **strs = strings;
                    411:                        register const struct cmd       *c;
                    412: 
                    413:                        for (c = commands; c->Name != 0; c++)
                    414:                                *strs++ = c->Name;
                    415:                        *strs = 0;
                    416:                        beenhere = YES;
                    417:                }
                    418: 
                    419:                if ((com = complete(strings, prompt, CASEIND)) < 0)
                    420:                        return 0;
                    421:                return (data_obj *) &commands[com];
                    422:        }
                    423: #undef hash
                    424: }
                    425: #endif

unix.superglobalmegacorp.com

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