xref: /dragonfly/usr.bin/mail/cmdtab.c (revision dc71b7ab81c4f5270d3668e1625d94a58895fa7a)
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 };
118