386BSD 0.1 development
[unix-history] / usr / src / usr.bin / ftp / cmdtab.c
index 0e8492f..6661227 100644 (file)
@@ -1,6 +1,39 @@
+/*
+ * Copyright (c) 1985, 1989 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *     This product includes software developed by the University of
+ *     California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
 #ifndef lint
 #ifndef lint
-static char sccsid[] = "@(#)cmdtab.c   4.5 (Berkeley) %G%";
-#endif
+static char sccsid[] = "@(#)cmdtab.c   5.10 (Berkeley) 6/1/90";
+#endif /* not lint */
 
 #include "ftp_var.h"
 
 
 #include "ftp_var.h"
 
@@ -8,105 +41,159 @@ static char sccsid[] = "@(#)cmdtab.c       4.5 (Berkeley) %G%";
  * User FTP -- Command Tables.
  */
 int    setascii(), setbell(), setbinary(), setdebug(), setform();
  * User FTP -- Command Tables.
  */
 int    setascii(), setbell(), setbinary(), setdebug(), setform();
-int    setglob(), sethash(), setmode(), setpeer(), setport ();
+int    setglob(), sethash(), setmode(), setpeer(), setport();
 int    setprompt(), setstruct();
 int    settenex(), settrace(), settype(), setverbose();
 int    setprompt(), setstruct();
 int    settenex(), settrace(), settype(), setverbose();
-int    disconnect();
+int    disconnect(), restart(), reget(), syst();
 int    cd(), lcd(), delete(), mdelete(), user();
 int    ls(), mls(), get(), mget(), help(), append(), put(), mput();
 int    quit(), renamefile(), status();
 int    cd(), lcd(), delete(), mdelete(), user();
 int    ls(), mls(), get(), mget(), help(), append(), put(), mput();
 int    quit(), renamefile(), status();
-int    quote(), rmthelp(), shell();
-int    pwd(), makedir(), removedir();
+int    quote(), rmthelp(), shell(), site();
+int    pwd(), makedir(), removedir(), setcr();
+int    account(), doproxy(), reset(), setcase(), setntrans(), setnmap();
+int    setsunique(), setrunique(), cdup(), macdef(), domacro();
+int    sizecmd(), modtime(), newer(), rmtstatus();
+int    do_chmod(), do_umask(), idle();
 
 
+char   accounthelp[] = "send account command to remote server";
 char   appendhelp[] =  "append to a file";
 char   asciihelp[] =   "set ascii transfer type";
 char   beephelp[] =    "beep when command completed";
 char   binaryhelp[] =  "set binary transfer type";
 char   appendhelp[] =  "append to a file";
 char   asciihelp[] =   "set ascii transfer type";
 char   beephelp[] =    "beep when command completed";
 char   binaryhelp[] =  "set binary transfer type";
+char   casehelp[] =    "toggle mget upper/lower case id mapping";
 char   cdhelp[] =      "change remote working directory";
 char   cdhelp[] =      "change remote working directory";
+char   cduphelp[] =    "change remote working directory to parent directory";
+char   chmodhelp[] =   "change file permissions of remote file";
 char   connecthelp[] = "connect to remote tftp";
 char   connecthelp[] = "connect to remote tftp";
+char   crhelp[] =      "toggle carriage return stripping on ascii gets";
 char   deletehelp[] =  "delete remote file";
 char   debughelp[] =   "toggle/set debugging mode";
 char   dirhelp[] =     "list contents of remote directory";
 char   disconhelp[] =  "terminate ftp session";
 char   deletehelp[] =  "delete remote file";
 char   debughelp[] =   "toggle/set debugging mode";
 char   dirhelp[] =     "list contents of remote directory";
 char   disconhelp[] =  "terminate ftp session";
+char   domachelp[] =   "execute macro";
 char   formhelp[] =    "set file transfer format";
 char   globhelp[] =    "toggle metacharacter expansion of local file names";
 char   hashhelp[] =    "toggle printing `#' for each buffer transferred";
 char   helphelp[] =    "print local help information";
 char   formhelp[] =    "set file transfer format";
 char   globhelp[] =    "toggle metacharacter expansion of local file names";
 char   hashhelp[] =    "toggle printing `#' for each buffer transferred";
 char   helphelp[] =    "print local help information";
