Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / usr.bin / ftp / cmdtab.c
1 /* $FreeBSD: src/usr.bin/ftp/cmdtab.c,v 1.7.2.2 2002/08/27 09:55:08 yar Exp $   */
2 /* $DragonFly: src/usr.bin/ftp/Attic/cmdtab.c,v 1.2 2003/06/17 04:29:26 dillon Exp $    */
3 /*      $NetBSD: cmdtab.c,v 1.17 1997/08/18 10:20:17 lukem Exp $        */
4
5 /*
6  * Copyright (c) 1985, 1989, 1993, 1994
7  *      The Regents of the University of California.  All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  * 3. All advertising materials mentioning features or use of this software
18  *    must display the following acknowledgement:
19  *      This product includes software developed by the University of
20  *      California, Berkeley and its contributors.
21  * 4. Neither the name of the University nor the names of its contributors
22  *    may be used to endorse or promote products derived from this software
23  *    without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35  * SUCH DAMAGE.
36  *
37  * @(#)cmdtab.c 8.4 (Berkeley) 10/9/94
38  * $NetBSD: cmdtab.c,v 1.17 1997/08/18 10:20:17 lukem Exp $
39  * $FreeBSD: src/usr.bin/ftp/cmdtab.c,v 1.7.2.2 2002/08/27 09:55:08 yar Exp $
40  */
41
42 #include <sys/cdefs.h>
43
44 #include <stdio.h>
45 #include "ftp_var.h"
46
47 /*
48  * User FTP -- Command Tables.
49  */
50
51 char    accounthelp[] = "send account command to remote server";
52 char    appendhelp[] =  "append to a file";
53 char    asciihelp[] =   "set ascii transfer type";
54 char    beephelp[] =    "beep when command completed";
55 char    binaryhelp[] =  "set binary transfer type";
56 char    casehelp[] =    "toggle mget upper/lower case id mapping";
57 char    cdhelp[] =      "change remote working directory";
58 char    cduphelp[] =    "change remote working directory to parent directory";
59 char    chmodhelp[] =   "change file permissions of remote file";
60 char    connecthelp[] = "connect to remote ftp server";
61 char    crhelp[] =      "toggle carriage return stripping on ascii gets";
62 char    debughelp[] =   "toggle/set debugging mode";
63 char    deletehelp[] =  "delete remote file";
64 char    dirhelp[] =     "list contents of remote directory";
65 char    disconhelp[] =  "terminate ftp session";
66 char    domachelp[] =   "execute macro";
67 #ifndef SMALL
68 char    edithelp[] =    "toggle command line editing";
69 #endif /* !SMALL */
70 char    epsv4help[] =   "toggle use of EPSV/EPRT on IPv4 ftp";
71 char    formhelp[] =    "set file transfer format";
72 char    gatehelp[] =    "toggle gate-ftp; specify host[:port] to change proxy";
73 char    globhelp[] =    "toggle metacharacter expansion of local file names";
74 char    hashhelp[] =    "toggle printing `#' marks; specify number to set size";
75 char    helphelp[] =    "print local help information";
76 char    idlehelp[] =    "get (set) idle timer on remote side";
77 char    lcdhelp[] =     "change local working directory";
78 char    lpwdhelp[] =    "print local working directory";
79 char    lshelp[] =      "list contents of remote directory";
80 char    macdefhelp[] =  "define a macro";
81 char    mdeletehelp[] = "delete multiple files";
82 char    mdirhelp[] =    "list contents of multiple remote directories";
83 char    mgethelp[] =    "get multiple files";
84 char    mkdirhelp[] =   "make directory on the remote machine";
85 char    mlshelp[] =     "list contents of multiple remote directories";
86 char    modehelp[] =    "set file transfer mode";
87 char    modtimehelp[] = "show last modification time of remote file";
88 char    mputhelp[] =    "send multiple files";
89 char    newerhelp[] =   "get file if remote file is newer than local file ";
90 char    nlisthelp[] =   "nlist contents of remote directory";
91 char    nmaphelp[] =    "set templates for default file name mapping";
92 char    ntranshelp[] =  "set translation table for default file name mapping";
93 char    pagehelp[] =    "view a remote file through your pager";
94 char    passivehelp[] = "toggle passive transfer mode";
95 char    porthelp[] =    "toggle use of PORT cmd for each data connection";
96 char    preservehelp[] ="toggle preservation of modification time of "
97                         "retreived files";
98 char    progresshelp[] ="toggle transfer progress meter";
99 char    prompthelp[] =  "force interactive prompting on multiple commands";
100 char    proxyhelp[] =   "issue command on alternate connection";
101 char    pwdhelp[] =     "print working directory on remote machine";
102 char    quithelp[] =    "terminate ftp session and exit";
103 char    quotehelp[] =   "send arbitrary ftp command";
104 char    receivehelp[] = "receive file";
105 char    regethelp[] =   "get file restarting at end of local file";
106 char    remotehelp[] =  "get help from remote server";
107 char    renamehelp[] =  "rename file";
108 char    resethelp[] =   "clear queued command replies";
109 char    restarthelp[]=  "restart file transfer at bytecount";
110 char    restricthelp[]= "toggle restriction of data port range";
111 char    rmdirhelp[] =   "remove directory on the remote machine";
112 char    rmtstatushelp[]="show status of remote machine";
113 char    runiquehelp[] = "toggle store unique for local files";
114 char    sendhelp[] =    "send one file";
115 char    shellhelp[] =   "escape to the shell";
116 char    sitehelp[] =    "send site specific command to remote server\n"
117                         "\t\tTry \"rhelp site\" or \"site help\" "
118                         "for more information";
119 char    sizecmdhelp[] = "show size of remote file";
120 char    statushelp[] =  "show current status";
121 char    structhelp[] =  "set file transfer structure";
122 char    suniquehelp[] = "toggle store unique on remote machine";
123 char    systemhelp[] =  "show remote system type";
124 char    tenexhelp[] =   "set tenex file transfer type";
125 char    tracehelp[] =   "toggle packet tracing";
126 char    typehelp[] =    "set file transfer type";
127 char    umaskhelp[] =   "get (set) umask on remote side";
128 char    userhelp[] =    "send new user information";
129 char    verbosehelp[] = "toggle verbose mode";
130
131 #ifdef SMALL
132 #define CMPL(x)
133 #define CMPL0
134 #else  /* !SMALL */
135 #define CMPL(x) __STRING(x), 
136 #define CMPL0   "",
137 #endif /* !SMALL */
138
139 struct cmd cmdtab[] = {
140         { "!",          shellhelp,      0, 0, 0, CMPL0          shell },
141         { "$",          domachelp,      1, 0, 0, CMPL0          domacro },
142         { "account",    accounthelp,    0, 1, 1, CMPL0          account},
143         { "append",     appendhelp,     1, 1, 1, CMPL(lr)       put },
144         { "ascii",      asciihelp,      0, 1, 1, CMPL0          setascii },
145         { "bell",       beephelp,       0, 0, 0, CMPL0          setbell },
146         { "binary",     binaryhelp,     0, 1, 1, CMPL0          setbinary },
147         { "bye",        quithelp,       0, 0, 0, CMPL0          quit },
148         { "case",       casehelp,       0, 0, 1, CMPL0          setcase },
149         { "cd",         cdhelp,         0, 1, 1, CMPL(r)        cd },
150         { "cdup",       cduphelp,       0, 1, 1, CMPL0          cdup },
151         { "chmod",      chmodhelp,      0, 1, 1, CMPL(nr)       do_chmod },
152         { "close",      disconhelp,     0, 1, 1, CMPL0          disconnect },
153         { "cr",         crhelp,         0, 0, 0, CMPL0          setcr },
154         { "debug",      debughelp,      0, 0, 0, CMPL0          setdebug },
155         { "delete",     deletehelp,     0, 1, 1, CMPL(r)        delete },
156         { "dir",        dirhelp,        1, 1, 1, CMPL(rl)       ls },
157         { "disconnect", disconhelp,     0, 1, 1, CMPL0          disconnect },
158 #ifndef SMALL
159         { "edit",       edithelp,       0, 0, 0, CMPL0          setedit },
160 #endif /* !SMALL */
161         { "epsv4",      epsv4help,      0, 0, 0, CMPL0          setepsv4 },
162         { "exit",       quithelp,       0, 0, 0, CMPL0          quit },
163         { "form",       formhelp,       0, 1, 1, CMPL0          setform },
164         { "ftp",        connecthelp,    0, 0, 1, CMPL0          setpeer },
165         { "get",        receivehelp,    1, 1, 1, CMPL(rl)       get },
166         { "gate",       gatehelp,       0, 0, 0, CMPL0          setgate },
167         { "glob",       globhelp,       0, 0, 0, CMPL0          setglob },
168         { "hash",       hashhelp,       0, 0, 0, CMPL0          sethash },
169         { "help",       helphelp,       0, 0, 1, CMPL(C)        help },
170         { "idle",       idlehelp,       0, 1, 1, CMPL0          idle },
171         { "image",      binaryhelp,     0, 1, 1, CMPL0          setbinary },
172         { "lcd",        lcdhelp,        0, 0, 0, CMPL(l)        lcd },
173         { "less",       pagehelp,       1, 1, 1, CMPL(r)        page },
174         { "lpwd",       lpwdhelp,       0, 0, 0, CMPL0          lpwd },
175         { "ls",         lshelp,         1, 1, 1, CMPL(rl)       ls },
176         { "macdef",     macdefhelp,     0, 0, 0, CMPL0          macdef },
177         { "mdelete",    mdeletehelp,    1, 1, 1, CMPL(R)        mdelete },
178         { "mdir",       mdirhelp,       1, 1, 1, CMPL(R)        mls },
179         { "mget",       mgethelp,       1, 1, 1, CMPL(R)        mget },
180         { "mkdir",      mkdirhelp,      0, 1, 1, CMPL(r)        makedir },
181         { "mls",        mlshelp,        1, 1, 1, CMPL(R)        mls },
182         { "mode",       modehelp,       0, 1, 1, CMPL0          setftmode },
183         { "modtime",    modtimehelp,    0, 1, 1, CMPL(r)        modtime },
184         { "more",       pagehelp,       1, 1, 1, CMPL(r)        page },
185         { "mput",       mputhelp,       1, 1, 1, CMPL(L)        mput },
186         { "msend",      mputhelp,       1, 1, 1, CMPL(L)        mput },
187         { "newer",      newerhelp,      1, 1, 1, CMPL(r)        newer },
188         { "nlist",      nlisthelp,      1, 1, 1, CMPL(rl)       ls },
189         { "nmap",       nmaphelp,       0, 0, 1, CMPL0          setnmap },
190         { "ntrans",     ntranshelp,     0, 0, 1, CMPL0          setntrans },
191         { "open",       connecthelp,    0, 0, 1, CMPL0          setpeer },
192         { "page",       pagehelp,       1, 1, 1, CMPL(r)        page },
193         { "passive",    passivehelp,    0, 0, 0, CMPL0          setpassive },
194         { "preserve",   preservehelp,   0, 0, 0, CMPL0          setpreserve },
195         { "progress",   progresshelp,   0, 0, 0, CMPL0          setprogress },
196         { "prompt",     prompthelp,     0, 0, 0, CMPL0          setprompt },
197         { "proxy",      proxyhelp,      0, 0, 1, CMPL(c)        doproxy },
198         { "put",        sendhelp,       1, 1, 1, CMPL(lr)       put },
199         { "pwd",        pwdhelp,        0, 1, 1, CMPL0          pwd },
200         { "quit",       quithelp,       0, 0, 0, CMPL0          quit },
201         { "quote",      quotehelp,      1, 1, 1, CMPL0          quote },
202         { "recv",       receivehelp,    1, 1, 1, CMPL(rl)       get },
203         { "reget",      regethelp,      1, 1, 1, CMPL(rl)       reget },
204         { "rename",     renamehelp,     0, 1, 1, CMPL(rr)       renamefile },
205         { "reset",      resethelp,      0, 1, 1, CMPL0          reset },
206         { "restart",    restarthelp,    1, 1, 1, CMPL0          restart },
207         { "restrict",   restricthelp,   0, 0, 0, CMPL0          setrestrict },
208         { "rhelp",      remotehelp,     0, 1, 1, CMPL0          rmthelp },
209         { "rmdir",      rmdirhelp,      0, 1, 1, CMPL(r)        removedir },
210         { "rstatus",    rmtstatushelp,  0, 1, 1, CMPL(r)        rmtstatus },
211         { "runique",    runiquehelp,    0, 0, 1, CMPL0          setrunique },
212         { "send",       sendhelp,       1, 1, 1, CMPL(lr)       put },
213         { "sendport",   porthelp,       0, 0, 0, CMPL0          setport },
214         { "site",       sitehelp,       0, 1, 1, CMPL0          site },
215         { "size",       sizecmdhelp,    1, 1, 1, CMPL(r)        sizecmd },
216         { "status",     statushelp,     0, 0, 1, CMPL0          status },
217         { "struct",     structhelp,     0, 1, 1, CMPL0          setstruct },
218         { "sunique",    suniquehelp,    0, 0, 1, CMPL0          setsunique },
219         { "system",     systemhelp,     0, 1, 1, CMPL0          syst },
220         { "tenex",      tenexhelp,      0, 1, 1, CMPL0          settenex },
221         { "trace",      tracehelp,      0, 0, 0, CMPL0          settrace },
222         { "type",       typehelp,       0, 1, 1, CMPL0          settype },
223         { "umask",      umaskhelp,      0, 1, 1, CMPL0          do_umask },
224         { "user",       userhelp,       0, 1, 1, CMPL0          user },
225         { "verbose",    verbosehelp,    0, 0, 0, CMPL0          setverbose },
226         { "?",          helphelp,       0, 0, 1, CMPL(C)        help },
227         { 0 },
228 };
229
230 int     NCMDS = (sizeof(cmdtab) / sizeof(cmdtab[0])) - 1;