a4370090fdfe05db7f6e087050353ccc37620356
[dragonfly.git] / usr.bin / mail / cmdtab.c
1 /*
2  * Copyright (c) 1980, 1993
3  *      The Regents of the University of California.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. All advertising materials mentioning features or use of this software
14  *    must display the following acknowledgement:
15  *      This product includes software developed by the University of
16  *      California, Berkeley and its contributors.
17  * 4. Neither the name of the University nor the names of its contributors
18  *    may be used to endorse or promote products derived from this software
19  *    without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31  * SUCH DAMAGE.
32  *
33  * @(#)cmdtab.c 8.1 (Berkeley) 6/6/93
34  * $FreeBSD: src/usr.bin/mail/cmdtab.c,v 1.2.6.3 2003/01/06 05:46:03 mikeh Exp $
35  * $DragonFly: src/usr.bin/mail/cmdtab.c,v 1.2 2003/06/17 04:29:28 dillon Exp $
36  */
37
38 #include "def.h"
39 #include "extern.h"
40
41 /*
42  * Mail -- a mail program
43  *
44  * Define all of the command names and bindings.
45  */
46
47 const struct cmd cmdtab[] = {
48         /*                                              msgmask msgflag  */
49         /* command      function        argtype         result  & mask   */
50         /* -------      --------        -------         ------  -------  */
51         { "next",       next,           NDMLIST,        0,      MMNDEL  },
52         { "alias",      group,          M|RAWLIST,      0,      1000    },
53         { "print",      type,           MSGLIST,        0,      MMNDEL  },
54         { "type",       type,           MSGLIST,        0,      MMNDEL  },
55         { "Type",       Type,           MSGLIST,        0,      MMNDEL  },
56         { "Print",      Type,           MSGLIST,        0,      MMNDEL  },
57         { "visual",     visual,         I|MSGLIST,      0,      MMNORM  },
58         { "top",        top,            MSGLIST,        0,      MMNDEL  },
59         { "touch",      stouch,         W|MSGLIST,      0,      MMNDEL  },
60         { "preserve",   preserve,       W|MSGLIST,      0,      MMNDEL  },
61         { "delete",     delete,         W|P|MSGLIST,    0,      MMNDEL  },
62         { "dp",         deltype,        W|MSGLIST,      0,      MMNDEL  },
63         { "dt",         deltype,        W|MSGLIST,      0,      MMNDEL  },
64         { "undelete",   undelete_messages, P|MSGLIST,   MDELETED,MMNDEL },
65         { "unset",      unset,          M|RAWLIST,      1,      1000    },
66         { "mail",       sendmail,       R|M|I|STRLIST,  0,      0       },
67         { "mbox",       mboxit,         W|MSGLIST,      0,      0       },
68         { "more",       more,           MSGLIST,        0,      MMNDEL  },
69         { "page",       more,           MSGLIST,        0,      MMNDEL  },
70         { "More",       More,           MSGLIST,        0,      MMNDEL  },
71         { "Page",       More,           MSGLIST,        0,      MMNDEL  },
72         { "unread",     unread,         MSGLIST,        0,      MMNDEL  },
73         { "!",          shell,          I|STRLIST,      0,      0       },
74         { "copy",       copycmd,        M|STRLIST,      0,      0       },
75         { "chdir",      schdir,         M|RAWLIST,      0,      1       },
76         { "cd",         schdir,         M|RAWLIST,      0,      1       },
77         { "save",       save,           STRLIST,        0,      0       },
78         { "source",     source,         M|RAWLIST,      1,      1       },
79         { "set",        set,            M|RAWLIST,      0,      1000    },
80         { "shell",      dosh,           I|NOLIST,       0,      0       },
81         { "version",    pversion,       M|NOLIST,       0,      0       },
82         { "group",      group,          M|RAWLIST,      0,      1000    },
83         { "write",      swrite,         STRLIST,        0,      0       },
84         { "from",       from,           MSGLIST,        0,      MMNORM  },
85         { "file",       file,           T|M|RAWLIST,    0,      1       },
86         { "folder",     file,           T|M|RAWLIST,    0,      1       },
87         { "folders",    folders,        T|M|NOLIST,     0,      0       },
88         { "?",          help,           M|NOLIST,       0,      0       },
89         { "z",          scroll,         M|STRLIST,      0,      0       },
90         { "headers",    headers,        MSGLIST,        0,      MMNDEL  },
91         { "help",       help,           M|NOLIST,       0,      0       },
92         { "=",          pdot,           NOLIST,         0,      0       },
93         { "Reply",      Respond,        R|I|MSGLIST,    0,      MMNDEL  },
94         { "Respond",    Respond,        R|I|MSGLIST,    0,      MMNDEL  },
95         { "reply",      respond,        R|I|MSGLIST,    0,      MMNDEL  },
96         { "respond",    respond,        R|I|MSGLIST,    0,      MMNDEL  },
97         { "edit",       editor,         I|MSGLIST,      0,      MMNORM  },
98         { "echo",       echo,           M|RAWLIST,      0,      1000    },
99         { "quit",       quitcmd,        NOLIST,         0,      0       },
100         { "list",       pcmdlist,       M|NOLIST,       0,      0       },
101         { "xit",        rexit,          M|NOLIST,       0,      0       },
102         { "exit",       rexit,          M|NOLIST,       0,      0       },
103         { "size",       messize,        MSGLIST,        0,      MMNDEL  },
104         { "hold",       preserve,       W|MSGLIST,      0,      MMNDEL  },
105         { "if",         ifcmd,          F|M|RAWLIST,    1,      1       },
106         { "else",       elsecmd,        F|M|RAWLIST,    0,      0       },
107         { "endif",      endifcmd,       F|M|RAWLIST,    0,      0       },
108         { "alternates", alternates,     M|RAWLIST,      0,      1000    },
109         { "ignore",     igfield,        M|RAWLIST,      0,      1000    },
110         { "discard",    igfield,        M|RAWLIST,      0,      1000    },
111         { "retain",     retfield,       M|RAWLIST,      0,      1000    },
112         { "saveignore", saveigfield,    M|RAWLIST,      0,      1000    },
113         { "savediscard",saveigfield,    M|RAWLIST,      0,      1000    },
114         { "saveretain", saveretfield,   M|RAWLIST,      0,      1000    },
115 /*      { "Header",     Header,         STRLIST,        0,      1000    }, */
116         { "core",       core,           M|NOLIST,       0,      0       },
117         { "#",          null,           M|NOLIST,       0,      0       },
118         { "clobber",    clobber,        M|RAWLIST,      0,      1       },
119         { "inc",        inc,            T|NOLIST,       0,      0       },
120         { 0,            0,              0,              0,      0       }
121 };