+char   idlehelp[] =    "get (set) idle timer on remote side";
 char   lcdhelp[] =     "change local working directory";
 char   lcdhelp[] =     "change local working directory";
-char   lshelp[] =      "nlist contents of remote directory";
+char   lshelp[] =      "list contents of remote directory";
+char   macdefhelp[] =  "define a macro";
 char   mdeletehelp[] = "delete multiple files";
 char   mdirhelp[] =    "list contents of multiple remote directories";
 char   mgethelp[] =    "get multiple files";
 char   mkdirhelp[] =   "make directory on the remote machine";
 char   mdeletehelp[] = "delete multiple files";
 char   mdirhelp[] =    "list contents of multiple remote directories";
 char   mgethelp[] =    "get multiple files";
 char   mkdirhelp[] =   "make directory on the remote machine";
-char   mlshelp[] =     "nlist contents of multiple remote directories";
+char   mlshelp[] =     "list contents of multiple remote directories";
+char   modtimehelp[] = "show last modification time of remote file";
 char   modehelp[] =    "set file transfer mode";
 char   mputhelp[] =    "send multiple files";
 char   modehelp[] =    "set file transfer mode";
 char   mputhelp[] =    "send multiple files";
+char   newerhelp[] =   "get file if remote file is newer than local file ";
+char   nlisthelp[] =   "nlist contents of remote directory";
+char   nmaphelp[] =    "set templates for default file name mapping";
+char   ntranshelp[] =  "set translation table for default file name mapping";
 char   porthelp[] =    "toggle use of PORT cmd for each data connection";
 char   prompthelp[] =  "force interactive prompting on multiple commands";
 char   porthelp[] =    "toggle use of PORT cmd for each data connection";
 char   prompthelp[] =  "force interactive prompting on multiple commands";
+char   proxyhelp[] =   "issue command on alternate connection";
 char   pwdhelp[] =     "print working directory on remote machine";
 char   quithelp[] =    "terminate ftp session and exit";
 char   quotehelp[] =   "send arbitrary ftp command";
 char   receivehelp[] = "receive file";
 char   pwdhelp[] =     "print working directory on remote machine";
 char   quithelp[] =    "terminate ftp session and exit";
 char   quotehelp[] =   "send arbitrary ftp command";
 char   receivehelp[] = "receive file";
+char   regethelp[] =   "get file restarting at end of local file";
 char   remotehelp[] =  "get help from remote server";
 char   renamehelp[] =  "rename file";
 char   remotehelp[] =  "get help from remote server";
 char   renamehelp[] =  "rename file";
+char   restarthelp[]=  "restart file transfer at bytecount";
 char   rmdirhelp[] =   "remove directory on the remote machine";
 char   rmdirhelp[] =   "remove directory on the remote machine";
+char   rmtstatushelp[]="show status of remote machine";
+char   runiquehelp[] = "toggle store unique for local files";
+char   resethelp[] =   "clear queued command replies";
 char   sendhelp[] =    "send one file";
 char   sendhelp[] =    "send one file";
+char   sitehelp[] =    "send site specific command to remote server\n\t\tTry \"rhelp site\" or \"site help\" for more information";
 char   shellhelp[] =   "escape to the shell";
 char   shellhelp[] =   "escape to the shell";
+char   sizecmdhelp[] = "show size of remote file";
 char   statushelp[] =  "show current status";
 char   structhelp[] =  "set file transfer structure";
 char   statushelp[] =  "show current status";
 char   structhelp[] =  "set file transfer structure";
+char   suniquehelp[] = "toggle store unique on remote machine";
+char   systemhelp[] =  "show remote system type";
 char   tenexhelp[] =   "set tenex file transfer type";
 char   tracehelp[] =   "toggle packet tracing";
 char   typehelp[] =    "set file transfer type";
 char   tenexhelp[] =   "set tenex file transfer type";
 char   tracehelp[] =   "toggle packet tracing";
 char   typehelp[] =    "set file transfer type";
