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