home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / UNIX / Networking / ncftp-2.4.2-MIHS / src / Cmdlist.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-10-18  |  9.4 KB  |  491 lines

  1. /* Cmdlist.c */
  2.  
  3. #include "Sys.h"
  4. #include "Curses.h"
  5.  
  6. #include "Util.h"
  7. #include "Main.h"
  8. #include "Open.h"
  9. #include "Cmds.h"
  10. #include "Glob.h"
  11. #include "List.h"
  12. #include "Get.h"
  13. #include "Put.h"
  14. #include "Hostwin.h"
  15. #include "Prefs.h"
  16. #include "Cmdline.h"
  17. #include "Complete.h"
  18.  
  19. /* The command list.  I suppose they don't really need to be in alphabetical
  20.  * order, but some order is better than total chaos.
  21.  */
  22. Command gCommands[] = {
  23.     { "?",
  24.         kCmdHidden,
  25.         HelpCmd,
  26.         kNoMin, kNoMax,
  27.         "[optional commands]",
  28.         "shows commands, or detailed help on specified commands",
  29.         kCompleteCmd
  30.     },
  31.     { "!",
  32.         0,
  33.         ShellCmd,
  34.         kNoMin, kNoMax,
  35.         "[command]",
  36.         "Executes specified command, or if none given, runs a shell",
  37.         kCompleteNone
  38.     },
  39.     { "ascii",
  40.         kCmdMustBeConnected | kCmdHidden | kCmdWaitMsg,
  41.         TypeCmd,
  42.         0, 0,
  43.         "",
  44.         "sets the file transfer type to ASCII text",
  45.         kCompleteNone
  46.     },
  47.     { "binary",
  48.         kCmdMustBeConnected | kCmdHidden | kCmdWaitMsg,
  49.         TypeCmd,
  50.         0, 0,
  51.         "",
  52.         "sets the file transfer type to binary/image",
  53.         kCompleteNone
  54.     },
  55.     { "bookmark",
  56.         kCmdMustBeConnected,
  57.         BookmarkCmd,
  58.         1, 1,
  59.         "<bookmark-name-to-save-as>",
  60.         "Creates or updates a bookmark using the current host and directory",
  61.         kCompleteHost
  62.     },
  63.     { "bookmarks",
  64.         kCmdMustBeDisconnected,
  65.         (CmdProc) HostsCmd,
  66.         kNoMin, kNoMax,
  67.         "",
  68.         "lets you edit the settings for each bookmark",
  69.         kCompleteNone
  70.     },
  71.     { "bye",
  72.         kCmdHidden | kCmdWaitMsg,
  73.         (CmdProc) QuitCmd,
  74.         0, 0,
  75.         "",
  76.         "exits NcFTP",
  77.         kCompleteNone
  78.     },
  79.     { "cat",
  80.         kCmdMustBeConnected,
  81.         CatCmd,
  82.         1, kNoMax,
  83.         "file1 [file2...]",
  84.         "views a file from the remote host",
  85.         kCompleteFile
  86.     },
  87.     { "cd",
  88.         kCmdMustBeConnected | kCmdWaitMsg,
  89.         ChdirCmd,
  90.         1, 1,
  91.         "<directory>",
  92.         "changes remote working directory",
  93.         kCompleteDir
  94.     },
  95.     { "close",
  96.         kCmdMustBeConnected | kCmdWaitMsg,
  97.         (CmdProc) CloseCmd,
  98.         0, 0,
  99.         "",
  100.         "closes the connection to the remote host",
  101.         kCompleteNone
  102.     },
  103.     { "create",
  104.         kCmdMustBeConnected | kCmdWaitMsg,
  105.         CreateCmd,
  106.         1, 1,
  107.         "empty-file-name",
  108.         "creates an empty file on the remote host",
  109.         kCompleteNone
  110.     },
  111.     { "debug",
  112.         0,
  113.         DebugCmd,
  114.         kNoMin, kNoMax,
  115.         "[debug level]",
  116.         "sets debug mode to level x",
  117.         kCompleteNone
  118.     },
  119.     { "delete",
  120.         kCmdMustBeConnected | kCmdHidden | kCmdWaitMsg,
  121.         DeleteCmd,
  122.         1, kNoMax,
  123.         "file1 [file2...]",
  124.         "deletes files from the remote host",
  125.         kCompleteFile
  126.     },
  127.     { "dir",
  128.         kCmdMustBeConnected | kCmdWaitMsg,
  129.         ListCmd,
  130.         kNoMin, kNoMax,
  131.         "[items to list]",
  132.         "prints a verbose directory listing",
  133.         kCompleteFile
  134.     },
  135.     { "echo",
  136.         0,
  137.         EchoCmd,
  138.         kNoMin, kNoMax,
  139.         "[items to echo]",
  140.         "echos back to screen, expanding special % and @ sequences",
  141.         kCompleteNone
  142.     },
  143.     { "exit",
  144.         kCmdHidden | kCmdWaitMsg,
  145.         (CmdProc) QuitCmd,
  146.         0, 0,
  147.         "",
  148.         "quits NcFTP",
  149.         kCompleteNone
  150.     },
  151.     { "get",
  152.         kCmdMustBeConnected,
  153.         GetCmd,
  154.         1, kNoMax,
  155. "[-flags] file1 [file2...]\n\
  156. Flags:\n\
  157.   -C   : Force continuation (reget).\n\
  158.   -f   : Force overwrite.\n\
  159.   -G   : Don't use wildcard matching.\n\
  160.   -R   : Recursive.  Useful for fetching whole directories.\n\
  161.   -n X : Get selected files only if X days old or newer.\n\
  162.   -z   : Get the remote file X, and name it to Y.\n\
  163. Examples:\n\
  164.   get README\n\
  165.   get README.*\n\
  166.   get -G **Name.with.stars.in.it**\n\
  167.   get -R new-files-directory\n\
  168.   get -z WIN.INI ~/junk/windows-init-file\n",
  169.         "fetches files from the remote host",
  170.         kCompleteFile
  171.     },
  172.     { "help",
  173.         0,
  174.         HelpCmd,
  175.         kNoMin, kNoMax,
  176.         "[optional commands]",
  177.         "shows commands, or detailed help on specified commands",
  178.         kCompleteCmd
  179.     },
  180.     { "hosts",
  181.         kCmdMustBeDisconnected | kCmdHidden,
  182.         (CmdProc) HostsCmd,
  183.         kNoMin, kNoMax,
  184.         "",
  185.         "lets you edit the settings for each remote host",
  186.         kCompleteNone
  187.     },
  188.     { "lcd",
  189.         0,
  190.         LocalChdirCmd,
  191.         kNoMin, 1,
  192.         "<directory>",
  193.         "changes local working directory",
  194.         kCompleteLocal
  195.     },
  196.     { "less",
  197.         kCmdMustBeConnected | kCmdNoRedirect | kCmdHidden,
  198.         PageCmd,
  199.         1, kNoMax,
  200.         "file1 [file2...]",
  201.         "views a file from the remote host one page at a time.",
  202.         kCompleteFile
  203.     },
  204.     { "lls",
  205.         0,
  206.         LocalListCmd,
  207.         kNoMin, kNoMax,
  208.         "[items to list]",
  209.         "prints a local directory listing",
  210.         kCompleteLocal
  211.     },
  212.     { "lookup",
  213.         0,
  214.         LookupCmd,
  215.         1, kNoMax,
  216.         "<host or IP number> [<more hosts or IP numbers>]",
  217.         "looks up information in the host database",
  218.         kCompleteNone
  219.     },
  220.     { "lpage",
  221.         0,
  222.         LocalPageCmd,
  223.         1, kNoMax,
  224.         "[-b | -p] localFiles...",
  225.         "views a local file with your pager (-p) or built-in pager (-b)",
  226.         kCompleteLocal
  227.     },
  228.     { "lpwd",
  229.         0,
  230.         (CmdProc) LocalPwdCmd,
  231.         0, 0,
  232.         "",
  233.         "Prints the current local working directory",
  234.         kCompleteNone
  235.     },
  236.     { "ls",
  237.         kCmdMustBeConnected | kCmdWaitMsg,
  238.         ListCmd,
  239.         kNoMin, kNoMax,
  240.         "[items to list]",
  241.         "prints a remote directory listing",
  242.         kCompleteFile
  243.     },
  244.     { "mget",
  245.         kCmdMustBeConnected | kCmdHidden,
  246.         GetCmd,
  247.         1, kNoMax,
  248.         "file1 [file2...]\n",
  249.         "fetches files from the remote host",
  250.         kCompleteFile
  251.     },
  252.     { "mkdir",
  253.         kCmdMustBeConnected | kCmdWaitMsg,
  254.         MkdirCmd,
  255.         1, kNoMax,
  256.         "dir1 [dir2...]",
  257.         "creates directories on the remote host",
  258.         kCompleteFile
  259.     },
  260.     { "mode",
  261.         kCmdMustBeConnected | kCmdWaitMsg,
  262.         ModeCmd,
  263.         1, 1,
  264.         "stream | block",
  265.         "sets file transfer mode",
  266.         kCompleteNone
  267.     },
  268.     { "more",
  269.         kCmdMustBeConnected | kCmdNoRedirect | kCmdHidden,
  270.         PageCmd,
  271.         1, kNoMax,
  272.         "file1 [file2...]",
  273.         "views a file from the remote host one page at a time.",
  274.         kCompleteFile
  275.     },
  276.     { "mput",
  277.         kCmdMustBeConnected,
  278.         PutCmd,
  279.         1, kNoMax,
  280.         "file1 [file2...]\n",
  281.         "sends files to the remote host",
  282.         kCompleteLocal
  283.     },
  284.     { "open",
  285.         kCmdWaitMsg,
  286.         OpenCmd,
  287.         kNoMin, kNoMax,
  288. "[-flags] [sitename]\n\
  289. Flags:\n\
  290.   -a   : Open anonymously.\n\
  291.   -u   : Open with username and password prompt.\n\
  292.   -p X : Use port number X when opening.\n\
  293.   -r   : Redial until connected.\n\
  294.   -d X : Redial, delaying X seconds between tries.\n\
  295.   -g X : Give up after X redials without connection.\n\
  296. Examples:\n\
  297.   open sphygmomanometer.unl.edu\n\
  298.   open -u bowser.nintendo.co.jp\n\
  299.   open -r -d 75 -g 10 sphygmomanometer.unl.edu\n",
  300.         "connects to a remote host",
  301.         kCompleteHost
  302.     },
  303.     { "page",
  304.         kCmdMustBeConnected | kCmdNoRedirect,
  305.         PageCmd,
  306.         1, kNoMax,
  307.         "file1 [file2...]",
  308.         "views a file from the remote host one page at a time",
  309.         kCompleteFile
  310.     },
  311.     { "pdir",
  312.         kCmdMustBeConnected | kCmdNoRedirect | kCmdWaitMsg,
  313.         ListCmd,
  314.         kNoMin, kNoMax,
  315.         "[items to list]",
  316.         "views a directory listing through your pager",
  317.         kCompleteFile
  318.     },
  319.     { "pls",
  320.         kCmdMustBeConnected | kCmdNoRedirect | kCmdWaitMsg,
  321.         ListCmd,
  322.         kNoMin, kNoMax,
  323.         "[items to list]",
  324.         "views a directory listing through your pager",
  325.         kCompleteFile
  326.     },
  327.     { "predir",
  328.         kCmdMustBeConnected | kCmdNoRedirect,
  329.         RedirCmd,
  330.         kNoMin, kNoMax,
  331.         "",
  332.         "re-displays the last directory listing through your pager",
  333.         kCompleteNone
  334.     },
  335. #ifdef USE_CURSES
  336.     { "prefs",
  337.         0,
  338.         (CmdProc) PrefsCmd,
  339.         0, 0,
  340.         "",
  341.         "lets you configure the program's settings",
  342.         kCompleteNone
  343.     },
  344. #endif    /* CURSES */
  345.     { "put",
  346.         kCmdMustBeConnected,
  347.         PutCmd,
  348.         1, kNoMax,
  349. "[-flags] file1 [file2...]\n\
  350. Flags:\n\
  351.   -z   : Send the local file X, and name the remote copy to Y.\n\
  352. Examples:\n\
  353.   put README\n\
  354.   put -z ~/junk/windows-init-file WIN.INI\n",
  355.         "sends a file to the remote host",
  356.         kCompleteLocal
  357.     },
  358.     { "pwd",
  359.         kCmdMustBeConnected | kCmdWaitMsg,
  360.         (CmdProc) PwdCmd,
  361.         0, 0,
  362.         "",
  363.         "Prints the current remote working directory",
  364.         kCompleteNone
  365.     },
  366.     { "redir",
  367.         kCmdMustBeConnected,
  368.         RedirCmd,
  369.         kNoMin, kNoMax,
  370.         "",
  371.         "re-displays the last directory listing",
  372.         kCompleteNone
  373.     },
  374.     { "rename",
  375.         kCmdMustBeConnected | kCmdWaitMsg,
  376.         RenameCmd,
  377.         2, 2,
  378.         "oldname newname",
  379.         "changes the name of a file on the remote host",
  380.         kCompleteFile
  381.     },
  382.     { "rglob",
  383.         kCmdMustBeConnected | kCmdHidden | kCmdWaitMsg,
  384.         RGlobCmd,
  385.         1, kNoMax,
  386.         "regex",
  387.         "tests remote filename wildcard matching",
  388.         kCompleteFile
  389.     },
  390.     { "q",
  391.         kCmdHidden | kCmdWaitMsg,
  392.         (CmdProc) QuitCmd,
  393.         0, 0,
  394.         "",
  395.         "quits NcFTP",
  396.         kCompleteNone
  397.     },
  398.     { "quit",
  399.         kCmdWaitMsg,
  400.         (CmdProc) QuitCmd,
  401.         0, 0,
  402.         "",
  403.         "take a wild guess",
  404.         kCompleteNone
  405.     },
  406.     { "quote",
  407.         kCmdMustBeConnected | kCmdWaitMsg,
  408.         QuoteCmd,
  409.         1, kNoMax,
  410.         "command-string",
  411.         "sends an FTP command to the remote server",
  412.         kCompleteFile
  413.     },
  414.     { "rhelp",
  415.         kCmdMustBeConnected | kCmdWaitMsg,
  416.         RmtHelpCmd,
  417.         kNoMin, kNoMax,
  418.         "[help string]",
  419.         "requests help from the remote server",
  420.         kCompleteNone
  421.     },
  422.     { "rm",
  423.         kCmdMustBeConnected | kCmdWaitMsg,
  424.         DeleteCmd,
  425.         1, kNoMax,
  426.         "file1 [file2...]",
  427.         "deletes files from the remote host",
  428.         kCompleteFile
  429.     },
  430.     { "rmdir",
  431.         kCmdMustBeConnected | kCmdWaitMsg,
  432.         RmdirCmd,
  433.         1, kNoMax,
  434.         "dir1 [dir2...]",
  435.         "deletes directories from the remote host",
  436.         kCompleteDir
  437.     },
  438.     { "set",
  439.         0,
  440.         SetCmd,
  441.         0, 2,
  442.         "[option [newvalue]] | all | help",
  443.         "lets you configure a program setting from the command line",
  444.         kCompleteOption
  445.     },
  446.     { "site",
  447.         kCmdMustBeConnected | kCmdWaitMsg,
  448.         QuoteCmd,
  449.         1, kNoMax,
  450.         "command-string",
  451.         "sends a host-specific FTP command to the remote server",
  452.         kCompleteNone
  453.     },
  454.     { "type",
  455.         kCmdMustBeConnected | kCmdWaitMsg,
  456.         TypeCmd,
  457.         1, 1,
  458.         "ascii | binary | image",
  459.         "sets file transfer type (one of 'ascii' or 'binary')",
  460.         kCompleteNone
  461.     },
  462.     { "verbose",
  463.         kCmdHidden,
  464.         VerboseCmd,
  465.         kNoMin, 1,
  466.         "[verbosity level]",
  467.         "sets verbosity mode to 0, 1, 2, or 3",
  468.         kCompleteNone
  469.     },
  470.     { "version",
  471.         0,
  472.         (CmdProc) VersionCmd,
  473.         kNoMin, kNoMax,
  474.         "",
  475.         "prints version information",
  476.         kCompleteNone
  477.     },
  478.     { "x",
  479.         kCmdHidden | kCmdWaitMsg,
  480.         (CmdProc) QuitCmd,
  481.         0, 0,
  482.         "",
  483.         "quits NcFTP",
  484.         kCompleteNone
  485.     },
  486. };
  487.  
  488. int gNumCommands = ((int) (sizeof(gCommands) / sizeof(Command)));
  489.  
  490. /* eof */
  491.