+char   umaskhelp[] =   "get (set) umask on remote side";
 char   userhelp[] =    "send new user information";
 char   verbosehelp[] = "toggle verbose mode";
 
 struct cmd cmdtab[] = {
 char   userhelp[] =    "send new user information";
 char   verbosehelp[] = "toggle verbose mode";
 
 struct cmd cmdtab[] = {
-       { "!",          shellhelp,      0,      0,      shell },
-       { "append",     appendhelp,     1,      1,      put },
-       { "ascii",      asciihelp,      0,      1,      setascii },
-       { "bell",       beephelp,       0,      0,      setbell },
-       { "binary",     binaryhelp,     0,      1,      setbinary },
-       { "bye",        quithelp,       0,      0,      quit },
-       { "cd",         cdhelp,         0,      1,      cd },
-       { "close",      disconhelp,     0,      1,      disconnect },
-       { "delete",     deletehelp,     0,      1,      delete },
-       { "debug",      debughelp,      0,      0,      setdebug },
-       { "dir",        dirhelp,        1,      1,      ls },
-       { "form",       formhelp,       0,      1,      setform },
-       { "get",        receivehelp,    1,      1,      get },
-       { "glob",       globhelp,       0,      0,      setglob },
-       { "hash",       hashhelp,       0,      0,      sethash },
-       { "help",       helphelp,       0,      0,      help },
-       { "lcd",        lcdhelp,        0,      0,      lcd },
-       { "ls",         lshelp,         1,      1,      ls },
-       { "mdelete",    mdeletehelp,    1,      1,      mdelete },
-       { "mdir",       mdirhelp,       1,      1,      mls },
-       { "mget",       mgethelp,       1,      1,      mget },
-       { "mkdir",      mkdirhelp,      0,      1,      makedir },
-       { "mls",        mlshelp,        1,      1,      mls },
-       { "mode",       modehelp,       0,      1,      setmode },
-       { "mput",       mputhelp,       1,      1,      mput },
-       { "open",       connecthelp,    0,      0,      setpeer },
-       { "prompt",     prompthelp,     0,      0,      setprompt },
-       { "sendport",   porthelp,       0,      0,      setport },
-       { "put",        sendhelp,       1,      1,      put },
-       { "pwd",        pwdhelp,        0,      1,      pwd },
-       { "quit",       quithelp,       0,      0,      quit },
-       { "quote",      quotehelp,      1,      1,      quote },
-       { "recv",       receivehelp,    1,      1,      get },
-       { "remotehelp", remotehelp,     0,      1,      rmthelp },
-       { "rename",     renamehelp,     0,      1,      renamefile },
-       { "rmdir",      rmdirhelp,      0,      1,      removedir },
-       { "send",       sendhelp,       1,      1,      put },
-       { "status",     statushelp,     0,      0,      status },
-       { "struct",     structhelp,     0,      1,      setstruct },
-       { "tenex",      tenexhelp,      0,      1,      settenex },
-       { "trace",      tracehelp,      0,      0,      settrace },
-       { "type",       typehelp,       0,      1,      settype },
-       { "user",       userhelp,       0,      1,      user },
-       { "verbose",    verbosehelp,    0,      0,      setverbose },
-       { "?",          helphelp,       0,      0,      help },
+       { "!",          shellhelp,      0,      0,      0,      shell },
+       { "$",          domachelp,      1,      0,      0,      domacro },
+       { "account",    accounthelp,    0,      1,      1,      account},
+       { "append",     appendhelp,     1,      1,      1,      put },
+       { "ascii",      asciihelp,      0,      1,      1,      setascii },
+       { "bell",       beephelp,       0,      0,      0,      setbell },
+       { "binary",     binaryhelp,     0,      1,      1,      setbinary },
+       { "bye",        quithelp,       0,      0,      0,      quit },
+       { "case",       casehelp,       0,      0,      1,      setcase },
+       { "cd",         cdhelp,         0,      1,      1,      cd },
+       { "cdup",       cduphelp,       0,      1,      1,      cdup },
+       { "chmod",      chmodhelp,      0,      1,      1,      do_chmod },
+       { "close",      disconhelp,     0,      1,      1,      disconnect },
+       { "cr",         crhelp,         0,      0,      0,      setcr },
+       { "delete",     deletehelp,     0,      1,      1,      delete },
+       { "debug",      debughelp,      0,      0,      0,      setdebug },
+       { "dir",        dirhelp,        1,      1,      1,      ls },
+       { "disconnect", disconhelp,     0,      1,      1,      disconnect },
+       { "form",       formhelp,       0,      1,      1,      setform },
+       { "get",        receivehelp,    1,      1,      1,      get },
+       { "glob",       globhelp,       0,      0,      0,      setglob },
+       { "hash",       hashhelp,       0,      0,      0,      sethash },
+       { "help",       helphelp,       0,      0,      1,      help },
+       { "idle",       idlehelp,       0,      1,      1,      idle },
+       { "image",      binaryhelp,     0,      1,      1,      setbinary },
+       { "lcd",        lcdhelp,        0,      0,      0,      lcd },
+       { "ls",         lshelp,         1,      1,      1,      ls },
+       { "macdef",     macdefhelp,     0,      0,      0,      macdef },
+       { "mdelete",    mdeletehelp,    1,      1,      1,      mdelete },
+       { "mdir",       mdirhelp,       1,      1,      1,      mls },
+       { "mget",       mgethelp,       1,      1,      1,      mget },
+       { "mkdir",      mkdirhelp,      0,      1,      1,      makedir },
+       { "mls",        mlshelp,        1,      1,      1,      mls },
+       { "mode",       modehelp,       0,      1,      1,      setmode },
+       { "modtime",    modtimehelp,    0,      1,      1,      modtime },
+       { "mput",       mputhelp,       1,      1,      1,      mput },
+       { "newer",      newerhelp,      1,      1,      1,      newer },
+       { "nmap",       nmaphelp,       0,      0,      1,      setnmap },
+       { "nlist",      nlisthelp,      1,      1,      1,      ls },
+       { "ntrans",     ntranshelp,     0,      0,      1,      setntrans },
+       { "open",       connecthelp,    0,      0,      1,      setpeer },
+       { "prompt",     prompthelp,     0,      0,      0,      setprompt },
+       { "proxy",      proxyhelp,      0,      0,      1,      doproxy },
+       { "sendport",   porthelp,       0,      0,      0,      setport },
+       { "put",        sendhelp,       1,      1,      1,      put },
+       { "pwd",        pwdhelp,        0,      1,      1,      pwd },
+       { "quit",       quithelp,       0,      0,      0,      quit },
+       { "quote",      quotehelp,      1,      1,      1,      quote },
+       { "recv",       receivehelp,    1,      1,      1,      get },
+       { "reget",      regethelp,      1,      1,      1,      reget },
+       { "rstatus",    rmtstatushelp,  0,      1,      1,      rmtstatus },
+       { "rhelp",      remotehelp,     0,      1,      1,      rmthelp },
+       { "rename",     renamehelp,     0,      1,      1,      renamefile },
+       { "reset",      resethelp,      0,      1,      1,      reset },
+       { "restart",    restarthelp,    1,      1,      1,      restart },
+       { "rmdir",      rmdirhelp,      0,      1,      1,      removedir },
+       { "runique",    runiquehelp,    0,      0,      1,      setrunique },
+       { "send",       sendhelp,       1,      1,      1,      put },
+       { "site",       sitehelp,       0,      1,      1,      site },
+       { "size",       sizecmdhelp,    1,      1,      1,      sizecmd },
+       { "status",     statushelp,     0,      0,      1,      status },
+       { "struct",     structhelp,     0,      1,      1,      setstruct },
+       { "system",     systemhelp,     0,      1,      1,      syst },
+       { "sunique",    suniquehelp,    0,      0,      1,      setsunique },
+       { "tenex",      tenexhelp,      0,      1,      1,      settenex },
+       { "trace",      tracehelp,      0,      0,      0,      settrace },
+       { "type",       typehelp,       0,      1,      1,      settype },
+       { "user",       userhelp,       0,      1,      1,      user },
+       { "umask",      umaskhelp,      0,      1,      1,      do_umask },
+       { "verbose",    verbosehelp,    0,      0,      0,      setverbose },
+       { "?",          helphelp,       0,      0,      1,      help },
        { 0 },
 };
 
        { 0 },
 };
 
-int    NCMDS = sizeof (cmdtab) / sizeof (cmdtab[0]);
+int    NCMDS = (sizeof (cmdtab) / sizeof (cmdtab[0])) - 1;