added command clobber which recurses, clobbering the stack
[unix-history] / usr / src / usr.bin / mail / cmdtab.c
index 9950ee5..7265b23 100644 (file)
@@ -8,21 +8,22 @@
  * Define all of the command names and bindings.
  */
 
  * Define all of the command names and bindings.
  */
 
-static char *SccsId = "@(#)cmdtab.c    1.2 %G%";
+static char *SccsId = "@(#)cmdtab.c    2.1 %G%";
 
 extern int type(), preserve(), delete(), undelete(), next(), shell(), schdir();
 extern int save(), help(), headers(), pdot(), strace(), respond(), editor();
 extern int edstop(), exit(), pcmdlist(), sendmail(), from();
 extern int messize(), psalloc(), deltype(), unset(), set(), source();
 extern int pversion(), group(), top(), core(), null(), stouch(), visual();
 
 extern int type(), preserve(), delete(), undelete(), next(), shell(), schdir();
 extern int save(), help(), headers(), pdot(), strace(), respond(), editor();
 extern int edstop(), exit(), pcmdlist(), sendmail(), from();
 extern int messize(), psalloc(), deltype(), unset(), set(), source();
 extern int pversion(), group(), top(), core(), null(), stouch(), visual();
-extern int swrite(), dosh(), file(), echo(), Respond(), scroll();
+extern int swrite(), dosh(), file(), echo(), Respond(), scroll(), ifcmd();
+extern int elsecmd(), endifcmd(), mboxit();
 
 struct cmd cmdtab[] = {
        "next",         next,           NDMLIST,        0,      MMNDEL,
        "alias",        group,          M|RAWLIST,      0,      1000,
        "print",        type,           MSGLIST,        0,      MMNDEL,
        "type",         type,           MSGLIST,        0,      MMNDEL,
 
 struct cmd cmdtab[] = {
        "next",         next,           NDMLIST,        0,      MMNDEL,
        "alias",        group,          M|RAWLIST,      0,      1000,
        "print",        type,           MSGLIST,        0,      MMNDEL,
        "type",         type,           MSGLIST,        0,      MMNDEL,
-       "visual",       visual,         W|I|MSGLIST,    0,      MMNORM,
+       "visual",       visual,         I|MSGLIST,      0,      MMNORM,
        "top",          top,            MSGLIST,        0,      MMNDEL,
        "touch",        stouch,         W|MSGLIST,      0,      MMNDEL,
        "preserve",     preserve,       W|MSGLIST,      0,      MMNDEL,
        "top",          top,            MSGLIST,        0,      MMNDEL,
        "touch",        stouch,         W|MSGLIST,      0,      MMNDEL,
        "preserve",     preserve,       W|MSGLIST,      0,      MMNDEL,
@@ -31,8 +32,8 @@ struct cmd cmdtab[] = {
        "dt",           deltype,        W|MSGLIST,      0,      MMNDEL,
        "undelete",     undelete,       P|MSGLIST,      MDELETED,MMNDEL,
        "unset",        unset,          M|RAWLIST,      1,      1000,
        "dt",           deltype,        W|MSGLIST,      0,      MMNDEL,
        "undelete",     undelete,       P|MSGLIST,      MDELETED,MMNDEL,
        "unset",        unset,          M|RAWLIST,      1,      1000,
-       "mail",         sendmail,       M|I|STRLIST,    0,      0,
-       "mbox",         stouch,         W|MSGLIST,      0,      0,
+       "mail",         sendmail,       R|M|I|STRLIST,  0,      0,
+       "mbox",         mboxit,         W|MSGLIST,      0,      0,
        "!",            shell,          I|STRLIST,      0,      0,
        "chdir",        schdir,         M|STRLIST,      0,      0,
        "cd",           schdir,         M|STRLIST,      0,      0,
        "!",            shell,          I|STRLIST,      0,      0,
        "chdir",        schdir,         M|STRLIST,      0,      0,
        "cd",           schdir,         M|STRLIST,      0,      0,
@@ -44,24 +45,27 @@ struct cmd cmdtab[] = {
        "group",        group,          M|RAWLIST,      0,      1000,
        "write",        swrite,         STRLIST,        0,      0,
        "from",         from,           MSGLIST,        0,      MMNORM,
        "group",        group,          M|RAWLIST,      0,      1000,
        "write",        swrite,         STRLIST,        0,      0,
        "from",         from,           MSGLIST,        0,      MMNORM,
-       "file",         file,           M|RAWLIST,      0,      1,
+       "file",         file,           T|M|RAWLIST,    0,      1,
        "?",            help,           M|NOLIST,       0,      0,
        "z",            scroll,         M|STRLIST,      0,      0,
        "headers",      headers,        MSGLIST,        0,      MMNDEL,
        "help",         help,           M|NOLIST,       0,      0,
        "=",            pdot,           NOLIST,         0,      0,
        "?",            help,           M|NOLIST,       0,      0,
        "z",            scroll,         M|STRLIST,      0,      0,
        "headers",      headers,        MSGLIST,        0,      MMNDEL,
        "help",         help,           M|NOLIST,       0,      0,
        "=",            pdot,           NOLIST,         0,      0,
-       "Reply",        Respond,        I|MSGLIST,      0,      MMNDEL,
-       "Respond",      Respond,        I|MSGLIST,      0,      MMNDEL,
-       "reply",        respond,        I|MSGLIST,      0,      MMNDEL,
-       "respond",      respond,        I|MSGLIST,      0,      MMNDEL,
-       "edit",         editor,         W|I|MSGLIST,    0,      MMNORM,
-       "echo",         echo,           RAWLIST,        0,      1000,
+       "Reply",        Respond,        R|I|MSGLIST,    0,      MMNDEL,
+       "Respond",      Respond,        R|I|MSGLIST,    0,      MMNDEL,
+       "reply",        respond,        R|I|MSGLIST,    0,      MMNDEL,
+       "respond",      respond,        R|I|MSGLIST,    0,      MMNDEL,
+       "edit",         editor,         I|MSGLIST,      0,      MMNORM,
+       "echo",         echo,           M|RAWLIST,      0,      1000,
        "quit",         edstop,         NOLIST,         0,      0,
        "list",         pcmdlist,       M|NOLIST,       0,      0,
        "xit",          exit,           M|NOLIST,       0,      0,
        "exit",         exit,           M|NOLIST,       0,      0,
        "size",         messize,        MSGLIST,        0,      MMNDEL,
        "hold",         preserve,       W|MSGLIST,      0,      MMNDEL,
        "quit",         edstop,         NOLIST,         0,      0,
        "list",         pcmdlist,       M|NOLIST,       0,      0,
        "xit",          exit,           M|NOLIST,       0,      0,
        "exit",         exit,           M|NOLIST,       0,      0,
        "size",         messize,        MSGLIST,        0,      MMNDEL,
        "hold",         preserve,       W|MSGLIST,      0,      MMNDEL,
+       "if",           ifcmd,          F|M|RAWLIST,    1,      1,
+       "else",         elsecmd,        F|M|RAWLIST,    0,      0,
+       "endif",        endifcmd,       F|M|RAWLIST,    0,      0,
        "core",         core,           M|NOLIST,       0,      0,
        "#",            null,           M|NOLIST,       0,      0,
        0,              0,              0,              0,      0
        "core",         core,           M|NOLIST,       0,      0,
        "#",            null,           M|NOLIST,       0,      0,
        0,              0,              0,              0,      0