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