home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1993 July / Internet Tools.iso / RockRidge / mail / mm / mm-0.90 / cmds.c < prev    next >
Encoding:
C/C++ Source or Header  |  1990-12-18  |  21.2 KB  |  684 lines

  1. /*
  2.  * Copyright (c) 1986, 1990 by The Trustees of Columbia University in
  3.  * the City of New York.  Permission is granted to any individual or
  4.  * institution to use, copy, or redistribute this software so long as it
  5.  * is not sold for profit, provided this copyright notice is retained.
  6.  */
  7.  
  8. #ifndef lint
  9. static char *rcsid = "$Header: /f/src2/encore.bin/cucca/mm/tarring-it-up/RCS/cmds.c,v 2.1 90/10/04 18:23:41 melissa Exp $";
  10. #endif
  11.  
  12. /*
  13.  * cmds.c - top level command tables for mm
  14.  *
  15.  * All of the top-level command tables for mm are declared here.
  16.  */
  17.  
  18. #include "mm.h"
  19. #include "parse.h"
  20. #include "cmds.h"
  21. #include "rd.h"
  22.  
  23. #define MAXCOL 16
  24. #define CMKEYTAB(t,k) keytab t = { (sizeof(k)/sizeof(keywrd)), k, MAXCOL }
  25.  
  26.  
  27. /*
  28.  * mm top level commands
  29.  */
  30.  
  31.  
  32. keywrd mm_top_keys_1[] = {
  33.     { "exit", 0, (keyval) CMD_EXIT },
  34.     { "help", 0, (keyval) CMD_HELP },
  35.     { "headers", 0, (keyval) CMD_HEADERS },
  36.     { "quit", 0, (keyval) CMD_QUIT },
  37.     { "read", 0, (keyval) CMD_READ },
  38.     { "review", 0, (keyval) CMD_REVIEW },
  39.     { "send", 0, (keyval) CMD_SEND },
  40.     { "suspend", 0, (keyval) CMD_SUSPEND },
  41. };
  42. CMKEYTAB(mm_top_keytab_1,mm_top_keys_1);
  43. fdb mm_top_fdb_1 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  44.              (pdat)&mm_top_keytab_1, 
  45.              "\n  BASIC command, ",
  46.              NULL, NULL, NULL };
  47.  
  48.  
  49. keywrd mm_top_keys_2[] = {
  50.     { "answer", 0, (keyval) CMD_ANSWER },
  51.     { "delete", 0, (keyval) CMD_DELETE },
  52.     { "forward", 0, (keyval) CMD_FORWARD },
  53.     { "print", 0, (keyval) CMD_PRINT },
  54.     { "remail", 0, (keyval) CMD_REMAIL },
  55.     { "reply", 0, (keyval) CMD_REPLY },
  56.     { "type", 0, (keyval) CMD_TYPE },
  57.     { "undelete", 0, (keyval) CMD_UNDELETE },
  58. };
  59. CMKEYTAB(mm_top_keytab_2,mm_top_keys_2);
  60. fdb mm_top_fdb_2 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  61.              (pdat)&mm_top_keytab_2, 
  62.              "MESSAGE-HANDLING command, ",
  63.              NULL, NULL, NULL };
  64.  
  65. keywrd mm_top_keys_3[] = {
  66.     { "flag", 0, (keyval) CMD_FLAG },
  67.     { "keyword", 0, (keyval) CMD_KEYWORD },
  68.     { "mark", 0, (keyval) CMD_MARK },
  69.     { "unanswer", 0, (keyval) CMD_UNANSWER },
  70.     { "unflag", 0, (keyval) CMD_UNFLAG },
  71.     { "unkeyword", 0, (keyval) CMD_UNKEYWORD },
  72.     { "unmark", 0, (keyval) CMD_UNMARK },
  73. };
  74. CMKEYTAB(mm_top_keytab_3,mm_top_keys_3);
  75. fdb mm_top_fdb_3 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  76.              (pdat)&mm_top_keytab_3, 
  77.              "MESSAGE-TAGGING command, ",
  78.              NULL, NULL, NULL };
  79.  
  80. keywrd mm_top_keys_4[] = {
  81.     { "copy", 0, (keyval) CMD_COPY },
  82.     { "examine", 0, (keyval) CMD_EXAMINE },
  83.     { "expunge", 0, (keyval) CMD_EXPUNGE },
  84.     { "get", 0, (keyval) CMD_GET },
  85.     { "move", 0, (keyval) CMD_MOVE },
  86.     { "restore-draft", 0, (keyval) CMD_RESTORE_DRAFT },
  87.     { "sort", 0, (keyval) CMD_SORT },
  88.     { "write", 0, (keyval) CMD_WRITE },
  89. };
  90. CMKEYTAB(mm_top_keytab_4,mm_top_keys_4);
  91. fdb mm_top_fdb_4 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  92.              (pdat)&mm_top_keytab_4, 
  93.              "FILING command, ",
  94.              NULL, NULL, NULL };
  95.  
  96. keywrd mm_top_keys_5[] = {
  97.     { "define", 0, (keyval) CMD_DEFINE },
  98.     { "profile", 0, (keyval) CMD_PROFILE },
  99.     { "save-init", 0, (keyval) CMD_CREATE_INIT },
  100.     { "set", 0, (keyval) CMD_SET },
  101.     { "show", 0, (keyval) CMD_SHOW },
  102. };
  103. CMKEYTAB(mm_top_keytab_5,mm_top_keys_5);
  104. fdb mm_top_fdb_5 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  105.              (pdat)&mm_top_keytab_5, 
  106.              "CUSTOMIZATION command, ",
  107.              NULL, NULL, NULL };
  108.  
  109. keywrd mm_top_keys_6[] = {
  110.     { "check", 0, (keyval) CMD_CHECK },
  111.     { "count", 0, (keyval) CMD_COUNT },
  112.     { "daytime", 0, (keyval) CMD_DAYTIME },
  113.     { "finger", 0, (keyval) CMD_FINGER },
  114.     { "pwd", 0, (keyval) CMD_PWD },
  115.     { "status", 0, (keyval) CMD_STATUS },
  116.     { "version", 0, (keyval) CMD_VERSION },
  117.     { "who", 0, (keyval) CMD_WHO },
  118. };
  119. CMKEYTAB(mm_top_keytab_6,mm_top_keys_6);
  120. fdb mm_top_fdb_6 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  121.              (pdat)&mm_top_keytab_6, 
  122.               "INFORMATION command, ",
  123.              NULL, NULL, NULL };
  124.  
  125. keywrd mm_top_keys_7[] = {
  126.     { "backtrack", 0, (keyval) CMD_BACKTRACK },
  127.     { "blank", 0, (keyval) CMD_BLANK },
  128.     { "browse", 0, (keyval) CMD_BROWSE },
  129.     { "bug", 0, (keyval) CMD_BUG },
  130.     { "bye", 0, (keyval) CMD_QQUIT },
  131.     { "cd", 0, (keyval) CMD_CD },
  132.     { "continue", 0, (keyval) CMD_CONTINUE },
  133.     { "echo", 0, (keyval) CMD_ECHO },
  134.     { "edit", 0, (keyval) CMD_EDIT },
  135.     { "follow", 0, (keyval) CMD_FOLLOW },
  136.     { "jump", 0, (keyval) CMD_JUMP },
  137.     { "list", 0, (keyval) CMD_LIST },
  138.     { "literal", 0, (keyval) CMD_LITERAL },
  139.     { "next", 0, (keyval) CMD_NEXT },
  140.     { "previous", 0, (keyval) CMD_PREVIOUS },
  141.     { "push", 0, (keyval) CMD_PUSH },
  142.     { "route", 0 , (keyval) CMD_ROUTE },
  143.     { "smail", KEY_INV, (keyval) CMD_SMAIL },
  144.     { "spell", 0, (keyval) CMD_SPELL },
  145.     { "take", 0, (keyval) CMD_TAKE },
  146. };
  147. CMKEYTAB(mm_top_keytab_7,mm_top_keys_7);
  148. fdb mm_top_fdb_7 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  149.              (pdat)&mm_top_keytab_7, 
  150.              "some OTHER command, ",
  151.              NULL, NULL, NULL };
  152.  
  153. keywrd mm_top_keys_abbr[] = {
  154.     { "delete", KEY_INV, (keyval) CMD_DELETE },
  155.     { "headers", KEY_INV, (keyval) CMD_HEADERS },
  156.     { "literal", KEY_INV, (keyval) CMD_LITERAL },
  157.     { "previous", KEY_INV, (keyval) CMD_PREVIOUS },
  158.     { "quit", KEY_INV, (keyval) CMD_QUIT },
  159.     { "read", KEY_INV, (keyval) CMD_READ },
  160.     { "send", KEY_INV, (keyval) CMD_SEND },
  161.     { "type", KEY_INV, (keyval) CMD_TYPE },
  162.     { "undelete", KEY_INV, (keyval) CMD_UNDELETE },
  163. };
  164. CMKEYTAB(mm_top_keytab_abbr,mm_top_keys_abbr);
  165. fdb mm_top_fdb_abbr = { _CMKEY, CM_NLH|CM_SDH|KEY_PTR|KEY_WID, NULL, 
  166.                 (pdat)&mm_top_keytab_abbr, NULL,
  167.                 NULL, NULL, "Invalid command" };
  168.  
  169. keywrd mm_top_keys_inv[] = {
  170.     { "alias", 0, (keyval) CMD_ALIAS },
  171.     { "create-init", KEY_INV, (keyval) CMD_CREATE_INIT },
  172.     { "debug", KEY_INV, (keyval) CMD_DEBUG },
  173.     { "debug-memory", KEY_INV, CMD_MEMDEBUG },
  174.     { "mail", 0, (keyval) CMD_SEND },
  175.     { "qquit", 0, (keyval) CMD_QQUIT },
  176.     { "z", KEY_INV, (keyval) CMD_Z },
  177. };
  178. CMKEYTAB(mm_top_keytab_inv,mm_top_keys_inv);
  179. fdb mm_top_fdb_inv = { _CMKEY, CM_NLH|CM_SDH|KEY_PTR|KEY_WID, NULL, 
  180.                (pdat)&mm_top_keytab_inv, NULL,
  181.                NULL, NULL, NULL };
  182.  
  183.  
  184.  
  185. /*
  186.  * mm send mode commands (send + answer modes)
  187.  */
  188.  
  189. keywrd mm_send_keys_1[] = {
  190.     { "display", 0, (keyval) CMD_DISPLAY },
  191.     { "edit", 0, (keyval) CMD_EDIT },
  192.     { "header", 0, (keyval) CMD_HEADERS },
  193.     { "help", 0, (keyval) CMD_HELP },
  194.     { "insert", 0, (keyval) CMD_INSERT },
  195.     { "quit", 0, (keyval) CMD_QUIT },
  196.     { "save-draft", 0, (keyval) CMD_SAVE_DRAFT },
  197.     { "send", 0, (keyval) CMD_SEND },
  198.     { "suspend", 0, (keyval) CMD_SUSPEND },
  199.     { "text", 0, (keyval) CMD_TEXT },
  200.     { "type", 0, (keyval) CMD_TYPE },
  201. };
  202. CMKEYTAB(mm_send_keytab_1,mm_send_keys_1);
  203. fdb mm_send_fdb_1 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  204.               (pdat)&mm_send_keytab_1, 
  205.               "\n  BASIC send-mode command, ",
  206.               NULL, NULL, NULL };
  207.  
  208. keywrd mm_send_keys_2[] = {
  209.     { "bcc", 0, (keyval) CMD_BCC },
  210.     { "cc", 0, (keyval) CMD_CC },
  211.     { "erase", 0, (keyval) CMD_ERASE },
  212.     { "fcc", 0, (keyval) CMD_FCC },
  213.     { "from", 0, (keyval) CMD_FROM },
  214.     { "keyword", 0, (keyval) CMD_KEYWORD },
  215.     { "in-reply-to", 0, (keyval) CMD_IN_REPLY_TO },
  216.     { "remove", 0, (keyval) CMD_REMOVE },
  217.     { "reply-to", 0, (keyval) CMD_REPLY_TO },
  218.     { "subject", 0, (keyval) CMD_SUBJECT },
  219.     { "to", 0, (keyval) CMD_TO },
  220.     { "unkeyword", 0, (keyval) CMD_UNKEYWORD },
  221.     { "user-header", 0, (keyval) CMD_USER_HEADER },
  222. };
  223. CMKEYTAB(mm_send_keytab_2,mm_send_keys_2);
  224. fdb mm_send_fdb_2 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  225.               (pdat)&mm_send_keytab_2, 
  226.               "HEADER-FIELD command, ",
  227.               NULL, NULL, NULL };
  228.  
  229. keywrd mm_send_keys_3[] = {
  230.     { "define", 0, (keyval) CMD_DEFINE },
  231.     { "profile", 0, (keyval) CMD_PROFILE },
  232.     { "save-init", 0, (keyval) CMD_CREATE_INIT },
  233.     { "set", 0, (keyval) CMD_SET },
  234.     { "show", 0, (keyval) CMD_SHOW },
  235. };
  236. CMKEYTAB(mm_send_keytab_3,mm_send_keys_3);
  237. fdb mm_send_fdb_3 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  238.               (pdat)&mm_send_keytab_3, 
  239.               "CUSTOMIZATION command, ",
  240.               NULL, NULL, NULL };
  241.  
  242. keywrd mm_send_keys_4[] = {
  243.     { "check", 0, (keyval) CMD_CHECK },
  244.     { "daytime", 0, (keyval) CMD_DAYTIME },
  245.     { "finger", 0, (keyval) CMD_FINGER },
  246.     { "pwd", 0, (keyval) CMD_PWD },
  247.     { "status", 0, (keyval) CMD_STATUS },
  248.     { "version", 0, (keyval) CMD_VERSION },
  249.     { "who", 0, (keyval) CMD_WHO },
  250. };
  251. CMKEYTAB(mm_send_keytab_4,mm_send_keys_4);
  252. fdb mm_send_fdb_4 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  253.               (pdat)&mm_send_keytab_4, 
  254.               "INFORMATION command, ",
  255.               NULL, NULL, NULL };
  256.  
  257. keywrd mm_send_keys_5[] = {
  258.     { "blank", 0, (keyval) CMD_BLANK },
  259.     { "cd", 0, (keyval) CMD_CD },
  260.     { "echo", 0, (keyval) CMD_ECHO },
  261.     { "literal", 0, (keyval) CMD_LITERAL },
  262.     { "push", 0, (keyval) CMD_PUSH },
  263.     { "route", 0 , (keyval) CMD_ROUTE },
  264.     { "spell", 0, (keyval) CMD_SPELL },
  265.     { "take", 0, (keyval) CMD_TAKE },
  266. };
  267. CMKEYTAB(mm_send_keytab_5,mm_send_keys_5);
  268. fdb mm_send_fdb_5 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  269.               (pdat)&mm_send_keytab_5, 
  270.               "some OTHER command, ",
  271.               NULL, NULL, NULL };
  272.  
  273. keywrd mm_send_keys_abbr[] = {
  274.     { "display", KEY_INV, (keyval) CMD_DISPLAY },
  275.     { "edit", KEY_INV, (keyval) CMD_EDIT },
  276.     { "headers", KEY_INV, (keyval) CMD_HEADERS },
  277.     { "literal", KEY_INV, (keyval) CMD_LITERAL },
  278.     { "remove", KEY_INV, (keyval) CMD_REMOVE },
  279.     { "send", KEY_INV, (keyval) CMD_SEND },
  280.     { "type", KEY_INV, (keyval) CMD_TYPE },
  281. };
  282. CMKEYTAB(mm_send_keytab_abbr,mm_send_keys_abbr);
  283. fdb mm_send_fdb_abbr = { _CMKEY, CM_NLH|CM_SDH|KEY_PTR|KEY_WID, NULL, 
  284.                  (pdat)&mm_send_keytab_abbr, 
  285.                  NULL, NULL, NULL, "Invalid command" };
  286.  
  287. keywrd mm_send_keys_inv[] = {
  288.     { "copy", 0, (keyval) CMD_COPY },
  289.     { "create-init", 0, (keyval) CMD_CREATE_INIT },
  290.     { "debug", KEY_INV, (keyval) CMD_DEBUG },
  291.     { "debug-memory", KEY_INV, (keyval) CMD_MEMDEBUG },
  292.     { "flag", 0, (keyval) CMD_FLAG },
  293.     { "headers", 0, (keyval) CMD_HEADERS },
  294.     { "list", 0, (keyval) CMD_LIST },
  295.     { "mail", 0, (keyval) CMD_SEND },
  296.     { "mark", 0, (keyval) CMD_MARK },
  297.     { "move", 0, (keyval) CMD_MOVE },
  298.     { "print", 0, (keyval) CMD_PRINT },
  299.     { "unanswer", 0, (keyval) CMD_UNANSWER },
  300.     { "unflag", 0, (keyval) CMD_UNFLAG },
  301.     { "unmark", 0, (keyval) CMD_UNMARK },
  302.     { "write", 0, (keyval) CMD_WRITE },
  303.     { "z", KEY_INV, (keyval) CMD_Z },
  304. };
  305. CMKEYTAB(mm_send_keytab_inv,mm_send_keys_inv);
  306. fdb mm_send_fdb_inv = { _CMKEY, CM_NLH|CM_SDH|KEY_PTR|KEY_WID, NULL, 
  307.                 (pdat)&mm_send_keytab_inv,
  308.                 NULL, NULL, NULL, NULL };
  309.  
  310.  
  311.  
  312. /*
  313.  * mm read mode commands 
  314.  */
  315.  
  316. keywrd mm_read_keys_1[] = {
  317.     { "backtrack", 0, (keyval) CMD_BACKTRACK },
  318.     { "browse", 0, (keyval) CMD_BROWSE },
  319.     { "follow", 0, (keyval) CMD_FOLLOW },
  320.     { "header", 0, (keyval) CMD_HEADERS },
  321.     { "help", 0, (keyval) CMD_HELP },
  322.     { "next", 0, (keyval) CMD_NEXT },
  323.     { "previous", 0, (keyval) CMD_PREVIOUS },
  324.     { "quit", 0, (keyval) CMD_QUIT },
  325.     { "suspend", 0, (keyval) CMD_SUSPEND },
  326.     { "type", 0, (keyval) CMD_TYPE },
  327. };
  328. CMKEYTAB(mm_read_keytab_1,mm_read_keys_1);
  329. fdb mm_read_fdb_1 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  330.               (pdat)&mm_read_keytab_1, 
  331.               "\n  BASIC read-mode command, ",
  332.               NULL, NULL, NULL };
  333.  
  334. keywrd mm_read_keys_2[] = {
  335.     { "answer", 0, (keyval) CMD_ANSWER },
  336.     { "delete", 0, (keyval) CMD_DELETE },
  337.     { "forward", 0, (keyval) CMD_FORWARD },
  338.     { "kill", 0, (keyval) CMD_KILL },
  339.     { "print", 0, (keyval) CMD_PRINT },
  340.     { "remail", 0, (keyval) CMD_REMAIL },
  341.     { "reply", 0, (keyval) CMD_REPLY },
  342.     { "undelete", 0, (keyval) CMD_UNDELETE },
  343. };
  344. CMKEYTAB(mm_read_keytab_2,mm_read_keys_2);
  345. fdb mm_read_fdb_2 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  346.               (pdat)&mm_read_keytab_2, 
  347.               "MESSAGE-HANDLING command, ",
  348.               NULL, NULL, NULL };
  349.  
  350. keywrd mm_read_keys_3[] = {
  351.     { "flag", 0, (keyval) CMD_FLAG },
  352.     { "keyword", 0, (keyval) CMD_KEYWORD },
  353.     { "mark", 0, (keyval) CMD_MARK },
  354.     { "unanswer", 0, (keyval) CMD_UNANSWER },
  355.     { "unflag", 0, (keyval) CMD_UNFLAG },
  356.     { "unkeyword", 0, (keyval) CMD_UNKEYWORD },
  357.     { "unmark", 0, (keyval) CMD_UNMARK },
  358. };
  359. CMKEYTAB(mm_read_keytab_3,mm_read_keys_3);
  360. fdb mm_read_fdb_3 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  361.               (pdat)&mm_read_keytab_3, 
  362.               "MESSAGE-TAGGING command, ",
  363.               NULL, NULL, NULL };
  364.  
  365. keywrd mm_read_keys_4[] = {
  366.     { "copy", 0, (keyval) CMD_COPY },
  367.     { "move", 0, (keyval) CMD_MOVE },
  368.     { "restore-draft", 0, (keyval) CMD_RESTORE_DRAFT },
  369.     { "write", 0, (keyval) CMD_WRITE },
  370. };
  371. CMKEYTAB(mm_read_keytab_4,mm_read_keys_4);
  372. fdb mm_read_fdb_4 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  373.               (pdat)&mm_read_keytab_4, 
  374.               "FILING command, ",
  375.               NULL, NULL, NULL };
  376.  
  377. keywrd mm_read_keys_5[] = {
  378.     { "define", 0, (keyval) CMD_DEFINE },
  379.     { "profile", 0, (keyval) CMD_PROFILE },
  380.     { "save-init", 0, (keyval) CMD_CREATE_INIT },
  381.     { "set", 0, (keyval) CMD_SET },
  382.     { "show", 0, (keyval) CMD_SHOW },
  383. };
  384. CMKEYTAB(mm_read_keytab_5,mm_read_keys_5);
  385. fdb mm_read_fdb_5 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  386.               (pdat)&mm_read_keytab_5, 
  387.               "CUSTOMIZATION command, ",
  388.               NULL, NULL, NULL };
  389.  
  390. keywrd mm_read_keys_6[] = {
  391.     { "check", 0, (keyval) CMD_CHECK },
  392.     { "daytime", 0, (keyval) CMD_DAYTIME },
  393.     { "finger", 0, (keyval) CMD_FINGER },
  394.     { "pwd", 0, (keyval) CMD_PWD },
  395.     { "status", 0, (keyval) CMD_STATUS },
  396.     { "version", 0, (keyval) CMD_VERSION },
  397.     { "who", 0, (keyval) CMD_WHO },
  398. };
  399. CMKEYTAB(mm_read_keytab_6,mm_read_keys_6);
  400. fdb mm_read_fdb_6 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  401.               (pdat)&mm_read_keytab_6, 
  402.               "INFORMATION command, ",
  403.               NULL, NULL, NULL };
  404.  
  405. keywrd mm_read_keys_7[] = {
  406.     { "blank", 0, (keyval) CMD_BLANK },
  407.     { "bug", 0, (keyval) CMD_BUG },
  408.     { "cd", 0, (keyval) CMD_CD },
  409.     { "continue", 0, (keyval) CMD_CONTINUE },
  410.     { "echo", 0, (keyval) CMD_ECHO },
  411.     { "edit", 0, (keyval) CMD_EDIT },
  412.     { "jump", 0, (keyval) CMD_JUMP },
  413.     { "list", 0, (keyval) CMD_LIST },
  414.     { "literal", 0, (keyval) CMD_LITERAL },
  415.     { "push", 0, (keyval) CMD_PUSH },
  416.     { "route", 0 , (keyval) CMD_ROUTE },
  417.     { "send", 0, (keyval) CMD_SEND },
  418.     { "spell", 0, (keyval) CMD_SPELL },
  419.     { "take", 0, (keyval) CMD_TAKE },
  420. };
  421. CMKEYTAB(mm_read_keytab_7,mm_read_keys_7);
  422. fdb mm_read_fdb_7 = { _CMKEY, CM_NLH|KEY_PTR|KEY_WID, NULL, 
  423.               (pdat)&mm_read_keytab_7, 
  424.               "some OTHER command, ",
  425.               NULL, NULL, NULL };
  426.  
  427. keywrd mm_read_keys_abbr[] = {
  428.     { "delete", KEY_INV, (keyval) CMD_DELETE },
  429.     { "headers", KEY_INV, (keyval) CMD_HEADERS },
  430.     { "kill", KEY_INV, (keyval) CMD_KILL },
  431.     { "literal", KEY_INV, (keyval) CMD_LITERAL },
  432.     { "move", KEY_INV, (keyval) CMD_MOVE },
  433.     { "previous", KEY_INV, (keyval) CMD_PREVIOUS },
  434.     { "reply", KEY_INV, (keyval) CMD_REPLY },
  435.     { "send", KEY_INV, (keyval) CMD_SEND },
  436.     { "type", KEY_INV, (keyval) CMD_TYPE },
  437.     { "undelete", KEY_INV, (keyval) CMD_UNDELETE },
  438. };
  439. CMKEYTAB(mm_read_keytab_abbr,mm_read_keys_abbr);
  440. fdb mm_read_fdb_abbr = { _CMKEY, CM_NLH|CM_SDH|KEY_PTR|KEY_WID, NULL, 
  441.                  (pdat)&mm_read_keytab_abbr,
  442.                  NULL, NULL, NULL, "Invalid command" };
  443.  
  444. keywrd mm_read_keys_inv[] = {
  445.     { "create-init", 0, (keyval) CMD_CREATE_INIT },
  446.     { "debug", KEY_INV, (keyval) CMD_DEBUG },
  447.     { "debug-memory", KEY_INV, (keyval) CMD_MEMDEBUG },
  448.     { "headers", 0, (keyval) CMD_HEADERS },
  449.     { "mail", 0, (keyval) CMD_SEND },
  450.     { "z", KEY_INV, (keyval) CMD_Z },
  451. };
  452. CMKEYTAB(mm_read_keytab_inv,mm_read_keys_inv);
  453. fdb mm_read_fdb_inv = { _CMKEY, CM_NLH|CM_SDH|KEY_PTR|KEY_WID, NULL, 
  454.                 (pdat)&mm_read_keytab_inv,
  455.                 NULL, NULL, NULL, NULL };
  456.  
  457.  
  458.  
  459.  
  460. /* 
  461.  * Keyword table for displaying header fields
  462.  */
  463.  
  464. keywrd hdr_keys[] = {
  465.     { "bcc", 0, (keyval) CMD_BCC },
  466.     { "cc", 0, (keyval) CMD_CC },
  467.     { "fcc", 0, (keyval) CMD_FCC },
  468.     { "from", 0, (keyval) CMD_FROM },
  469.     { "in-reply-to", 0, (keyval) CMD_IN_REPLY_TO },
  470.     { "reply-to", 0, (keyval) CMD_REPLY_TO },
  471.     { "subject", 0, (keyval) CMD_SUBJECT },
  472.     { "text", 0, (keyval) CMD_TEXT },
  473.     { "to", 0, (keyval) CMD_TO },
  474.     { "user-header", 0, (keyval) CMD_USER_HEADER }
  475. };
  476.  
  477. keytab hdr_keytab = { sizeof (hdr_keys) / sizeof (keywrd), hdr_keys };
  478. fdb hdr_cmd_fdb = { _CMKEY, 0, nil, (pdat) &hdr_keytab, "header field, " };
  479.  
  480.  
  481. keywrd disp_keys[] = {
  482.     { "all", 0, (keyval) CMD_ALL },
  483.     { "header", 0, (keyval) CMD_HEADER },
  484. };
  485.  
  486. keytab disp_keytab = { sizeof (disp_keys) / sizeof (keywrd), disp_keys};
  487. fdb disp_cmd_fdb = { _CMKEY, 0, nil, (pdat) &disp_keytab, NULL, "all" };
  488.  
  489. keywrd erase_keys[] = {
  490.     { "all", 0, (keyval) CMD_ALL },
  491. };
  492. keytab erase_keytab = { sizeof (erase_keys) / sizeof (keywrd), erase_keys};
  493. fdb erase_cmd_fdb = { _CMKEY, 0, nil, (pdat) &erase_keytab, NULL, "text" };
  494.  
  495. keywrd reply_to_keys[] = {
  496.     { "all", 0, (keyval) CMD_ALL },
  497.     { "none", 0, (keyval) CMD_QUIT },    /* temporary way to abort */
  498.     { "sender", 0, (keyval) CMD_SENDER },
  499. };
  500. keytab reply_to_keytab = { sizeof(reply_to_keys)/sizeof(keywrd),
  501.                    reply_to_keys};
  502. fdb reply_to_fdb = { _CMKEY, 0, nil,  (pdat) &reply_to_keytab, NULL, "sender"};
  503.  
  504. keywrd include_keys[] = {
  505.     { "including", 0, (keyval) CMD_INCLUDE },
  506.     { "not-including", 0, (keyval) CMD_NOINCLUDE },
  507. };
  508. keytab include_keytab = { sizeof(include_keys)/sizeof(keywrd),
  509.                    include_keys};
  510. fdb include_fdb = { _CMKEY, 0, nil,  (pdat) &include_keytab, NULL,
  511.             "not-including"};
  512.  
  513. int
  514. nocmd(n)
  515. int n;
  516. {
  517.     confirm ();
  518.     printf ("Sorry, this command is not yet implemented.\n");
  519. }
  520.  
  521. /*
  522.  * This array is indexed by the main parse loop to dispatch to the
  523.  * appropriate handler routine for each routine.
  524.  */
  525.  
  526. int nocmd (),
  527.     cmd_alias(),
  528.     cmd_bcc (),
  529.     cmd_blank (),
  530.     cmd_browse (),
  531.     cmd_bug (),
  532.     cmd_cc (),
  533.     cmd_cd (),
  534.     cmd_check (),
  535.     cmd_continue(),
  536.     cmd_copy(),
  537.     cmd_count(),
  538.     cmd_create_init(),
  539.     cmd_next(),
  540.     cmd_daytime (),
  541.     cmd_debug (),
  542.     cmd_debug_memory (),
  543.     cmd_define (),
  544.     cmd_display (),
  545.     cmd_echo (),
  546.     cmd_edit(),
  547.     cmd_erase(),
  548.     cmd_exit (),
  549.     cmd_expunge (),
  550.     cmd_fcc(),
  551.     cmd_finger(),
  552.     cmd_forward(), 
  553.     cmd_from (),
  554.     cmd_get (),
  555.     cmd_headers (),
  556.     cmd_help(),
  557.     cmd_in_reply_to(),
  558.     cmd_insert(),
  559.     cmd_jump(),
  560.     cmd_keyword(),
  561.     cmd_list(),
  562.     cmd_literal(),
  563.     cmd_mark (),
  564.     cmd_next (),
  565.     cmd_previous (),
  566.     cmd_print(),
  567.     cmd_profile (),
  568.     cmd_push (),
  569.     cmd_pwd(),
  570.     cmd_quit (),
  571.     cmd_read (),
  572.     cmd_remail(),
  573.     cmd_remove (),
  574.     cmd_reply(),
  575.     cmd_reply_to(),
  576.     cmd_restore_draft(),
  577.     cmd_route(),
  578.     cmd_save_draft(),
  579.     cmd_send (),
  580.     cmd_set (),
  581.     cmd_show (),
  582.     cmd_sort (),
  583.     cmd_smail(),
  584.     cmd_spell (),
  585.     cmd_status (), 
  586.     cmd_subject (),
  587.     cmd_suspend (),
  588.     cmd_take (), 
  589.     cmd_text (),
  590.     cmd_to (),
  591.     cmd_type (),
  592.     cmd_unkeyword (),
  593.     cmd_user_header (),
  594.     cmd_version (),
  595.     cmd_who(),
  596.     cmd_write();
  597.  
  598. int (*mm_cmds[])() = {
  599.     cmd_alias,            /* CMD_ALIAS */
  600.     cmd_reply,            /* CMD_ANSWER */
  601.     nocmd,            /* CMD_BACKTRACK */
  602.     cmd_bcc,            /* CMD_BCC */
  603.     cmd_blank,            /* CMD_BLANK */
  604.     cmd_browse,            /* CMD_BROWSE */
  605.     cmd_bug,            /* CMD_BUG */
  606.     cmd_cc,            /* CMD_CC */
  607.     cmd_cd,            /* CMD_CD */
  608.     cmd_check,            /* CMD_CHECK */
  609.     cmd_continue,        /* CMD_CONTINUE */
  610.     cmd_copy,            /* CMD_COPY */
  611.     cmd_count,            /* CMD_COUNT */
  612.     cmd_create_init,        /* CMD_CREATE_INIT */
  613.     cmd_daytime,        /* CMD_DAYTIME */
  614.     cmd_debug,            /* CMD_DEBUG */
  615.     cmd_debug_memory,        /* CMD_MEMDEBUG */
  616.     cmd_define,            /* CMD_DEFINE */
  617.     cmd_mark,            /* CMD_DELETE */
  618.     cmd_display,        /* CMD_DISPLAY */
  619.     cmd_echo,            /* CMD_ECHO */
  620.     cmd_edit,            /* CMD_EDIT */
  621.     cmd_erase,            /* CMD_ERASE */
  622.     cmd_get,            /* CMD_EXAMINE */
  623.     cmd_exit,            /* CMD_EXIT */
  624.     cmd_expunge,        /* CMD_EXPUNGE */
  625.     cmd_fcc,            /* CMD_FCC */
  626.     cmd_finger,            /* CMD_FINGER */
  627.     cmd_mark,            /* CMD_FLAG */
  628.     nocmd,            /* CMD_FOLLOW */
  629.     cmd_forward,        /* CMD_FORWARD */
  630.     cmd_from,            /* CMD_FROM */
  631.     cmd_get,            /* CMD_GET */
  632.     cmd_headers,        /* CMD_HEADERS */
  633.     cmd_help,            /* CMD_HELP */
  634.     cmd_insert,            /* CMD_INSERT */
  635.     cmd_in_reply_to,        /* CMD_IN_REPLY_TO */
  636.     cmd_jump,            /* CMD_JUMP */
  637.     cmd_keyword,        /* CMD_KEYWORD */
  638.     cmd_next,            /* CMD_KILL */
  639.     cmd_list,            /* CMD_LIST */
  640.     cmd_literal,        /* CMD_LITERAL */
  641.     cmd_mark,            /* CMD_MARK */
  642.     cmd_copy,            /* CMD_MOVE */
  643.     cmd_next,            /* CMD_NEXT */
  644.     cmd_previous,        /* CMD_PREVIOUS */
  645.     cmd_print,            /* CMD_PRINT */
  646.     cmd_profile,        /* CMD_PROFILE */
  647.     cmd_push,            /* CMD_PUSH */
  648.     cmd_pwd,            /* CMD_PWD */
  649.     cmd_quit,            /* CMD_QUIT */
  650.     cmd_quit,            /* CMD_QQUIT */
  651.     cmd_read,            /* CMD_READ */
  652.     cmd_remail,            /* CMD_REMAIL */
  653.     cmd_remove,            /* CMD_REMOVE */
  654.     cmd_reply,            /* CMD_REPLY */
  655.     cmd_reply_to,        /* CMD_REPLY_TO */
  656.     cmd_restore_draft,        /* CMD_RESTORE_DRAFT */
  657.     cmd_read,            /* CMD_REVIEW */
  658.     cmd_route,            /* CMD_ROUTE */
  659.     cmd_save_draft,        /* CMD_SAVE_DRAFT */
  660.     cmd_send,            /* CMD_SEND */
  661.     cmd_set,            /* CMD_SET */
  662.     cmd_show,            /* CMD_SHOW */
  663.     cmd_smail,            /* CMD_SMAIL */
  664.     cmd_sort,            /* CMD_SORT */
  665.     cmd_spell,            /* CMD_SPELL */
  666.     cmd_status,            /* CMD_STATUS */
  667.     cmd_subject,        /* CMD_SUBJECT */
  668.     cmd_suspend,        /* CMD_SUSPEND */
  669.     cmd_take,            /* CMD_TAKE */
  670.     cmd_text,            /* CMD_TEXT */
  671.     cmd_to,            /* CMD_TO */
  672.     cmd_type,            /* CMD_TYPE */
  673.     cmd_mark,            /* CMD_UNANSWER */
  674.     cmd_mark,            /* CMD_UNDELETE */
  675.     cmd_mark,            /* CMD_UNFLAG */
  676.     cmd_unkeyword,        /* CMD_UNKEYWORD */
  677.     cmd_mark,            /* CMD_UNMARK */
  678.     cmd_user_header,        /* CMD_USER_HEADER */
  679.     cmd_version,        /* CMD_VERSION */
  680.     cmd_who,            /* CMD_WHO */
  681.     cmd_write,            /* CMD_WRITE */
  682.     cmd_suspend,        /* CMD_Z */
  683. };
  684.