ckuus2.c
资源名称:cku197.tar.Z [点击查看]
上传用户:dufan58
上传日期:2007-01-05
资源大小:3407k
文件大小:398k
源码类别:
通讯/手机编程
开发平台:
Windows_Unix
- " (or similar) file to your screen.",
- " ",
- "SET SERVER CD-MESSAGE FILE name",
- " Tells the name of the file to be displayed as a CD-MESSAGE, such as",
- " READ.ME (SHOW SERVER tells the current CD-MESSAGE FILE name).",
- " To specify more than one filename to look for, use {{name1}{name2}..}.",
- " Synonym: SET CD MESSAGE FILE <list>.",
- " ",
- "SET SERVER DISPLAY {ON,OFF}",
- " Tells whether local-mode C-Kermit during server operation should put a",
- " file transfer display on the screen. Default is OFF.",
- " ",
- "SET SERVER GET-PATH [ directory [ directory [ ... ] ] ]",
- " Tells the C-Kermit server where to look for files whose names it receives",
- " from client GET commands when the names are not fully specified pathnames.",
- " Default is no GET-PATH, so C-Kermit looks only in its current directory.",
- " ",
- "SET SERVER IDLE-TIMEOUT seconds",
- " Idle time limit while in server mode, 0 for no limit.",
- #ifndef OS2
- " NOTE: SERVER IDLE-TIMEOUT and SERVER TIMEOUT are mutually exclusive.",
- #endif /* OS2 */
- " ",
- "SET SERVER KEEPALIVE {ON,OFF}",
- " Tells whether C-Kermit should send "keepalive" packets while executing",
- " REMOTE HOST commands, which is useful in case the command takes a long",
- " time to produce any output and therefore might cause the operation to time",
- " out. ON by default; turn it OFF if it causes trouble with the client or",
- " slows down the server too much.",
- " ",
- "SET SERVER LOGIN [ username [ password [ account ] ] ]",
- " Sets up a username and optional password which must be supplied before",
- " the server will respond to any commands other than REMOTE LOGIN. The",
- " account is ignored. If you enter SET SERVER LOGIN by itself, then login",
- " is no longer required. Only one SET SERVER LOGIN command can be in effect",
- " at a time; C-Kermit does not support multiple user/password pairs.",
- " ",
- "SET SERVER TIMEOUT n",
- " Server command wait timeout interval, how often the C-Kermit server issues",
- " a NAK while waiting for a command packet. Specify 0 for no NAKs at all.",
- " Default is 0.",
- ""
- };
- #endif /* NOSERVER */
- static char *hmhrmt[] = {
- "The REMOTE command sends file management instructions or other commands",
- "to a Kermit server. There should already be a Kermit running in server",
- "mode on the other end of the currently selected line. Type REMOTE ? to",
- "see a list of available remote commands. Type HELP REMOTE x to get",
- "further information about a particular remote command 'x'.",
- " ",
- "All REMOTE commands except LOGIN and LOGOUT have R-command shortcuts;",
- "for example, RDIR for REMOTE DIR, RCD for REMOTE CD, etc.",
- "" };
- #ifndef NOSPL
- static char *ifhlp[] = { "Syntax: IF [NOT] condition commandlist",
- " ",
- "If the condition is (is not) true, do the commandlist. The commandlist",
- "can be a single command, or a list of commands separated by commas and",
- "enclosed in braces. The condition can be a single condition or a group of",
- "conditions separated by AND (&&) or OR (||) and enclosed in parentheses.",
- "Examples:",
- " ",
- " IF EXIST oofa.txt <command>",
- " IF ( EXIST oofa.txt || = \v(nday) 3 ) <command>",
- " IF ( EXIST oofa.txt || = \v(nday) 3 ) { <command>, <command>, ... }",
- " ",
- "The conditions are:",
- " ",
- " SUCCESS - The previous command succeeded",
- " OK - Synonym for SUCCESS",
- " FAILURE - The previous command failed",
- " ERROR - Synonym for FAILURE",
- " FLAG - Succeeds if SET FLAG ON, fails if SET FLAG OFF",
- " BACKGROUND - C-Kermit is running in the background",
- #ifdef CK_IFRO
- " FOREGROUND - C-Kermit is running in the foreground",
- " REMOTE-ONLY - C-Kermit was started with the -R command-line option",
- #else
- " FOREGROUND - C-Kermit is running in the foreground",
- #endif /* CK_IFRO */
- " ALARM - SET ALARM time has passed",
- " ASKTIMEOUT - The most recent ASK, ASKQ, GETC, or GETOK timed out",
- " EMULATION - Succeeds if executed while in CONNECT mode",
- #ifdef OS2
- " TAPI - Current connection is via a Microsoft TAPI device",
- #endif /* OS2 */
- " ",
- " AVAILABLE CRYPTO - Encryption is available",
- " AVAILABLE KERBEROS4 - Kerberos 4 authentication is available",
- " AVAILABLE KERBEROS5 - Kerberos 5 authentication is available",
- " AVAILABLE NTLM - NTLM authentication is available",
- " AVAILABLE SRP - SRP authentication is available",
- " AVAILABLE SSL - SSL/TLS authentication is available",
- " MATCH string pattern - Succeeds if string matches pattern",
- #ifdef CKFLOAT
- " FLOAT number - Succeeds if floating-point number",
- #endif /* CKFLOAT */
- " COMMAND word - Succeeds if word is built-in command",
- " DEFINED variablename or macroname - The named variable or macro is defined",
- " NUMERIC variable or constant - The variable or constant is numeric",
- " EXIST filename - The named file exists",
- " ABSOLUTE filename - The filename is absolute, not relative",
- #ifdef CK_TMPDIR
- " DIRECTORY string - The string is the name of a directory",
- #endif /* CK_TMPDIR */
- " READABLE filename - Succeeds if the file is readable",
- " WRITEABLE filename - Succeeds if the file is writeable",
- #ifdef ZFCDAT
- " NEWER file1 file2 - The 1st file is newer than the 2nd one",
- #endif /* ZFCDAT */
- " OPEN { READ-FILE,SESSION-LOG,...} - The given file or log is open",
- #ifndef NOLOCAL
- " OPEN CONNECTION - A connection is open",
- #endif /* NOLOCAL */
- " ",
- " COUNT - subtract one from COUNT, execute the command if the result is",
- " greater than zero (see SET COUNT)",
- " ",
- " EQUAL s1 s2 - s1 and s2 (character strings or variables) are equal",
- " LLT s1 s2 - s1 is lexically (alphabetically) less than s2",
- " LGT s1 s1 - s1 is lexically (alphabetically) greater than s2",
- " ",
- " = n1 n2 - n1 and n2 (numbers or variables containing numbers) are equal",
- " < n1 n2 - n1 is arithmetically less than n2",
- " <= n1 n2 - n1 is arithmetically less than or equal to n2",
- " > n1 n2 - n1 is arithmetically greater than n2",
- " >= n1 n2 - n1 is arithmetically greater than or equal to n2",
- " ",
- " (number by itself) - fails if the number is 0, succeeds otherwise",
- " ",
- " TRUE - always succeeds",
- " FALSE - always fails",
- " ",
- "The IF command may be followed on the next line by an ELSE command. Example:",
- " ",
- " IF < \%x 10 ECHO It's less",
- " ELSE echo It's not less",
- " ",
- "It can also include an ELSE part on the same line if braces are used:",
- " ",
- " IF < \%x 10 { ECHO It's less } ELSE { ECHO It's not less }",
- " ",
- "Also see HELP WILDCARD (for IF MATCH pattern syntax).",
- "" };
- static char *hmxxeval[] = { "Syntax: EVALUATE variable expression",
- " Evaluates the expression and assigns its value to the given variable.",
- " The expression can contain numbers and/or numeric-valued variables or",
- " functions, combined with mathematical operators and parentheses in",
- " traditional notation. Operators include +-/*(), etc. Example:",
- " EVALUATE \%n (1+1) * (\%a / 3).",
- " ",
- " NOTE: Prior to C-Kermit 7.0, the syntax was "EVALUATE expression"",
- " (no variable), and the result was printed. Use SET EVAL { OLD, NEW }",
- " to choose the old or new behavior, which is NEW by default.",
- " ",
- "Alse see: HELP FUNCTION EVAL.",
- "" };
- #endif /* NOSPL */
- #ifndef NOSPL
- static char *ifxhlp[] = { "
- Syntax: XIF condition { commandlist } [ ELSE { commandlist } ]",
- " Obsolete. Same as IF (see HELP IF).",
- "" };
- static char *forhlp[] = { "
- Syntax: FOR variablename initial-value final-value increment { commandlist }",
- " FOR loop. Execute the comma-separated commands in the commandlist the",
- " number of times given by the initial value, final value and increment.",
- " Example: FOR \%i 10 1 -1 { pause 1, echo \%i }", "" };
- static char *whihlp[] = { "
- Syntax: WHILE condition { commandlist }",
- " WHILE loop. Execute the comma-separated commands in the bracketed",
- " commandlist while the condition is true. Conditions are the same as for",
- " IF commands.",
- "" };
- static char *swihlp[] = {
- "Syntax: SWITCH <variable> { case-list }",
- " Selects from a group of commands based on the value of a variable.",
- " The case-list is a series of lines like these:",
- " ",
- " :x, command, command, ..., break",
- " ",
- " where "x" is a possible value for the variable. At the end of the",
- " case-list, you can put a "default" label to catch when the variable does",
- " not match any of the labels:",
- " ",
- " :default, command, command, ...",
- " ",
- "The case label "x" can be a character, a string, a variable, a function",
- "invocation, a pattern, or any combination of these. See HELP WILDCARDS",
- "for information about patterns.",
- ""};
- static char *openhlp[] = {
- "Syntax: OPEN mode filename",
- " For use with READ and WRITE commands. Open the local file in the",
- " specified mode: READ, WRITE, or APPEND. !READ and !WRITE mean to read",
- " from or write to a system command rather than a file. Examples:",
- " ",
- " OPEN READ oofa.txt",
- " OPEN !READ sort foo.bar",
- "" };
- static char *hxxaskq[] = {
- "Syntax: ASKQ variablename [ prompt ]",
- "Example: ASKQ \%p { Password:}",
- " Issues the prompt and defines the variable to be whatever you type in.",
- " The characters that you type do not echo on the screen.",
- " Use braces to preserve leading and/or trailing spaces in the prompt.",
- " To include a question mark, precede it by backslash (\).",
- " ",
- "Also see SET ASK-TIMER.",
- ""};
- static char *hxxask[] = {
- "Syntax: ASK variablename [ prompt ]",
- "Example: ASK \%n { What is your name\? }",
- " Issues the prompt and defines the variable to be whatever you type in.",
- " Use braces to preserve leading and/or trailing spaces in the prompt.",
- " To include a question mark, precede it by backslash (\).",
- " ",
- "Also see SET ASK-TIMER.",
- ""};
- static char *hxxgetc[] = {
- "Syntax: GETC variablename [ prompt ]",
- "Example: GETC \%c { Type any character to continue...}",
- " Issues the prompt and sets the variable to the first character you type.",
- " Use braces to preserve leading and/or trailing spaces in the prompt.",
- " ",
- "Also see SET ASK-TIMER.",
- ""};
- static char *hmxytimer[] = {
- "Syntax: SET ASK-TIMER number",
- " For use with ASK, ASKQ, GETOK, and GETC. If ASK-TIMER is set to a number",
- " greater than 0, these commands will time out after the given number of",
- " seconds with no response. This command is "sticky", so to revert to",
- "
- untimed ASKs after a timed one, use SET ASK-TIMER 0. Also see IF ASKTIMEOUT.",
- ""};
- static char *hxxdef[] = {
- "Syntax: DEFINE name [ definition ]",
- " Defines a macro or variable. Its value is the definition, taken",
- " literally. No expansion or evaluation of the definition is done. Thus",
- " if the definition includes any variable or function references, their",
- " names are included, rather than their values (compare with ASSIGN). If",
- " the definition is omitted, then the named variable or macro is undefined.",
- " ",
- "A typical macro definition looks like this:",
- " ",
- " DEFINE name command, command, command, ...",
- " ",
- "for example:",
- " ",
- " DEFINE vax set parity even, set duplex full, set flow xon/xoff",
- " ",
- "which defines a Kermit command macro called 'vax'. The definition is a",
- "comma-separated list of Kermit commands. Use the DO command to execute",
- "the macro, or just type its name, followed optionally by arguments.",
- " ",
- "The definition of a variable can be anything at all, for example:",
- " ",
- " DEFINE \%a Monday",
- " DEFINE \%b 3",
- " ",
- "These variables can be used almost anywhere, for example:",
- " ",
- " ECHO Today is \%a",
- " SET BLOCK-CHECK \%b",
- "" };
- static char *hxxass[] = {
- "Syntax: ASSIGN variablename string.",
- "Example: ASSIGN \%a My name is \%b.",
- " Assigns the current value of the string to the variable (or macro).",
- " The definition string is fully evaluated before it is assigned, so that",
- " the values of any variables are contained are used, rather than their",
- " names. Compare with DEFINE. To illustrate the difference, try this:",
- " ",
- " DEFINE \%a hello",
- " DEFINE \%x \%a",
- " ASSIGN \%y \%a",
- " DEFINE \%a goodbye",
- " ECHO \%x \%y",
- " ",
- " This prints 'goodbye hello'.", "" };
- static char *hxxdec[] = {
- "Syntax: DECREMENT variablename [ number ]",
- " Decrement (subtract one from) the value of a variable if the current value",
- " is numeric. If the number argument is given, subtract that number",
- " instead.",
- " ",
- "Examples: DECR \%a, DECR \%a 7, DECR \%a \%n", "" };
- static char *hxxinc[] = {
- "Syntax: INCREMENT variablename [ number ]",
- " Increment (add one to) the value of a variable if the current value is",
- " numeric. If the number argument is given, add that number instead.",
- " ",
- "Examples: INCR \%a, INCR \%a 7, INCR \%a \%n", "" };
- #endif /* NOSPL */
- #ifdef ANYX25
- #ifndef IBMX25
- static char *hxxpad[] = {
- "Syntax: PAD command",
- "X.25 PAD commands:",
- " ",
- " PAD CLEAR - Clear the virtual call",
- " PAD STATUS - Return the status of virtual call",
- " PAD RESET - Send a reset packet",
- " PAD INTERRUPT - Send an interrupt packet",
- ""};
- #endif /* IBMX25 */
- static char *hxyx25[] = {
- "Syntax: SET X.25 option { ON [ data ], OFF }",
- " ",
- "X.25 call options:",
- " CLOSED-USER-GROUP { ON index, OFF }",
- " Enable or disable closed user group call, where index is the group",
- " index, 0 to 99.",
- " REVERSE-CHARGE { ON, OFF }",
- " Tell whether you want to reverse the charges for the call.",
- " CALL-USER-DATA { ON string, OFF }",
- " Specify call user-data for the X.25 call.",
- ""};
- #endif /* ANYX25 */
- static char *hxyprtr[] = {
- #ifdef PRINTSWI
- "Syntax: SET PRINTER [ switches ] [ name ]",
- " ",
- " Specifies the printer to be used for transparent-print, autoprint, and",
- " screen-dump material during terminal emulation, as well as for the PRINT",
- " command, plus various options governing print behavior.",
- " ",
- "Switches for specifying the printer by type:",
- " ",
- "/NONE",
- " Include this switch to specify that all printer actions should simply be",
- " skipped. Use this, for example, if you have no printer.",
- " ",
- "/DOS-DEVICE[:name]",
- " Include this to declare a DOS printer and to specify its name, such as",
- " PRN, LPT1, etc.",
- " ",
- #ifdef NT
- "/WINDOWS-QUEUE[:queue-name]",
- " Include this to declare a Windows printer and specify its queue name.",
- " Type question mark (?) after the colon (:) to see a list of known queue",
- " names.",
- " ",
- #endif /* NT */
- "/FILE[:name]",
- " Specifies that all printer material is to be appended to the named file,",
- " rather than being sent to a printer. If the file does not exist, it is",
- " created the first time any material is to be printed.",
- " ",
- "/PIPE[:name]",
- " Specifies that all printer material is to be sent as standard input to",
- " the program or command whose name is given. Example:",
- " ",
- " SET PRINTER /PIPE:{textps > lpt1}",
- " ",
- "If you give a printer name without specifying any of these switches, then it",
- "is assumed to be a DOS printer device or filename unless the name given",
- "(after removing enclosing braces, if any) starts with "|",
- in which case it",
- "is a pipe. Examples:",
- " ",
- " SET PRINTER LPT1 <-- DOS device",
- " SET PRINTER {| textps > lpt1} <-- Pipe",
- " ",
- "The next group of switches tells whether the printer is one-way or",
- "bidirectional (two-way):",
- " ",
- "/OUTPUT-ONLY",
- " Include this to declare the printer capable only of receiving material to",
- " be printed, but not sending anything back. This is the normal kind of",
- " printer, Kermit's default kind, and the opposite of /BIDIRECTIONAL.",
- " ",
- "/BIDIRECTIONAL",
- " Include this to declare the printer bidirectional. This is the opposite ",
- " of /OUTPUT-ONLY. You can also use this option with serial printers, even",
- " if they aren't bidirectional, in case you need to specify speed, flow",
- " control, or parity.",
- " ",
- "The next group applies only to bidirectional and/or serial printers:",
- " ",
- "/FLOW-CONTROL:{NONE,XON/XOFF,RTS/CTS,KEEP}",
- " Flow control to use with a serial bidirectional printer, default KEEP;",
- #ifdef NT
- " i.e. use whatever the Windows driver for the port normally uses.",
- #else
- " i.e. use whatever the OS/2 driver for the port normally uses.",
- #endif /* NT */
- " ",
- "/PARITY:{NONE,EVEN,ODD,SPACE,MARK}",
- " Parity to use with a serial printer, default NONE; i.e. use 8 data bits",
- " and no parity. If you omit the colon and the keyword, NONE is selected.",
- " ",
- "/SPEED:number",
- " Interface speed, in bits per second, to use with a serial printer, such as",
- " 2400, 9600, 19200, etc. Type SET PRINTER /SPEED:? for a list of possible",
- " speeds.",
- " ",
- "The next group deals with print jobs -- how to identify them, how to start",
- "them, how to terminate them:",
- " ",
- "/TIMEOUT[:number]",
- " Used with host-directed transparent or auto printing, this is the number",
- " of seconds to wait after the host closes the printer before terminating",
- " the print job if the printer is not opened again during the specified",
- " amount of time.",
- " ",
- "/JOB-HEADER-FILE[:filename]",
- " The name of a file to be sent to the printer at the beginning of each",
- " print job, as a burst page, or to configure the printer. Normally no file",
- " is is sent.",
- " ",
- "/END-OF-JOB-STRING[:string]",
- " String of characters to be sent to the printer at the end of the print",
- " job, usually used to force the last or only page out of the printer. When",
- " such a string is needed, it usually consists of a single formfeed: "set",
- " printer /end-of-job:{\12}". No end-of-job string is sent unless you",
- " specify one with this option. If the string contains any spaces or",
- " control characters (even in backslash notation, as above), enclose it in",
- " braces.",
- " ",
- "The final group is for use with printers that print only PostScript:",
- " ",
- "/POSTSCRIPT or /PS",
- " Indicates that K95 should convert all text to PostScript before sending",
- " it to the printer. The fixed-pitch Courier-11 font is used.",
- " ",
- "/WIDTH:number",
- " Specifies the width of the page in characters. If this switch is not",
- " given, 80 is used.",
- " ",
- "/HEIGHT:number",
- " Specifies the height of the page in lines. If this switch is not given",
- " 66 is used.",
- " ",
- "/NOPOSTSCRIPT or /NOPS",
- " Indicates that K95 should not convert all text to PostScript before",
- " sending it to the printer.",
- " ",
- "SHOW PRINTER displays your current printer settings.",
- #else
- #ifdef UNIX
- "Syntax: SET PRINTER [ { |command, filename } ]",
- " Specifies the command (such as "|lpr") or filename to be used by the",
- " PRINT command. If a filename is given, each PRINT command appends to the",
- " given file. If the SET PRINTER argument contains spaces, it must be",
- " enclosed in braces, e.g. "set printer {| lpr -Plaser}". If the argument",
- " is omitted the default value is restored. SHOW PRINTER lists the current",
- " printer. See HELP PRINT for further info.",
- #else
- "Sorry, SET PRINTER not available yet.",
- #endif /* UNIX */
- #endif /* PRINTSWI */
- ""};
- #ifdef OS2
- #ifdef BPRINT
- static char *hxybprtr[] = {
- "Syntax: SET BPRINTER [ portname speed [ parity [ flow-control ] ] ]",
- " (Obsolete, replaced by SET PRINTER /BIDIRECTIONAL.)",
- ""};
- #endif /* BPRINT */
- #endif /* OS2 */
- static char *hxyexit[] = {
- "Syntax: SET EXIT ON-DISCONNECT { ON, OFF }",
- " When ON, C-Kermit EXITs automatically when a network connection",
- " is terminated either by the host or by issuing a HANGUP command.",
- " ",
- "Syntax: SET EXIT STATUS number",
- #ifdef NOSPL
- " Set C-Kermit's program return code to the given number.",
- #else
- " Set C-Kermit's program return code to the given number, which can be a",
- " constant, variable, function result, or arithmetic expression.",
- #endif /* NOSPL */
- " ",
- "Syntax: SET EXIT WARNING { ON, OFF, ALWAYS }",
- " When EXIT WARNING is ON, issue a warning message and ask for confirmation",
- " before EXITing if a connection to another computer might still be open.",
- " When EXIT WARNING is ALWAYS, confirmation is always requested. When OFF",
- " it is never requested. The default is ON.",
- "" };
- #ifndef NOSPL
- static char *hxxpau[] = {
- "Syntax: PAUSE [ { number-of-seconds, hh:mm:ss } ]",
- "Example: PAUSE 3 or PAUSE 14:52:30",
- " Do nothing for the specified number of seconds or until the given time of",
- " day in 24-hour hh:mm:ss notation. If the time of day is earlier than the",
- " current time, it is assumed to be tomorrow. If no argument given, one",
- " second is used. The pause can be interrupted by typing any character on",
- " the keyboard unless SLEEP CANCELLATION is OFF. If interrupted, PAUSE",
- " fails, otherwise it succeeds. Synonym: SLEEP.",
- "" };
- static char *hxxmsl[] = {
- "Syntax: MSLEEP [ number ]",
- "Example: MSLEEP 500",
- " Do nothing for the specified number of milliseconds; if no number given,",
- " 100 milliseconds.","" };
- #endif /* NOSPL */
- #ifndef NOPUSH
- extern int nopush;
- static char *hxxshe[] = {
- "Syntax: !, @, RUN, PUSH, or SPAWN, optionally followed by a command.",
- " Gives the command to the local operating system's command processor, and",
- " displays the results on the screen. If the command is omitted, enters the",
- " system's command line interpreter or shell; exit from it (the command for",
- " this is usually EXIT or QUIT or LOGOUT) to return to Kermit.",
- ""
- };
- #endif /* NOPUSH */
- #ifndef NOXMIT
- static char *hxxxmit[] = {
- #ifndef NOCSETS
- "Syntax: TRANSMIT { /COMMAND, /TEXT, /BINARY, /TRANSPARENT } filename",
- #else
- "Syntax: TRANSMIT { /COMMAND, /TEXT, /BINARY } filename",
- #endif /* NOCSETS */
- " Sends the contents of a file, without any error checking or correction,",
- " to the computer on the other end of your SET LINE or SET HOST connection",
- " (or if C-Kermit is in remote mode, displays it on the screen). The",
- " filename is the name of a single file (no wildcards) to be sent or, if",
- " the /COMMAND switch is included, the name of a command whose output is",
- " to be sent.",
- " ",
- " The file is sent according to your current FILE TYPE setting (BINARY or",
- " TEXT), which you can override with a /BINARY or /TEXT switch without",
- " changing the global setting. In text mode, it is sent a line at a time,",
- " with carriage return at the end of each line (as if you were typing it at",
- " your keyboard), and C-Kermit waits for a linefeed to echo before sending",
- " the next line. In binary mode, it is sent a character at a time, with no",
- " feedback required.",
- " ",
- #ifndef NOCSETS
- " Character sets are translated according to your current FILE and TERMINAL",
- " CHARACTER-SET settings when TRANSMIT is in text mode. Include /TRANSPARENT"
- ,
- " to disable character-set translation in text mode (/TRANSPARENT implies",
- " /TEXT).",
- " ",
- #endif /* NOCSETS */
- " There can be no guarantee that the other computer will receive the file",
- " correctly and completely. Before you start the TRANSMIT command, you",
- " must put the other computer in data collection mode, for example by",
- " starting a text editor. TRANSMIT may be interrupted by Ctrl-C. Synonym:",
- " XMIT. See HELP SET TRANSMIT for further information.",
- "" };
- #endif /* NOXMIT */
- #ifndef NOCSETS
- static char *hxxxla[] = {
- "Syntax: TRANSLATE file1 cs1 cs2 [ file2 ]",
- " Translates file1 from the character set cs1 into the character set cs2",
- " and stores the result in file2. The character sets can be any of",
- " C-Kermit's file character sets. If file2 is omitted, the translation",
- " is displayed on the screen. An appropriate intermediate character-set",
- " is chosen automatically, if necessary. Synonym: XLATE. Example:",
- " ",
- " TRANSLATE lasagna.lat latin1 italian lasagna.nrc",
- "" };
- #endif /* NOCSETS */
- #ifndef NOSPL
- static char *hxxwai[] = {
- "Syntax: WAIT { number-of-seconds, hh:mm:ss } [modem-signal(s)]",
- " ",
- "Examples:",
- " wait 5 cd cts",
- " wait 23:59:59 cd",
- " ",
- " Waits up to the given number of seconds or the given time of day for all",
- " the specified modem signals to appear on the serial communication device.",
- " Sets FAILURE if the signals do not appear in the given time or interrupted",
- " from the keyboard during the waiting period. Also see HELP PAUSE.",
- " ",
- "Signals:",
- " cd = Carrier Detect;",
- " dsr = Dataset Ready;",
- " cts = Clear To Send;",
- " ri = Ring Indicate.",
- "" };
- #endif /* NOSPL */
- static char *hxxwri[] = {
- "Syntax: WRITE name text",
- " Writes the given text to the named log or file. The text text may include",
- " backslash codes, and is not terminated by a newline unless you include the",
- " appropriate code. The name parameter can be any of the following:",
- " ",
- " DEBUG-LOG",
- " ERROR (standard error)",
- #ifndef NOSPL
- " FILE (the OPEN WRITE, OPEN !WRITE, or OPEN APPEND file, see HELP OPEN)",
- #endif /* NOSPL */
- " PACKET-LOG",
- " SCREEN (compare with ECHO)",
- #ifndef NOLOCAL
- " SESSION-LOG",
- #endif /* NOLOCAL */
- " TRANSACTION-LOG", "" };
- #ifndef NODIAL
- static char *hxxlook[] = { "Syntax: LOOKUP name",
- " Looks up the given name in the dialing directory or directories, if any,",
- " specified in the most recent SET DIAL DIRECTORY command. Each matching",
- " entry is shown, along with any transformations that would be applied to",
- " portable-format entries based on your locale. HELP DIAL, HELP SET DIAL",
- " for further info.",
- ""
- };
- static char *hxxansw[] = { "Syntax: ANSWER [ <seconds> ]",
- #ifdef OS2
- " Waits for a modem call to come in. Prior SET MODEM TYPE and SET PORT",
- #else
- " Waits for a modem call to come in. Prior SET MODEM TYPE and SET LINE",
- #endif /* OS2 */
- " required. If <seconds> is 0 or not specified, Kermit waits forever or",
- " until interrupted, otherwise Kermit waits the given number of seconds.",
- " The ANSWER command puts the modem in autoanswer mode. Subsequent DIAL",
- " commands will automatically put it (back) in originate mode. SHOW MODEM,",
- " HELP SET MODEM for more info.",
- ""
- };
- static char *hxxdial[] = { "Syntax: DIAL phonenumber",
- "Example: DIAL 7654321",
- "
- Dials a number using an autodial modem. First you must SET MODEM TYPE, then",
- #ifdef OS2
- " SET PORT, then SET SPEED. Then give the DIAL command, including the phone",
- #else
- " SET LINE, then SET SPEED. Then give the DIAL command, including the phone",
- #endif /* OS2 */
- " number, for example:",
- " ",
- " DIAL 7654321",
- " ",
- #ifdef NETCONN
- " If the modem is on a network modem server, SET HOST first, then SET MODEM,",
- " then DIAL. See also SET DIAL, SET MODEM, SET LINE, SET HOST, SET SPEED,",
- " REDIAL, and PDIAL.",
- " ",
- #else
- " See also SET DIAL, SET MODEM, SET LINE, SET SPEED, PDIAL, and REDIAL.",
- " ",
- #endif /* NETCONN */
- "If the phonenumber starts with a letter, and if you have used the SET DIAL",
- "DIRECTORY command to specify one or more dialing-directory files, Kermit",
- "looks it up in the given file(s); if it is found, the name is replaced by",
- "the number or numbers associated with the name. If it is not found, the",
- "name is sent to the modem literally.",
- " ",
- "If the phonenumber starts with an equals sign ("="), this forces the part",
- "after the = to be sent literally to the modem, even if it starts with a",
- "letter, without any directory lookup.",
- " ",
- "You can also give a list of phone numbers enclosed in braces, e.g:",
- " ",
- " dial {{7654321}{8765432}{+1 (212 555-1212}}",
- " ",
- "(Each number is enclosed in braces and the entire list is also enclosed in",
- "braces.) In this case, each number is tried until there is an answer. The",
- "phone numbers in this kind of list can not be names of dialing directory",
- "entries.",
- " ",
- "A dialing directory is a plain text file, one entry per line:",
- " ",
- " name phonenumber ; comments",
- " ",
- "for example:",
- " ",
- " work 9876543 ; This is a comment",
- " e-mail +1 (212) 555 4321 ; My electronic mailbox",
- " heise +49 (511) 535 2301 ; Verlag Heinz Heise BBS",
- " ",
- "If a phone number starts with +, then it must include country code and",
- "area code, and C-Kermit will try to handle these appropriately based on",
- "the current locale (HELP SET DIAL for further info); these are called",
- "PORTABLE entries. If it does not start with +, it is dialed literally.",
- " ",
- "If more than one entry is found with the same name, Kermit dials all of",
- "them until the call is completed; if the entries are in portable format,",
- "Kermit dials then in cheap-to-expensive order: internal, then local, then",
- "long-distance, then international, based on its knowledge of your local",
- "country code and area code (see HELP SET DIAL).",
- " ",
- "Specify your dialing directory file(s) with the SET DIAL DIRECTORY command.",
- "" };
- #ifdef CK_TAPI
- static char *hxxtapi[] = {
- "TAPI CONFIGURE-LINE <tapi-line>",
- " Displays the TAPI Configure Line Dialog box and allows you to",
- " alter the default configuration for the specified <tapi-line>.",
- " ",
- "TAPI DIALING-PROPERTIES",
- " Displays the TAPI Dialing Properties (locations) Dialog box. The",
- " Dialing rules may be changed and locations created and deleted.",
- " When the dialog box is closed, K-95 imports the current Dialing",
- " Properties' Location into the Kermit DIAL command settings.",
- ""};
- static char *hxytapi[] = {
- "SET TAPI LINE <tapi-line>",
- " Opens a TAPI device for use by Kermit.",
- " ",
- "SET TAPI MODEM-DIALING {ON, [OFF]}",
- " If TAPI MODEM-DIALING is OFF when SET TAPI LINE is issued, Kermit opens",
- " the TAPI device directly as a "raw port". The device is unavailable to",
- " other applications and Kermit performs dialing functions using its",
- " built-in dialing and modem databases. If TAPI MODEM-DIALING is ON, TAPI",
- " handles all dialing functions and the port may be shared with other",
- " applications when a call in not active. When TAPI MODEM-DIALING is OFF,",
- " SET MODEM TYPE TAPI Kermit uses the TAPI modem commands imported from the",
- " Windows Registry during the previous SET TAPI LINE call.",
- " ",
- "SET TAPI LOCATION <tapi-location>",
- " Specifies the TAPI location to make current for the entire system. The",
- " <tapi-location>'s dialing properties are imported into Kermit's SET DIAL",
- " command database.",
- " ",
- "SET TAPI PHONE-NUMBER-CONVERSIONS {ON, OFF, [AUTO]}",
- " Controls whether the phone number conversions are performed by TAPI (ON)",
- " or by Kermit (OFF), or according the type of port that was selected",
- " (AUTO); AUTO is the default, and is equivalent to ON if the current",
- " LINE/PORT is a TAPI device and TAPI MODEM-DIALING is ON, OFF otherwise.",
- " ",
- "SET TAPI MODEM-LIGHTS {[ON], OFF}",
- " Displays a modem lights indicator on the Windows 95 Taskbar. Does nothing",
- " in Windows NT 4.0.",
- " ",
- "SET TAPI MANUAL-DIALING {ON, [OFF]}",
- " Displays a dialog box during dialing requesting that you manually dial the",
- " phone before continuing. Applies only when TAPI MODEM-DIALING is ON.",
- " ",
- "SET TAPI WAIT-FOR-CREDIT-CARD-TONE <seconds>",
- " Some modems don't support the '$' (BONG) symbol during dialing, which",
- " means "wait for credit card tone before continuing." If TAPI recognizes",
- " the modem as one that does not support BONG, it replaces the '$' with",
- " <seconds> worth of pauses. The default is 8 seconds. This command",
- " applies only when TAPI MODEM-DIALING is ON",
- " ",
- "SET TAPI PRE-DIAL-TERMINAL {ON, [OFF]}",
- "SET TAPI POST-DIAL-TERMINAL {ON, [OFF]}",
- " Displays a small terminal window that may be used to communicate with the",
- " modem or the host prior to or immediately after dialing; applies only when",
- " TAPI MODEM-DIALING is ON",
- " ",
- "SET TAPI INACTIVITY-TIMEOUT <minutes>",
- " Specifies the number of minutes of inactivity that may go by before TAPI",
- " disconnects the line. The default is 0 which means disable this function.",
- " Applies only when TAPI MODEM-DIALING is ON.",
- " ",
- "SET TAPI USE-WINDOWS-CONFIGURATION {ON, [OFF]}",
- " Specifies whether the TAPI modem values for speed, parity, stop bits, flow",
- " control, etc. are used in preference to the current values specified",
- " within Kermit-95.",
- " ",
- ""};
- #endif /* CK_TAPI */
- #endif /* NODIAL */
- #ifdef TNCODE
- static char *hmxxtel[] = {
- "Syntax: TELNET [ switches ] [ host [ service ] ]",
- " Equivalent to SET NETWORK TYPE TCP/IP, SET HOST host [ service ] /TELNET,",
- " IF SUCCESS CONNECT. If host is omitted, the previous connection (if any)",
- " is resumed. Depending on how Kermit has been built switches may be",
- " available to require a secure authentication method and bidirectional",
- " encryption. See HELP SET TELNET for more info.",
- " ",
- #ifdef CK_AUTHENTICATION
- " /AUTH:<type> is equivalent to SET TELNET AUTH TYPE <type> and",
- " SET TELOPT AUTH REQUIRED with the following exceptions. If the type",
- " is AUTO, then SET TELOPT AUTH REQUESTED is executed and if the type",
- " is NONE, then SET TELOPT AUTH REFUSED is executed.",
- " ",
- #endif /* CK_AUTHENTICATION */
- #ifdef CK_ENCRYPTION
- " /ENCRYPT:<type> is equivalent to SET TELNET ENCRYPT TYPE <type>",
- " and SET TELOPT ENCRYPT REQUIRED REQUIRED with the following exceptions.",
- " If the type is AUTO then SET TELOPT AUTH REQUESTED REQUESTED is executed",
- " and if the type is NONE then SET TELOPT ENCRYPT REFUSED REFUSED is",
- " executed.",
- " ",
- #endif /* CK_ENCRYPTION */
- " /USERID:[<name>]",
- " This switch is equivalent to SET LOGIN USERID <name> or SET TELNET",
- " ENVIRONMENT USER <name>. If a string is given, it sent to host during",
- " Telnet negotiations; if this switch is given but the string is omitted,",
- " no user ID is sent to the host. If this switch is not given, your",
- " current USERID value, \v(userid), is sent. When a userid is sent to the",
- " host it is a request to login as the specified user.",
- " ",
- #ifdef CK_AUTHENTICATION
- " /PASSWORD:[<string>]",
- " This switch is equivalent to SET LOGIN PASSWORD. If a string is given,",
- " it is treated as the password to be used (if required) by any Telnet",
- " Authentication protocol (Kerberos Ticket retrieval, Secure Remote",
- " Password, or X.509 certificate private key decryption.) If no password",
- " switch is specified a prompt is issued to request the password if one",
- " is required for the negotiated authentication method.",
- #endif /* CK_AUTHENTICATION */
- ""};
- static char *hxtopt[] = {
- "TELOPT { AO, AYT, BREAK, CANCEL, EC, EL, EOF, EOR, GA, IP, DMARK, NOP, SE,",
- " SUSP, SB [ option ], DO [ option ], DONT [ option ],",
- " WILL [ option ], WONT [option] }",
- " This command lets you send all the Telnet protocol commands. Note that",
- " certain commands do not require a response, and therefore can be used as",
- " nondestructive "probes" to see if the Telnet session is still open;",
- " e.g.:n",
- " set host xyzcorp.com",
- " ...",
- " telopt nop",
- " telopt nop",
- " if fail stop 1 Connection lostn",
- " TELOPT NOP is sent twice because the failure of the connection will not",
- " be detected until the second send is attempted. This command is meant",
- " primarily as a debugging tool for the expert user.",
- ""};
- #endif /* TNCODE */
- #endif /* NOHELP */
- /* D O H L P -- Give a help message */
- _PROTOTYP( int dohset, (int) );
- #ifndef NOCMDL
- _PROTOTYP( int dohopts, (void) );
- #endif /* NOCMDL */
- #ifndef NOSPL
- _PROTOTYP( int dohfunc, (int) );
- extern struct keytab fnctab[];
- extern int nfuncs;
- #endif /* NOSPL */
- #ifdef OS2
- #ifndef NOKVERBS
- _PROTOTYP( int dohkverb, (int) );
- extern struct keytab kverbs[];
- extern int nkverbs;
- #endif /* NOKVERBS */
- #endif /* OS2 */
- #ifndef NOSPL
- static char * hxxdcl[] = {
- "Syntax: ARRAY verb operands...",
- " ",
- "Declares arrays and performs various operations on them. Arrays have",
- "the following syntax:",
- " ",
- " \&a[n]",
- " ",
- "where "a" is a letter and n is a number or a variable with a numeric value",
- "or an arithmetic expression. The value of an array element can be anything",
- "at all -- a number, a character, a string, a filename, etc.",
- " ",
- "The following ARRAY verbs are available:",
- " ",
- "[ ARRAY ] DECLARE arrayname[n] [ = initializers... ]",
- " Declares an array of the given size, n. The resulting array has n+1",
- " elements, 0 through n. Array elements can be used just like any other",
- " variables. Initial values can be given for elements 1, 2, ... by",
- " including = followed by one or more values separated by spaces. If you",
- " omit the size, the array is sized according to the number of initializers;",
- " if none are given the array is destroyed and undeclared if it already",
- " existed. The ARRAY keyword is optional. Synonym: [ ARRAY ] DCL.",
- " ",
- "ARRAY SHOW [ arrayname ]",
- " Displays the contents of the given array. A range specifier can be",
- " included to display a segment of the array, e.g. "array show \&a[1:24].""
- ,
- " If the arrayname is omitted, all declared arrays are listed, but their",
- " contents is not shown. Synonym: SHOW ARRAY.",
- " ",
- "ARRAY CLEAR arrayname",
- " Clears all elements of the array, i.e. sets them to empty values.",
- " You may include a range specifier to clear a segment of the array rather",
- " than the whole array, e.g. "array clear \%a[22:38]"",
- " ",
- "ARRAY SET arrayname value",
- " Sets all elements of the array to the given value. You may specify a",
- " range to set a segment of the array, e.g. "array set \%a[2:9] 0"",
- " ",
- "ARRAY DESTROY arrayname",
- " Destroys and undeclares the given array.",
- " ",
- "ARRAY RESIZE arrayname number",
- " Changes the size of the given array, which must already exist, to the",
- " number given. If the number is smaller than the current size, the extra",
- " elements are discarded; if it is larger, new empty elements are added.",
- " ",
- "ARRAY COPY array1 array2",
- " Copys array1 to array2. If array2 has not been declared, it is created",
- " automatically. Range specifiers may be given on one or both arrays.",
- " ",
- "[ ARRAY ] SORT [ switches ] array-name [ array2 ]",
- " Sorts the given array lexically according to the switches. Element 0 of",
- " the array is excluded from sorting by default. The ARRAY keyword is",
- " optional. If a second array name is given, that array is sorted according",
- " to the first one. Switches:",
- " ",
- " /CASE:{ON,OFF}",
- " If ON, alphabetic case matters; if OFF it is ignored. If this switch is",
- " omitted, the current SET CASE setting applies.",
- " ",
- " /KEY:number",
- "
- Position (1-based column number) at which comparisons begin, 1 by default.",
- " ",
- " /NUMERIC",
- " Specifies a numeric rather than lexical sort.",
- " ",
- " /RANGE:low[:high]",
- " The range of elements, low through high, to be sorted. If this switch",
- " is not given, elements 1 through the dimensioned size are sorted. If",
- " :high is omitted, the dimensioned size is used. To include element 0 in",
- " a sort, use /RANGE:0 (to sort the whole array) or /RANGE:0:n (to sort",
- " elements 0 through n). You can use a range specifier in the array name",
- " instead of the /RANGE switch.",
- " ",
- " /REVERSE",
- " Sort in reverse order. If this switch is not given, the array is sorted",
- " in ascending order.",
- " ",
- "Various functions are available for array operations; see HELP FUNCTION for",
- "details. These include \fdimension(), \farraylook(), \ffiles(),
- \fsplit(),",
- "and many more.",
- ""};
- #endif /* NOSPL */
- #ifdef ZCOPY
- static char * hmxxcpy[] = {
- "Syntax: COPY [ switches ] file1 file2",
- " Copies the source file (file1) to the destination file (file2). If file2",
- " is a directory, this command copies file1 under its own name to the given",
- " directory. Only one file at a time may be copied; wildcards are not",
- " supported. Switches:",
- " ",
- " /LIST",
- " Print the filenames and status while copying. Synonyms: /LOG, /VERBOSE",
- " ",
- " /NOLIST",
- " Copy silently (default). Synonyms: /NOLOG, /QUIET",
- " ",
- " /SWAP-BYTES",
- " Swap bytes while copying.",
- #ifndef NOSPL
- " ",
- " /FROMB64",
- " Convert from Base64 encoding while copying.",
- " ",
- " /TOB64",
- " Convert to Base64 encoding while copying.",
- #endif /* NOSPL */
- ""
- };
- #endif /* ZCOPY */
- #ifndef NOFRILLS
- static char * hmxxren[] = {
- "Syntax: RENAME [ switches ] file1 file2",
- " Renames the source file (file1) to the destination file (file2). If file2",
- " is a directory, this command moves file1 under its own name to the given",
- " directory. Only one file at a time may be renamed; wildcards are not",
- " supported. Switches:",
- " ",
- " /LIST",
- " Print the filenames and status while renaming. Synonyms: /LOG, /VERBOSE",
- " ",
- " /NOLIST",
- " Rename silently (default). Synonyms: /NOLOG, /QUIET",
- ""
- };
- #endif /* NOFRILLS */
- static char *
- cmdlhlp[] = {
- "Command-line options are given after the program name in the system",
- "command that you use to start C-Kermit. Example:",
- " ",
- " kermit -i -s oofa.exe",
- " ",
- "tells C-Kermit to send (-s) the file oofa.exe in binary (-i) mode.",
- " ",
- "Command-line options are case-sensitive; "-s" is different from "-S".",
- #ifdef VMS
- "In VMS, uppercase options must be enclosed in doublequotes: ",
- " ",
- " $ kermit "-Y" "-S" -s oofa.txt ",
- #endif /* VMS */
- " ",
- "If any "action options" are included on the command line, C-Kermit exits",
- "after executing its command-line options. If -S is included, or no action",
- "options were given, C-Kermit enters its interactive command parser and",
- "issues its prompt.",
- " ",
- "Command-line options are single characters preceded by dash (-). Some",
- "require an "argument," others do not. If an argument contains spaces, it",
- "must be enclosed in doublequotes:",
- " ",
- " kermit -s "filename with spaces"",
- " ",
- "
- An option that does not require an argument can be bundled with other options:"
- ,
- " ",
- " kermit -Qis oofa.exe",
- " ",
- "Exceptions to the rules:",
- " ",
- " . If the first command-line option is a filename, Kermit executes commands",
- " from the file. Additional command-line options can follow the filename.",
- " ",
- " . The special option "=" (equal sign) or "--" (double hyphen) means to",
- " treat the rest of the command line as data, rather than commands; this",
- " data is placed in the argument vector array, \&@[], along with the other",
- " items on the command line, and also in the top-level \%1..\%9 variables."
- ,
- " ",
- #ifdef KERBANG
- " . A similar option "+" (plus sign) means: the name of a Kermit script",
- " file follows. This file is to be executed, and its name assigned to \%0",
- " and \&_[0]. All subsequent command-line arguments are to be ignored by",
- " Kermit but made available to the script as \%1, \%2, ..., as well as",
- " in the argument-vector arrays. The initialization file is not executed",
- " automatically in this case.",
- " ",
- #endif /* KERBANG */
- " . The -s option can accept multiple filenames, separated by spaces.",
- " ",
- " . the -j and -J options allow an optional second argument, the TCP port",
- " name or number.",
- " ",
- "Type "help options all" to list all the command-line options.",
- "Type "help option x" to see the help message for option x.",
- " ",
- "C-Kermit also offers a selection of "extended command-line" options.",
- "These begin with two dashes, followed by a keyword, and then, if the option",
- "has arguments, a colon (:) or equal sign (=) followed by the argument.",
- "Unlike single-letter options, extended option keywords aren't case sensitive",
- "and they can be abbreviated to any length that still distinguishes them from",
- "other extended-option keywords. Example:",
- " ",
- " kermit --banner:oofa.txt",
- " ",
- "which designates the file oofa.txt to be printed upon startup, rather than",
- "the built-in banner (greeting) text. To obtain a list of available",
- "extended options, type "help extended-options ?". To get help about all",
- "extended options, type "help extended-options". To get help about a",
- "particular extended option, type "help extended-option xxx", where "xxx"",
- "is the option keyword.",
- #ifndef NOIKSD
- " ",
- "At present, most of the extended options apply only to the Internet Kermit",
- "Service Daemon (IKSD). Type "help iksd" for details.",
- #endif /* NOIKSD */
- " ",
- ""
- };
- #ifndef NOHELP
- int
- doxopts() {
- extern char * xopthlp[], * xarghlp[];
- extern struct keytab xargtab[];
- extern int nxargs;
- int i, x, y, n = 0;
- #ifdef CK_TTGWSIZ
- #ifdef OS2
- ttgcwsz();
- #else /* OS2 */
- /* Check whether window size changed */
- if (ttgwsiz() > 0) {
- if (tt_rows > 0 && tt_cols > 0) {
- cmd_rows = tt_rows;
- cmd_cols = tt_cols;
- }
- }
- #endif /* OS2 */
- #endif /* CK_TTGWSIZ */
- y = cmkey(xargtab,
- nxargs,
- "Extended argument without the "--" prefix",
- "",
- xxstring
- );
- if (y == -3) {
- printf("n");
- for (i = 0; i <= XA_MAX; i++) {
- if (xopthlp[i]) {
- printf("%sn",xopthlp[i]);
- printf(" %sn",xarghlp[i]);
- printf("n");
- n += 3;
- if (n > (cmd_rows - 6)) {
- if (!askmore())
- return(0);
- else
- n = 0;
- }
- }
- }
- return(1);
- } else if (y < 0)
- return(y);
- if ((x = cmcfm()) < 0)
- return(x);
- printf("n%sn",xopthlp[y]);
- printf(" %snn",xarghlp[y]);
- return(1);
- }
- #ifndef NOCMDL
- int
- dohopts() {
- int i, n, x, y, z, all = 0, msg = 0;
- char *s;
- extern char *opthlp[], *arghlp[];
- extern int optact[];
- if ((x = cmtxt("A command-line option character,n
- or the word ALL, or carriage return for an overview",
- "", &s, xxstring)) < 0)
- return(x);
- if (!*s)
- msg = 1;
- else if (!strcmp(s,"all") || (!strcmp(s,"ALL")))
- all = 1;
- else if (*s == '-') /* Be tolerant of leading hyphen */
- s++;
- if (!all && (int)strlen(s) > 1) {
- printf("?A single character, please, or carriage to list them all.n");
- return(-9);
- }
- if (all) {
- y = 33;
- z = 127;
- } else {
- y = *s;
- z = (y == 0) ? 127 : y;
- if (y == 0) y = 33;
- }
- #ifdef CK_TTGWSIZ
- #ifdef OS2
- ttgcwsz();
- #else /* OS2 */
- /* Check whether window size changed */
- if (ttgwsiz() > 0) {
- if (tt_rows > 0 && tt_cols > 0) {
- cmd_rows = tt_rows;
- cmd_cols = tt_cols;
- }
- }
- #endif /* OS2 */
- #endif /* CK_TTGWSIZ */
- printf("n");
- for (i = 0, n = 1; msg != 0 && *cmdlhlp[i]; i++) {
- printf("%sn",cmdlhlp[i]);
- if (++n > (cmd_rows - 3)) {
- if (!askmore())
- return(0);
- else
- n = 0;
- }
- }
- if (all) {
- printf("The following command-line options are available:nn");
- n += 2;
- }
- for (i = y; msg == 0 && i <= z; i++) {
- if (!opthlp[i])
- continue;
- if (arghlp[i]) { /* Option with arg */
- printf(" -%c <arg>%sn",(char)i,(optact[i]?" (action option)":""));
- printf(" %sn",opthlp[i]);
- printf(" Argument: %snn",arghlp[i]);
- x = 4;
- } else { /* Option without arg */
- printf(" -%c %s%sn",
- (char)i, opthlp[i],
- (optact[i]?" (action option)":"")
- );
- printf(" Argument: (none)nn");
- x = 3;
- }
- n += x;
- if (n > (cmd_rows - x - 1)) {
- if (!askmore())
- return(0);
- else
- n = 0;
- }
- }
- return(0);
- }
- #endif /* NOCMDL */
- #endif /* NOHELP */
- #ifdef CKCHANNELIO
- static char * hxxfile[] = {
- "Syntax: FILE <subcommand> [ switches ] <channel> [ <data> ]",
- " Opens, closes, reads, writes, and manages local files.",
- " ",
- "The FILE commands are:",
- " ",
- " FILE OPEN (or FOPEN) -- Open a local file.",
- " FILE CLOSE (or FCLOSE) -- Close an open file.",
- " FILE READ (or FREAD) -- Read data from an open file.",
- " FILE WRITE (or FWRITE) -- Write data to an open file.",
- " FILE LIST (or FLIST) -- List open files.",
- " FILE STATUS (or FSTATUS) -- Show status of a channel.",
- " FILE REWIND (or FREWIND) -- Rewind an open file",
- " FILE COUNT (or FCOUNT) -- Count lines or bytes in an open file",
- " FILE SEEK (or FSEEK) -- Seek to specified spot in an open file.",
- " FILE FLUSH (or FFLUSH) -- Flush output buffers for an open file.",
- " ",
- "Type HELP FILE OPEN or HELP FOPEN for details about FILE OPEN;",
- "type HELP FILE CLOSE or HELP FCLOSE for details about FILE CLOSE, and so on.",
- " ",
- "The following variables are related to the FILE command:",
- " ",
- " \v(f_max) -- Maximum number of files that can be open at once",
- " \v(f_error) -- Completion code of most recent FILE command or function",
- " \v(f_count) -- Result of most recent FILE COUNT command",
- " ",
- "The following functions are related to the FILE command:",
- " ",
- " \F_eof() -- Check if channel is at EOF",
- " \F_pos() -- Get channel read/write position (byte number)",
- " \F_line() -- Get channel read/write position (line number)",
- " \F_handle() -- Get file handle",
- " \F_status() -- Get channel status",
- " \F_getchar() -- Read character",
- " \F_getline() -- Read line",
- " \F_getblock() -- Read block",
- " \F_putchar() -- Write character",
- " \F_putline() -- Write line",
- " \F_putblock() -- Write block",
- " \F_errmsg() -- Error message from most recent FILE command or function",
- " ",
- "Type HELP <function-name> for information about each one.",
- ""
- };
- static char * hxxf_op[] = {
- "Syntax: FILE OPEN [ switches ] <variable> <filename>",
- " Opens the file indicated by <filename> in the mode indicated by the",
- " switches, if any, or if no switches are included, in read-only mode, and",
- " assigns a channel number for the file to the given variable.",
- " Synonym: FOPEN. Switches:",
- " ",
- "/READ",
- " Open the file for reading.",
- " ",
- "/WRITE",
- " Open the file for writing. If /READ was not also specified, this creates",
- " a new file. If /READ was specifed, the existing file is preserved, but",
- " writing is allowed. In both cases, the read/write pointer is initially",
- " at the beginning of the file.",
- " ",
- "/APPEND",
- " If the file does not exist, create a new file and open it for writing.",
- " If the file exists, open it for writing, but with the write pointer",
- " positioned at the end.",
- " ",
- "/BINARY",
- #ifdef VMS
- " Opens the file in binary mode to inhibit end-of-line conversions.",
- #else
- #ifdef OS2
- " Opens the file in binary mode to inhibit end-of-line conversions.",
- #else
- #ifdef UNIX
- " This option is ignored in UNIX.",
- #else
- " This option is ignored on this platform.",
- #endif /* UNIX */
- #endif /* OS2 */
- #endif /* VMS */
- "Switches can be combined in an way that makes sense and is supported by the",
- "underlying operating system.",
- ""
- };
- static char * hxxf_cl[] = {
- "Syntax: FILE CLOSE <channel>",
- " Closes the file on the given channel if it was open.",
- " Also see HELP FILE OPEN. Synonym: FCLOSE.",
- ""
- };
- static char * hxxf_fl[] = {
- "Syntax: FILE FLUSH <channel>",
- " Flushes output buffers on the given channel if it was open, forcing",
- " all material previously written to be committed to disk. Synonym: FFLUSH.",
- " Also available as \F_flush().",
- ""
- };
- static char * hxxf_li[] = {
- "Syntax: FILE LIST",
- " Lists the channel number, name, modes, and position of each file opened",
- " with FILE OPEN. Synonym: FLIST.",
- ""
- };
- static char * hxxf_re[] = {
- "Syntax: FILE READ [ switches ] <channel> [ <variable> ]",
- " Reads data from the file on the given channel number into the <variable>,",
- " if one was given; if no variable was given, the result is printed on",
- " the screen. The variable should be a macro name rather than a \%x",
- " variable or array element if you want backslash characters in the file to",
- " be taken literally. Synonym: FREAD. Switches:",
- " ",
- "/LINE",
- " Specifies that a line of text is to be read. A line is defined according",
- " to the underlying operating system's text-file format. For example, in",
- " UNIX a line is a sequence of characters up to and including a linefeed.",
- " The line terminator (if any) is removed before assigning the text to the",
- " variable. If no switches are included with the FILE READ command, /LINE",
- " is assumed.",
- " ",
- "/SIZE:number",
- " Specifies that the given number of bytes (characters) is to be read.",
- " This gives a semblance of "record i/o" for files that do not necessarily",
- " contain lines. The resulting block of characters is assigned to the",
- " variable without any editing.",
- " ",
- "/CHARACTER",
- " Equivalent to /SIZE:1. If FILE READ /CHAR succeeds but the <variable> is",
- " empty, this indicates a NUL byte was read.",
- " ",
- "Synonym: FREAD.",
- "Also available as \F_getchar(), \F_getline(), \F_getblock().",
- ""
- };
- static char * hxxf_rw[] = {
- "Syntax: FILE REWIND <channel>",
- " If the channel is open, moves the read/write pointer to the beginning of",
- " the file. Equivalent to FILE SEEK <channel> 0. Synonym: FREWIND.",
- " Also available as \F_rewind().",
- ""
- };
- static char * hxxf_se[] = {
- "Syntax: FILE SEEK [ switches ] <channel> { [{+,-}]<number>, EOF }",
- " Switches are /BYTE, /LINE, /RELATIVE, ABSOLUTE.",
- " Moves the file pointer for this file to the given position in the",
- " file. Subsequent FILE READs or WRITEs will take place at that position.",
- " If neither the /RELATIVE nor /ABSOLUTE switch is given, an unsigned",
- " <number> is absolute; a signed number is relative. EOF means to move to",
- " the end of the file. Synonym: FSEEK. Also available as \F_seek().",
- ""
- };
- static char * hxxf_st[] = {
- "Syntax: FILE STATUS <channel>",
- " If the channel is open, this command shows the name of the file, the",
- " switches it was opened with, and the current read/write position.",
- " Synonym: FSTATUS",
- ""
- };
- static char * hxxf_co[] = {
- "Syntax: FILE COUNT [ { /BYTES, /LINES, /LIST, /NOLIST } ] <channel>",
- " If the channel is open, this command prints the nubmer of bytes (default)",
- " or lines in the file if at top level or if /LIST is included; if /NOLIST",
- " is given, the result is not printed. In all cases the result is assigned",
- " to \v(f_count). Synonym: FCOUNT",
- ""
- };
- static char * hxxf_wr[] = {
- "FILE WRITE [ switches ] <channel> <text>",
- " Writes the given text to the file on the given channel number. The <text>",
- " can be literal text or a variable, or any combination. If the text might",
- " contain leading or trailing spaces, it must be enclosed in braces if you",
- " want to preserve them. Synonym: FWRITE. Switches:",
- " ",
- "/LINE",
- " Specifies that an appropriate line terminator is to be added to the",
- " end of the <text>. If no switches are included, /LINE is assumed.",
- " ",
- "/SIZE:number",
- " Specifies that the given number of bytes (characters) is to be written.",
- " If the given <text> is longer than the requested size, it is truncated;",
- " if is shorter, it is padded according /LPAD and /RPAD switches. Synonym:",
- " /BLOCK.",
- " ",
- "/LPAD[:value]",
- " If /SIZE was given, but the <text> is shorter than the requested size,",
- " the text is padded on the left with sufficient copies of the character",
- " whose ASCII value is given to write the given length. If no value is",
- " specified, 32 (the code for Space) is used. The value can also be 0 to",
- " write the indicated number of NUL bytes. If /SIZE was not given, this",
- " switch is ignored.",
- " ",
- "/RPAD[:value]",
- " Like LPAD, but pads on the right.",
- " ",
- "/STRING",
- " Specifies that the <text> is to be written as-is, with no terminator added."
- ,
- " ",
- "/CHARACTER",
- " Specifies that one character should be written. If the <text> is empty or",
- " not given, a NUL character is written; otherwise the first character of",
- " <text> is given.",
- " ",
- "Synonym FWRITE.",
- "Also available as \F_putchar(), \F_putline(), \F_putblock().",
- ""
- };
- static int
- dohfile(cx) int cx; {
- extern struct keytab fctab[];
- extern int nfctab;
- int x;
- if (cx == XXFILE) { /* FILE command was given */
- /* Get subcommand */
- if ((cx = cmkey(fctab,nfctab,"Operation","",xxstring)) < 0) {
- if (cx == -3) {
- if ((x = cmcfm()) < 0)
- return(x);
- cx = XXFILE;
- } else
- return(cx);
- }
- if ((x = cmcfm()) < 0)
- return(x);
- switch (cx) {
- case FIL_CLS: cx = XXF_CL; break;
- case FIL_FLU: cx = XXF_FL; break;
- case FIL_LIS: cx = XXF_LI; break;
- case FIL_OPN: cx = XXF_OP; break;
- case FIL_REA: cx = XXF_RE; break;
- case FIL_REW: cx = XXF_RW; break;
- case FIL_SEE: cx = XXF_SE; break;
- case FIL_STA: cx = XXF_ST; break;
- case FIL_WRI: cx = XXF_WR; break;
- case FIL_COU: cx = XXF_CO; break;
- }
- }
- switch (cx) {
- case XXFILE: return(hmsga(hxxfile));
- case XXF_CL: return(hmsga(hxxf_cl));
- case XXF_FL: return(hmsga(hxxf_fl));
- case XXF_LI: return(hmsga(hxxf_li));
- case XXF_OP: return(hmsga(hxxf_op));
- case XXF_RE: return(hmsga(hxxf_re));
- case XXF_RW: return(hmsga(hxxf_rw));
- case XXF_SE: return(hmsga(hxxf_se));
- case XXF_ST: return(hmsga(hxxf_st));
- case XXF_WR: return(hmsga(hxxf_wr));
- case XXF_CO: return(hmsga(hxxf_co));
- default:
- return(-2);
- }
- }
- #endif /* CKCHANNELIO */
- int
- dohlp(xx) int xx; {
- int x,y;
- debug(F101,"DOHELP xx","",xx);
- if (xx < 0) return(xx);
- #ifdef NOHELP
- if ((x = cmcfm()) < 0)
- return(x);
- printf("n%s, Copyright (C) 1985, 2000,",versio);
- return(hmsga(tophlp));
- #else /* help is available */
- if (helpfile)
- return(dotype(helpfile,xaskmore,0,0,NULL,0,NULL));
- #ifdef CKCHANNELIO
- if (xx == XXFILE)
- return(dohfile(xx));
- else if (xx == XXF_RE || xx == XXF_WR || xx == XXF_OP ||
- xx == XXF_CL || xx == XXF_SE || xx == XXF_RW ||
- xx == XXF_FL || xx == XXF_LI || xx == XXF_ST || xx == XXF_CO)
- return(dohfile(xx));
- #endif /* CKCHANNELIO */
- switch (xx) {
- #ifndef NOSPL
- case XXASS: /* ASSIGN */
- return(hmsga(hxxass));
- case XXASK: /* ASK */
- return(hmsga(hxxask));
- case XXASKQ:
- return(hmsga(hxxaskq));
- case XXAPC:
- return(hmsg("Syntax: APC textn
- Echoes the text within a VT220/320/420 Application Program Command."));
- #endif /* NOSPL */
- #ifndef NOFRILLS
- case XXBUG:
- return(hmsg("Describes how to get technical support."));
- #endif /* NOFRILLS */
- #ifndef NOSPL
- case XXBEEP:
- #ifdef OS2
- return(hmsg("Syntax: BEEP [ { ERROR, INFORMATION, WARNING } ]n
- Generates a bell according to the current settings. If SET BELL is set ton
- "system-sounds" then the appropriate System Sound will be generated.n
- Default is INFORMATION."));
- #else /* OS2 */
- return(hmsg("Syntax: BEEPn
- Sends a BEL character to your terminal."));
- #endif /* OS2 */
- #endif /* NOSPL */
- case XXBYE: /* BYE */
- return(hmsg(hmxxbye));
- case XXCHK: /* check */
- return(hmsg("
- Syntax: CHECK namen
- Checks
- to see if the named feature is included in this version of C-Kermit.n
- To list the features you can check, type "check ?"."));
- #ifndef NOFRILLS
- case XXCLE: /* clear */
- return(hmsga(hmxxcle));
- #endif /* NOFRILLS */
- case XXCLO: /* close */
- return(hmsga(hmxxclo));
- case XXCOM: /* comment */
- #ifndef STRATUS /* Can't use # for comments in Stratus VOS */
- return(hmsg("
- Syntax: COMMENT textn
- Example: COMMENT - this is a comment.n
- Introduces a comment. Beginning of command line only. Commands may alson
- have trailing comments, introduced by ; or #."));
- #else
- return(hmsg("
- Syntax: COMMENT textn
- Example: COMMENT - this is a comment.n
- Introduces a comment. Beginning of command line only. Commands may alson
- have trailing comments, introduced by ; (semicolon)."));
- #endif /* STRATUS */
- #ifndef NOLOCAL
- case XXCON: /* CONNECT */
- case XXCQ: /* CQ == CONNECT /QUIETLY */
- hmsga(hmxxcon);
- printf("Your escape character is Ctrl-%c (ASCII %d, %s)rn",
- ctl(escape), escape, (escape == 127 ? "DEL" : ccntab[escape]));
- return(0);
- #endif /* NOLOCAL */
- #ifdef ZCOPY
- case XXCPY:
- return(hmsga(hmxxcpy));
- #endif /* ZCOPY */
- #ifdef NOFRILLS
- case XXREN:
- return(hmsga(hmxxren));
- #endif /* NOFRILLS */
- case XXCWD: /* CD / CWD */
- #ifdef vms
- return(hmsg("Syntax: CD [ directory or device:directory ]n
- Change Working Directory, equivalent to VMS SET DEFAULT command"));
- #else
- #ifdef datageneral
- return(hmsg("Change Working Directory, equivalent to DG 'dir' command"));
- #else
- #ifdef OS2
- return(hmsg("Syntax: CD [ directoryname ]n
- Change Directory. If directoryname is not specified, changes to directoryn
- specified by HOME environment variable, if any. Also see HELP SET CD"));
- #else
- return(hmsg("Syntax: CD [ directoryname ]n
- Change Directory. If directory name omitted, changes to your homen
- directory. Also see HELP SET CD."));
- #endif /* OS2 */
- #endif /* datageneral */
- #endif /* vms */
- #ifndef NOSPL
- case XXARRAY:
- case XXDCL: /* DECLARE */
- case XXSORT:
- return(hmsga(hxxdcl));
- case XXDEF: /* DEFINE */
- return(hmsga(hxxdef));
- case XXUNDEF: /* UNDEFINE */
- return(hmsg("Syntax: UNDEFINE variable-namen
- Undefines a macro or variable."));
- #endif /* NOSPL */
- #ifndef NOFRILLS
- case XXDEL: /* delete */
- return(hmsga(hmxxdel));
- #endif /* NOFRILLS */
- #ifndef NODIAL
- case XXDIAL: /* DIAL, etc... */
- return(hmsga(hxxdial));
- case XXPDIA: /* PDIAL */
- return(hmsg("Syntax: PDIAL phonenumbern
- Partially dials a phone number. Like DIAL but does not wait for carriern
- or CONNECT message."));
- case XXRED:
- return(hmsg("Redial the number given in the most recent DIAL commnd."));
- case XXANSW: /* ANSWER */
- return(hmsga(hxxansw));
- case XXLOOK: /* LOOKUP number in directory */
- return(hmsga(hxxlook));
- #endif /* NODIAL */
- case XXDIR: /* DIRECTORY */
- return(hmsga(hmxxdir));
- case XXLS:
- #ifdef UNIXOROSK
- return(hmsg("Syntax: LS [ args ]n
- Runs "ls" with the given arguments."));
- #else
- return(hmsga(hmxxdir));
- #endif /* UNIXOROSK */
- #ifndef NOSERVER
- #ifndef NOFRILLS
- case XXDIS:
- return(hmsg("Syntax: DISABLE commandn
- Security for the C-Kermit server. Prevents the client Kermit program fromn
- executing the named REMOTE command, such as CD, DELETE, RECEIVE, etc."));
- #endif /* NOFRILLS */
- #endif /* NOSERVER */
- #ifndef NOSPL
- case XXDO: /* do */
- return(hmsg("Syntax: [ DO ] macroname [ arguments ]n
- Executes a macro that was defined with the DEFINE command. The word DOn
- can be omitted. Trailing argument words, if any, are automaticallyn
- assigned to the macro argument variables \%1 through \%9."));
- #endif /* NOSPL */
- #ifndef NOSPL
- case XXDEC:
- return(hmsga(hxxdec));
- #endif /* NOSPL */
- case XXECH: /* echo */
- return(hmsg("Syntax: ECHO textn
- Displays the text on the screen, followed by a line terminator. The ECHOn
- text may contain backslash codes. Example: ECHO \7Wake up!\7. Also seen
- XECHO and WRITE SCREEN."));
- case XXXECH: /* xecho */
- return(hmsg("Syntax: XECHO textn
- Just like ECHO but does not add a line terminator to the text. See ECHO."));
- #ifndef NOSERVER
- #ifndef NOFRILLS
- case XXENA:
- return(hmsg("Syntax: ENABLE capabilityn
- For use with server mode. Allows the client Kermit program access to then
- named capability, such as CD, DELETE, RECEIVE, etc. Opposite of DISABLE."));
- #endif /* NOFRILLS */
- #endif /* NOSERVER */
- #ifndef NOSPL
- case XXEND: /* end */
- return(hmsg("Syntax: END [ number [ message ] ]n
- Exits from the current macro or TAKE file, back to wherever invoked from.n
- Number is return code. Message, if given, is printed."));
- case XXEVAL: /* evaluate */
- return(hmsga(hmxxeval));
- #endif /* NOSPL */
- #ifndef NOFRILLS
- case XXERR: /* e-packet */
- return(hmsg("Syntax: E-PACKETn
- Sends an Error packet to the other Kermit."));
- #endif /* NOFRILLS */
- case XXEXI: /* exit */
- case XXQUI:
- return(hmsg("Syntax: QUIT (or EXIT) [ number ]n
- Exits from the Kermit program, closing all open files and devices,n
- optionally setting the program's return code to the given number. Alson
- see SET EXIT."));
- case XXFIN:
- return(hmsg("Syntax: FINISHn
- Tells the remote Kermit server to shut down without logging out."));
- #ifndef NOSPL
- case XXFOR:
- return(hmsga(forhlp));
- #endif /* NOSPL */
- case XXGET:
- return(hmsga(hmxxget));
- case XXMGET:
- return(hmsga(hmxxmget));
- #ifndef NOSPL
- #ifndef NOFRILLS
- case XXGOK:
- return(hmsg("Syntax: GETOK promptn
- Prints the prompt, makes user type 'yes', 'no', or 'ok', and sets SUCCESSn
- or FAILURE accordingly. Also see SET ASK-TIMER."));
- #endif /* NOFRILLS */
- #endif /* NOSPL */
- #ifndef NOSPL
- case XXGOTO:
- return(hmsg("Syntax: GOTO labeln
- In a TAKE file or macro, go to the given label. A label is a word on then
- left margin that starts with a colon (:). Example:nn
- :oofan
- echo Hello!n
- goto oofa"));
- #endif /* NOSPL */
- case XXHAN:
- return(hmsg("Syntax: HANGUPn
- Hang up the phone or network connection."));
- case XXHLP:
- /*
- We get confirmation here, even though we do it again in hmsga(), to prevent
- the Copyright message from being printed prematurely. This doesn't do any
- harm, because the first call to cmcfm() sets cmflgs to 1, making the second
- call return immediately.
- */
- if ((x = cmcfm()) < 0)
- return(x);
- if (helpfile) {
- printf("n%s, Copyright (C) 1985, 2000,n
- Trustees of Columbia University in the City of New York.nn",versio);
- return(dotype(helpfile,xaskmore,3,0,NULL,0,NULL));
- } else {
- printf("n%s, Copyright (C) 1985, 2000,",versio);
- return(hmsga(tophlp));
- }
- case XXINT:
- return(hmsg("Give a brief introduction to C-Kermit."));
- #ifndef NOSPL
- case XXIF:
- return(hmsga(ifhlp));
- case XXINC:
- return(hmsga(hxxinc));
- case XXINP:
- return(hmsga(hxxinp));
- #endif /* NOSPL */
- #ifdef CK_MINPUT
- case XXMINP:
- return(hmsga(hmxxminp));
- #endif /* CK_MINPUT */
- #ifndef NOSPL
- case XXREI:
- return(hmsg("Syntax: REINPUT n stringn
- Looks for the string in the text that has recently been INPUT, set SUCCESSn
- or FAILURE accordingly. Timeout, n, must be specified but is ignored."));
- #endif /* NOSPL */
- #ifndef NOFRILLS
- case XXREN:
- return(hmsga(hmxxren));
- #endif /* NOFRILLS */
- #ifndef NOSPL
- case XXLBL:
- return(hmsg("
- Introduces a label, like :loop, for use with GOTO in TAKE files or macros.n
- See GOTO."));
- #endif /* NOSPL */
- case XXLOG:
- return(hmsga(hmxxlg));
- #ifndef NOSCRIPT
- case XXLOGI:
- return(hmsga(hmxxlogi));
- #endif
- #ifndef NOFRILLS
- case XXMAI:
- return(hmsg("Syntax: MAIL filename addressn
- Equivalent to SEND /MAIL /ADDRESS:xxx filename."));
- #endif /* NOFRILLS */
- #ifndef NOMSEND
- case XXMSE:
- return(hmsga(hmxxmse));
- case XXADD:
- return(hmsga(hmxxadd));
- case XXMMOVE:
- return(hmsg("MMOVE is exactly like MSEND, except each file that isn
- sent successfully is deleted after it is sent."));
- #endif /* NOMSEND */
- #ifndef NOSPL
- case XXOPE:
- return(hmsga(openhlp));
- #endif /* NOSPL */
- case XXNEW:
- return(hmsg(
- " Prints news of new features since publication of "Using C-Kermit"."));
- case XXUPD:
- return(hmsg(
- " New features are described in the file DOCS\UPDATES.TXT."));
- #ifndef NOSPL
- case XXOUT:
- return(hmsga(hxxout));
- #endif /* NOSPL */
- #ifdef ANYX25
- #ifndef IBMX25
- case XXPAD:
- return(hmsga(hxxpad));
- #endif /* IBMX25 */
- #endif /* ANYX25 */
- #ifndef NOSPL
- case XXPAU:
- return(hmsga(hxxpau));
- case XXMSL:
- return(hmsga(hxxmsl));
- #endif /* NOSPL */
- #ifdef TCPSOCKET
- case XXPNG:
- return(hmsg("Syntax: PING [ IP-hostname-or-number ]n
- Checks if the given IP network host is reachable. Default host is fromn
- most recent SET HOST or TELNET command. Runs system PING program, if any.")
- );
- case XXFTP:
- return(hmsg("Syntax: FTP [ IP-hostname-or-number ]n
- Makes an FTP connection to the given IP host or, if no host specified, ton
- the current host. Uses the system's FTP program, if any."));
- #endif /* TCPSOCKET */
- #ifndef NOFRILLS
- case XXPRI:
- #ifdef UNIX
- return(hmsg("Syntax: PRINT file [ options ]n
- Prints the local file on a local printer with the given options. Also seen
- HELP SET PRINTER."));
- #else
- #ifdef VMS
- return(hmsg("Syntax: PRINT file [ options ]n
- Prints the local file on a local printer with the given options. Also seen
- HELP SET PRINTER."));
- #else
- return(hmsg("Syntax: PRINT filen
- Prints the local file on a local printer. Also see HELP SET PRINTER."));
- #endif /* UNIX */
- #endif /* VMS */
- #endif /* NOFRILLS */
- case XXPWD:
- return(hmsg("Syntax: PWDn
- Print the name of the current working directory."));
- #ifndef NOSPL
- case XXREA:
- return(hmsg("Syntax: READ variablenamen
- Reads a line from the currently open READ or !READ file into the variablen
- (see OPEN)."));
- #endif /* NOSPL */
- #ifndef NOXFER
- case XXREC:
- return(hmsga(hmxxrc));
- case XXREM:
- y = cmkey(remcmd,nrmt,"Remote command","",xxstring);
- return(dohrmt(y));
- #endif /* NOXFER */
- #ifndef NOSPL
- case XXRET:
- return(hmsg("Syntax: RETURN [ value ]n
- Return from a macro. An optional return value can be given for use withn
- \fexecute(macro), which allows macros to be used like functions."));
- #endif /* NOSPL */
- #ifndef NOXFER
- case XXSEN:
- return(hmsga(hmxxsen));
- case XXMOVE:
- return(hmsg("MOVE is exactly like SEND, except each file that isn
- sent successfully is deleted after it is sent."));
- #ifndef NORESEND
- case XXRSEN:
- return(hmsg(hmxxrsen));
- case XXREGET:
- return(hmsg(hmxxrget));
- case XXPSEN:
- return(hmsg(hmxxpsen));
- #endif /* NORESEND */
- #ifndef NOSERVER
- case XXSER:
- return(hmsg(hmxxser));
- #endif /* NOSERVER */
- #endif /* NOXFER */
- #ifndef NOJC
- case XXSUS:
- return(hmsg("Syntax: SUSPEND or Zn
- Suspends Kermit. Continue Kermit with the appropriate system command,n
- such as fg."));
- #endif /* NOJC */
- case XXSET:
- y = cmkey(prmtab,nprm,"Parameter","",xxstring);
- debug(F101,"HELP SET y","",y);
- return(dohset(y));
- #ifndef NOPUSH
- case XXSHE:
- if (nopush) {
- if ((x = cmcfm()) < 0) return(x);
- printf("Sorry, help not available for "%s"n",cmdbuf);
- break;
- } else
- return(hmsga(hxxshe));
- #ifdef CK_REDIR
- case XXFUN:
- return(hmsg("Syntax: REDIRECT commandn
- Runs the given local command with its standard input and output redirectedn
- to the current SET LINE or SET HOST communications path.n
- Synonym: < (Left angle bracket)."));
- #endif /* CK_REDIR */
- #ifdef CK_REXX
- case XXREXX:
- return(hmsg("Syntax: REXX textn
- The text is a Rexx command to be executed. The \v(rexx) variable is setn
- to the Rexx command's return value.n
- To execute a rexx program file, use: REXX call <filename>n
- Rexx programs may call C-Kermit functions by placing the C-Kermit commandn
- in single quotes. For instance: 'set parity none'."));
- #endif /* CK_REXX */
- #endif /* NOPUSH */
- #ifndef NOSHOW
- case XXSHO:
- return(hmsg("
- Display current values of various items (SET parameters, variables, etc).n
- Type SHOW ? for a list of categories."));
- #endif /* NOSHOW */
- case XXSPA:
- #ifdef datageneral
- return(hmsg("
- Display disk usage in current device, directory,n
- or return space for a specified device, directory."));
- #else
- return(hmsg("Syntax: SPACEn
- Display disk usage in current device and/or directory"));
- #endif
- case XXSTA:
- return(hmsg("Syntax: STATISTICS [/BRIEF]n
- Display statistics about most recent file transfer"));
- #ifndef NOSPL
- case XXSTO:
- return(hmsg("Syntax: STOP [ number [ message ] ]n
- Stop executing the current macro or TAKE file and return immediately ton
- the C-Kermit prompt. Number is a return code. Message printed if given."));
- #endif /* NOSPL */
- case XXTAK:
- return(hmsg("Syntax: TAKE filenamen
- Take Kermit commands from the named file. Kermit command files mayn
- themselves contain TAKE commands, up to a reasonable depth of nesting."));
- #ifdef TCPSOCKET
- #ifdef TNCODE
- case XXTEL:
- return(hmsga(hmxxtel));
- case XXTELOP:
- return(hmsga(hxtopt));
- #endif /* TNCODE */
- #ifdef RLOGCODE
- case XXRLOG:
- return(hmsg("Syntax: RLOGIN [ switches ] [ host [ username ] ]n
- Equivalent to SET NETWORK TYPE TCP/IP, SET HOST host [ service ] /RLOGIN,n
- IF SUCCESS CONNECT. If host is omitted, the previous connection (if any)n
- is resumed. Depending on how Kermit has been built switches may ben
- available to require Kerberos authentication and DES encryption."));
- #endif /* RLOGCODE */
- #endif /* TCPSOCKET */
- #ifndef NOXMIT
- case XXTRA:
- return(hmsga(hxxxmit));
- #endif /* NOXMIT */
- #ifndef NOFRILLS
- case XXTYP:
- return(hmsga(hmxxtyp));
- #endif /* NOFRILLS */
- #ifndef NOSPL
- case XXWHI:
- return(hmsga(whihlp));
- case XXSWIT:
- return(hmsga(swihlp));
- #endif /* NOSPL */
- #ifndef NOCSETS
- case XXXLA:
- return(hmsga(hxxxla));
- #endif /* NOCSETS */
- case XXVER:
- return(hmsg("Syntax: VERSIONnDisplays the program version number."));
- #ifndef NOSPL
- case XXWAI:
- return(hmsga(hxxwai));
- #endif /* NOSPL */
- #ifndef NOFRILLS
- case XXWHO:
- return(hmsg("Syntax: WHO [ user ]nDisplays info about the user."));
- case XXWRI:
- return(hmsga(hxxwri));
- case XXWRL:
- return(hmsg(
- "WRITE-LINE (WRITELN) is just like WRITE, but includes a line terminatorn
- at the end of text. See WRITE."));
- #endif /* NOFRILLS */
- #ifndef NOSPL
- case XXIFX:
- return(hmsga(ifxhlp));
- case XXGETC: /* GETC */
- return(hmsga(hxxgetc));
- case XXFWD: /* FORWARD */
- return(hmsg(
- "Like GOTO, but searches only forward for the label. See GOTO."));
- case XXLOCAL: /* LOCAL */
- return(hmsg(
- "Declares a variable to be local to the current macro or command file."));
- #endif /* NOSPL */
- case XXVIEW:
- return(hmsg(
- "View the terminal emulation screen even when there is no connection."));
- case XXASC:
- return(hmsg("Synonym for SET FILE TYPE TEXT."));
- case XXBIN:
- return(hmsg("Synonym for SET FILE TYPE BINARY."));
- case XXDATE:
- return(hmsga(hmxxdate));
- case XXRETR:
- return(hmsg(
- "Just like GET but asks the server to delete each file that has beenn
- sent successfully."));
- case XXEIGHT:
- return(hmsg(
- "Equivalent to SET PARITY NONE, SET COMMAND BYTE 8, SET TERMINAL BYTE 8."));
- case XXSAVE:
- return(hmsg("Syntax: SAVE KEYMAP <file>n
- Saves current keymap definitions to file, "keymap.ini" by default."));
- #ifndef NOFRILLS
- #ifndef NOPUSH
- case XXEDIT:
- return(hmsg("Syntax: EDIT [ <file> ]n
- Starts your preferred editor on the given file, or if none given, the mostn
- recently edited file, if any. Also see SET EDITOR."));
- #endif /* NOPUSH */
- #endif /* NOFRILLS */
- #ifdef BROWSER
- case XXBROWS:
- return(hmsg("Syntax: BROWSE [ <url> ]n
- Starts your preferred Web browser on the given URL, or if none given, then
- most recently visited URL, if any. Also see SET BROWSER."));
- #endif /* BROWSER */
- #ifdef CK_TAPI
- case XXTAPI:
- return(hmsga(hxxtapi));
- #endif /* CK_TAPI */
- #ifdef PIPESEND
- case XXCSEN:
- return(hmsg("Syntax: CSEND [ switches ] <command> [ <as-name> ]n
- Sends from the given <command> rather than from a file. Equivalent ton
- SEND /COMMAND; see HELP SEND for details."));
- case XXCREC:
- return(hmsg("Syntax: CRECEIVE [ switches ] <command>n
- Receives to the given <command> rather than to a file. Equivalent ton
- RECEIVE /COMMAND; see HELP RECEIVE for details."));
- case XXCGET:
- return(hmsg("Syntax: CGET <remote-file-or-command> <local-command>n
- Equivalent to GET /COMMAND; see HELP GET for details."));
- #endif /* PIPESEND */
- #ifndef NOSPL
- case XXFUNC:
- /*
- Tricky parsing. We want to let them type the function name in any format
- at all: fblah(), fblah, \fblah(), fblah, blah, blah(), etc, but of course
- only one of these is recognized by cmkey(). So we call cmkeyx() (the "no
- complaints" version of cmkey()), and if it fails, we try the other formats
- silently, and still allow for <no-name-given>, editing and reparse, etc.
- */
- y = cmkeyx(fnctab,nfuncs,"Name of function","",NULL);
- if (y == -1) { /* Reparse needed */
- return(y);
- } else if (y == -3) {
- if ((x = cmcfm()) < 0) /* For recall buffer... */
- return(x);
- return(dohfunc(y)); /* -3 gives general message */
- }
- if (y < 0) { /* Something given but didn't match */
- int dummy;
- char * p;
- for (p = atmbuf; *p; p++) { /* Chop off trailing parens if any */
- if (*p == '(') {
- *p = NUL;
- break;
- }
- }
- /* Chop off leading "\f" or "f" or "f" */
- p = atmbuf;
- if (*p == CMDQ) /* Allow for \f... */
- p++;
- if (*p == CMDQ && (*(p+1) == 'f' || *(p+1) == 'F')) { /* or f */
- p += 2;
- } else if (*p == 'f' || *p == 'F') { /* or just f */
- p++;
- }
- y = lookup(fnctab,p,nfuncs,&dummy); /* Look up the result */
- }
- if (y < 0) {
- printf("?No such function - "%s"n",atmbuf);
- return(-9);
- }
- x = cmgbrk(); /* Find out how user terminated */
- if (x == LF || x == CR) /* if with CR or LF */
- cmflgs = 1; /* restore cmflgs to say so */
- if ((x = cmcfm()) < 0) /* And THEN confirm so command will */
- return(x); /* get into recall buffer. */
- return(dohfunc(y));
- #endif /* NOSPL */
- #ifndef NOCMDL
- case XXOPTS: /* Command-line options */
- return(dohopts());
- case XXXOPTS: /* Extended command-line options */
- return(doxopts());
- #endif /* NOCMDL */
- #ifdef OS2
- #ifndef NOKVERBS
- case XXKVRB:
- y = cmkey(kverbs,nkverbs,"Name of keyboard verb without \k","",xxstring);
- return(dohkverb(y));
- #endif /* NOKVERBS */
- #endif /* OS2 */
- case XXKERMI:
- return(hmsg("Syntax: KERMIT [command-line-options]n
- Lets you give command-line options at the prompt or in a script.n
- HELP OPTIONS for more info."));
- case XXBACK:
- return(hmsg("Syntax: BACKn Returns to your previous directory."));
- case XXWHERE:
- return(hmsg("Syntax: WHEREn Tells where your transferred files went."));
- #ifndef NOXFER
- case XXREMV:
- return(hmsga(hmxxremv));
- #endif /* NOXFER */
- #ifdef CK_KERBEROS
- case XXAUTH:
- return(hmsga(hmxxauth));
- #endif /* CK_KERBEROS */
- #ifndef NOHTTP
- case XXHTTP:
- return(hmsga(hmxxhttp));
- #endif /* NOHTTP */
- #ifdef NETCMD
- case XXPIPE:
- return(hmsg("Syntax: PIPE [ command ]n
- Makes a connection through the program whose command line is given. Example:n
- n pipe rlogin xyzcorp.com"));
- #endif /* NETCMD */
- case XXSTATUS:
- return(hmsg(
- "STATUS is the same as SHOW STATUS; prints SUCCESS or FAILURE for then
- previous command."));
- #ifndef NOSPL
- case XXASSER:
- return(hmsg("Syntax: ASSERT <condition>n
- Succeeds or fails depending on <condition>; see HELP IF for <condition>s."));
- case XXFAIL:
- return(hmsg("Always fails."));
- case XXSUCC:
- return(hmsg("Always succeeds."));
- #endif /* NOSPL */
- #ifdef CK_LOGIN
- case XXLOGOUT:
- return(hmsg(
- "If you haved logged in to C-Kermit as an Internet Kermit server, the LOGOUTn
- command, given at the prompt, logs you out and closes your session."));
- #endif /* CK_LOGIN */
- #ifndef NOIKSD
- case XXIKSD:
- return(hmsg(
- "The Internet Kermit Service Daemon can be started only by the systemn
- administrator. The IKSD is documented separately."));
- #endif /* NOIKSD */
- case XXRESET:
- return(hmsg("Closes all open files and logs."));
- #ifndef NOCSETS
- case XXASSOC:
- return(hmsga(hmxxassoc));
- #endif /* NOCSETS */
- #ifndef NOSPL
- case XXSHIFT:
- return(hmsg("Syntax: SHIFT [ n ]n
- Shifts \%1..9 variables n places to the left; default n = 1."));
- #endif /* NOSPL */
- #ifndef NOPUSH
- case XXMAN:
- #ifdef UNIX
- return(hmsg("Syntax: MANUAL [ topic ]n
- Runs the "man" command on the given topic (default "kermit")."));
- #else
- #ifdef OS2
- return(hmsg("Syntax: MANUALn
- Accesses the Kermit 95 HTML manual using the current browser."));
- #else
- return(hmsg("Syntax: MANUAL [ topic ]n
- Runs the "help" command on the given topic (default "kermit")."));
- #endif /* OS2 */
- #endif /* UNIX */
- #endif /* NOPUSH */
- case XXWILD:
- return(hmsga(hmxxwild));
- #ifndef NOXFER
- case XXFAST:
- case XXCAU:
- case XXROB:
- return(hmsga(hmxxfast));
- #endif /* NOXFER */
- #ifdef CKPURGE
- case XXPURGE:
- return(hmsga(hmxxpurge));
- #else
- #ifdef VMS
- case XXPURGE:
- return(hmsga(hmxxpurge));
- #endif /* VMS */
- #endif /* CKPURGE */
- #ifndef NOXFER
- case XXRASG:
- return(hmsg("RASG and RASSIGN are short forms of REMOTE ASSIGN."));
- case XXRCWD:
- return(hmsg("RCD and RCWD are short forms of REMOTE CD."));
- case XXRCPY:
- return(hmsg("RCOPY is a short form of REMOTE COPY."));
- case XXRDEL:
- return(hmsg("RDELETE is a short form of REMOTE RELETE."));
- case XXRDIR:
- return(hmsg("RDIRECTORY is a short form of REMOTE DIRECTORY."));
- case XXRXIT:
- return(hmsg("REXIT is a short form of REMOTE EXIT."));
- case XXRHLP:
- return(hmsg("RHELP is a short form of REMOTE HELP."));
- case XXRHOS:
- return(hmsg("RHOST is a short form of REMOTE HOST."));
- case XXRKER:
- return(hmsg("RKERMIT is a short form of REMOTE KERMIT."));
- case XXRMKD:
- return(hmsg("RMKDIR is a short form of REMOTE MKDIR."));
- case XXRPRI:
- return(hmsg("RPRINT is a short form of REMOTE PRINT."));
- case XXRPWD:
- return(hmsg("RPWD is a short form of REMOTE PWD."));
- case XXRQUE:
- return(hmsg("QUERY and RQUERY are short forms of REMOTE QUERY."));
- case XXRREN:
- return(hmsg("RRENAME is a short form of REMOTE RENAME."));
- case XXRRMD:
- return(hmsg("RRMDIR is a short form of REMOTE RMDIR."));
- case XXRSET:
- return(hmsg("RSET is a short form of REMOTE SET."));
- case XXRSPA:
- return(hmsg("RSPACE is a short form of REMOTE SPACE."));
- case XXRTYP:
- return(hmsg("RTYPE is a short form of REMOTE TYPE."));
- case XXRWHO:
- return(hmsg("RWHO is a short form of REMOTE WHO."));
- #endif /* NOXFER */
- case XXSCRN:
- return(hmsga(hmxxscrn));
- #ifdef CKEXEC
- case XXEXEC:
- return(hmsg("Syntax: EXEC <command> [ <arg1> [ <arg2> [ ... ] ]n
- C-Kermit overlays itself with the given system command and starts it withn
- the given arguments. Upon any error, control returns to C-Kermit."));
- #endif /* CKEXEC */
- #ifndef NOSPL
- case XXTRACE:
- return(hmsg(
- "Syntax: TRACE { /ON, /OFF } { ASSIGNMENTS, COMMAND-LEVEL, ALL }n
- Turns tracing of the given object on or off."));
- #endif /* NOSPL */
- case XXNOTAV:
- return(hmsg(" This command is not configured in this version of Kermit."));
- default: {
- char *s;
- if ((x = cmcfm()) < 0) return(x);
- s = cmdbuf + (int)strlen(cmdbuf) -1;
- while (s >= cmdbuf && *s == SP)
- *s-- = NUL;
- while (s >= cmdbuf && *s != SP)
- s--;
- while (*s == SP) s++;
- printf("Sorry, help not available for "%s"n",s);
- break;
- }
- } /* switch */
- #endif /* NOHELP */
- return(success = 0);
- }
- /* H M S G -- Get confirmation, then print the given message */
- int
- hmsg(s) char *s; {
- int x;
- if ((x = cmcfm()) < 0) return(x);
- printf("n%snn",s);
- return(0);
- }
- #ifdef NOHELP
- int /* Print an array of lines, */
- hmsga(s) char *s[]; { /* cheap version. */
- int i;
- if ((i = cmcfm()) < 0) return(i);
- printf("n"); /* Start off with a blank line */
- for (i = 0; *s[i]; i++) { /* Print each line. */
- printf("%sn",s[i]);
- }
- printf("n");
- return(0);
- }
- #else /* NOHELP not defined... */
- int /* Print an array of lines, */
- hmsga(s) char *s[]; { /* pausing at end of each screen. */
- extern int hmtopline; /* (This should be a parameter...) */
- int x, y, i, j, k, n;
- if ((x = cmcfm()) < 0) return(x);
- #ifdef CK_TTGWSIZ
- #ifdef OS2
- ttgcwsz();
- #else /* OS2 */
- /* Check whether window size changed */
- if (ttgwsiz() > 0) {
- if (tt_rows > 0 && tt_cols > 0) {
- cmd_rows = tt_rows;
- cmd_cols = tt_cols;
- }
- }
- #endif /* OS2 */
- #endif /* CK_TTGWSIZ */
- printf("n"); /* Start off with a blank line */
- n = (hmtopline > 0) ? hmtopline : 1; /* Line counter */
- for (i = 0; *s[i]; i++) {
- printf("%sn",s[i]); /* Print a line. */
- y = (int)strlen(s[i]);
- k = 1;
- for (j = 0; j < y; j++) /* See how many newlines were */
- if (s[i][j] == 'n') k++; /* in the string... */
- n += k;
- if (n > (cmd_rows - 3) && *s[i+1]) /* After a screenful, give them */
- if (!askmore()) return(0); /* a "more?" prompt. */
- else n = 0;
- }
- printf("n");
- return(0);
- }
- #ifndef NOXMIT
- static char *hsetxmit[] = {
- "Syntax: SET TRANSMIT parameter value",
- " ",
- "Controls the behavior of the TRANSMIT command (see HELP TRANSMIT):",
- " ",
- "SET TRANSMIT ECHO { ON, OFF }",
- " Whether to echo text to your screen as it is being transmitted.",
- " ",
- "SET TRANSMIT EOF text",
- " Text to send after end of file is reached, e.g. \4 for Ctrl-D",
- " ",
- "SET TRANSMIT FILL number",
- " ASCII value of a character to insert into blank lines, 0 for none.",
- " Applies only to text mode. 0 by default.",
- " ",
- "SET TRANSMIT LINEFEED { ON, OFF }",
- " Transmit Linefeed as well as Carriage Return (CR) at the end of each line.",
- " Normally, only CR is sent.",
- " ",
- "SET TRANSMIT LOCKING-SHIFT { ON, OFF }",
- " Whether to use SO/SI for transmitting 8-bit data when PARITY is not NONE.",
- " ",
- "SET TRANSMIT PAUSE number",
- " How many milliseconds to pause after transmitting each line (text mode),",
- " or each character (binary mode).",
- " ",
- "SET TRANSMIT PROMPT number",
- " ASCII value of character to look for from host before sending next line",
- " when TRANSMITting in text mode; normally 10 (Linefeed). 0 means none;",
- " don't wait for a prompt.",
- " ",
- "SET TRANSMIT TIMEOUT number",
- " Number of seconds to wait for each character to echo when TRANSMIT ECHO",
- " is ON or TRANSMIT PROMPT is not 0. If 0 is specified, this means wait",
- " indefinitely for each echo.",
- " ",
- "Synonym: SET XMIT. SHOW TRANSMIT displays current settings.",
- "" };
- #endif /* NOXMIT */
- static char *hsetbkg[] = {
- "Syntax: SET BACKGROUND { OFF, ON }",
- " ",
- " SET BACKGROUND OFF forces prompts and messages to appear on your screen",
- " even though Kermit thinks it is running in the background.",
- "" };
- #ifdef DYNAMIC
- static char *hsetbuf[] = {
- "Syntax: SET BUFFERS n1 [ n2 ]",
- " ",
- " Changes the overall amount of memory allocated for SEND and RECEIVE packet",
- " buffers, respectively. Bigger numbers let you have longer packets and",
- " more window slots. If n2 is omitted, the same value as n1 is used.",
- #ifdef BIGBUFOK
- " ",
- " NOTE: This command is not needed in this version of C-Kermit, which is",
- " already configured for maximum-size packet buffers.",
- #endif /* BIGBUFOK */
- "" };
- #endif /* DYNAMIC */
- static char *hsetcmd[] = {
- "Syntax: SET COMMAND parameter value",
- " ",
- #ifdef CK_AUTODL
- "SET COMMAND AUTODOWNLOAD { ON, OFF }",
- " Enables/Disables automatic recognition of Kermit packets while in",
- " command mode. ON by default.",
- " ",
- #endif /* CK_AUTODL */
- "SET COMMAND BYTESIZE { 7, 8 }",
- " Informs C-Kermit of the bytesize of the communication path between itself",
- " and your keyboard and screen. 7 is assumed. SET COMMAND BYTE 8 to allow",
- " entry and display of 8-bit characters.",
- " ",
- #ifdef OS2
- "SET COMMAND COLOR <foreground-color> <background-color>",
- " Lets you choose colors for Command screen. Use ? in the color fields to",
- " to get lists of available colors.",
- " ",
- "SET COMMAND CURSOR-POSITION <row> <column>",
- " Moves the command-screen cursor to the given position (1-based). This",
- " command should be used in scripts instead of relying on ANSI.SYS escape",
- " sequences.",
- " ",
- #endif /* OS2 */
- "SET COMMAND HEIGHT <number>",
- " Informs C-Kermit of the number of rows in your command screen for the",
- " purposes of More?-prompting.",
- " ",
- "SET COMMAND WIDTH <number>",
- " Informs C-Kermit of the number of characters across your screen for",
- " purposes of screen formatting.",
- " ",
- "SET COMMAND MORE-PROMPTING { ON, OFF }",
- " ON (the default) enables More?-prompting when C-Kermit needs to display",
- " text that does not fit vertically on your screen. OFF allows the text to",
- " scroll by without intervention. If your command window has scroll bars,",
- " you might prefer OFF.",
- " ",
- #ifdef CK_RECALL
- "SET COMMAND RECALL-BUFFER-SIZE number",
- " How big you want C-Kermit's command recall buffer to be. By default, it",
- " holds 10 commands. You can make it any size you like, subject to memory",
- " constraints of the computer. A size of 0 disables command recall.",
- " Whenever you give this command, previous command history is lost.",
- " ",
- #endif /* CK_RECALL */
- "SET COMMAND QUOTING { ON, OFF }",
- " Whether to treat backslash and question mark as special characters (ON),",
- " or as ordinary data characters (OFF) in commands. ON by default.",
- " ",
- #ifdef CK_RECALL
- "SET COMMAND RETRY { ON, OFF }",
- " Whether to reprompt you with the correct but incomplete portion of a",
- " syntactically incorrect command. ON by default.",
- " ",
- #endif /* CK_RECALL */
- #ifdef OS2
- "SET COMMAND SCROLLBACK <lines>",
- " Sets size of virtual Command screen buffer to the given number of lines,",
- " which includes the active Command screen. The minimum is 256. The max",
- " is 2 million. The default is 512.",
- " ",
- #endif /* OS2 */
- "Use SHOW COMMAND to display these settings.",
- "" };
- #ifndef NOLOCAL
- static char *hsetcar[] = {
- "Syntax: SET CARRIER-WATCH { AUTO, OFF, ON }",
- " ",
- " Attempts to control treatment of carrier (the Data Carrier Detect signal)",
- " on serial communication (SET LINE or SET PORT) devices. ON means that",
- " carrier is required at all times. OFF means carrier is never required.",
- " AUTO (the default) means carrier is required at all times except during",
- " the DIAL command. Correct operation of carrier-watch depends on the",
- " capabilities of the underlying OS, drivers, devices, and cables. If you",
- " need to CONNECT to a serial device that is not asserting carrier, and",
- " Kermit won't let you, use SET CARRIER-WATCH OFF. Use SHOW COMMUNICATIONS",
- " to display the CARRIER-WATCH setting.",
- "" };
- #endif /* NOLOCAL */
- static char *hsetat[] = {
- "Syntax: SET ATTRIBUTES name ON or OFF",
- " ",
- " Use this command to enable (ON) or disable (OFF) the transmission of",
- " selected file attributes along with each file, and to handle or ignore",
- " selected incoming file attributes, including:",
- " ",
- #ifndef NOCSETS
- " CHARACTER-SET: The transfer character set for text files",
- #endif /* NOCSETS */
- " DATE: The file's creation date",
- " DISPOSITION: Unusual things to do with the file, like MAIL or PRINT",
- " LENGTH: The file's length",
- " PROTECTION: The files protection (permissions)",
- " SYSTEM-ID: Machine/Operating system of origin",
- " TYPE: The file's type (text or binary)",
- " ",
- "You can also specify ALL to select all of them. Examples:",
- " ",
- " SET ATTR DATE OFF",
- " SET ATTR LENGTH ON",
- " SET ATTR ALL OFF",
- ""
- };
- static char *hxytak[] = {
- "Syntax: SET TAKE parameter value",
- " ",
- " Controls behavior of TAKE command:",
- " ",
- "SET TAKE ECHO { ON, OFF }",
- " Tells whether commands read from a TAKE file should be displayed on the",
- " screen (if so, each command is shown at the time it is read, and labeled",
- " with a line number).",
- " ",
- "SET TAKE ERROR { ON, OFF }",
- " Tells whether a TAKE command file should be automatically terminated when",
- " a command fails. This setting is local to the current command file, and",
- " inherited by subordinate command files.",
- "" };
- #ifndef NOLOCAL
- #ifdef OS2MOUSE
- static char *hxymouse[] = {
- "Syntax: SET MOUSE ACTIVATE { ON, OFF }",
- " Enables or disables the mouse in Connect mode. Default is ON",
- " ",
- "Syntax: SET MOUSE BUTTON <number> <key-modifier> <action> [ <text> ]",
- " where:",
- " <number> is the mouse button number, 1, 2, or 3;",
- " <key-modifier> denotes modifier keys held down during the mouse event:",
- " ALT, ALT-SHIFT, CTRL, CTRL-ALT CTRL-ALT-SHIFT, CTRL-SHIFT, SHIFT, NONE;",
- " <action> is the mouse action, CLICK, DRAG, or DOUBLE-CLICK.",
- " ",
- " The <text> has exactly the same properties as the <text> from the SET KEY",
- " command -- it can be a character, a string, one or more Kverbs, a macro",
- " invoked as a Kverb, or any combination of these. Thus, anything that can",
- " be assigned to a key can also be assigned to the mouse -- and vice versa.",
- " If the <text> is omitted, the action will be ignored. Examples:",
- " ",
- " SET MOUSE BUTTON 1 NONE DOUBLE \KmouseCurPos",
- " SET MOU B 2 SHIFT CLICK help\13",
- " ",
- " DRAG operations perform a "mark mode" selection of Text. You should",
- " assign only the following actions to drag operations:",
- " ",
- " \Kdump - copy marked text to printer (or file)",
- " \Kmarkcopyclip - copy marked text to PM Clipboard",
- " \Kmarkcopyhost - copy marked text direct to Host",
- " \Kmousemark - mark text, no copy operation performed",
- " ",
- " The following Kverb is only for use with the mouse:",
- " ",
- " \KmouseCurPos",
- " ",
- " which represents the mouse-directed terminal cursor feature.",
- " ",
- "Syntax: SET MOUSE CLEAR",
- " Restores all mouse events to their default definitions",
- " Button 1 Double-Click = Kverb: \Kmousecurpos",
- " Button 1 Drag = Kverb: \Kmarkcopyclip",
- " Button 1 Ctrl Drag = Kverb: \Kmarkcopyhost",
- " Button 2 Double-Click = Kverb: \Kpaste",
- ""};
- #endif /* OS2MOUSE */
- static char *hxyterm[] = {
- "Syntax: SET TERMINAL parameter value",
- " ",
- #ifdef OS2
- "SET TERMINAL TYPE { ANSI, VT52, VT100, VT102, VT220, VT320, ... }",
- " Selects type type of terminal to emulate. Type SET TERMINAL TYPE ? to",
- " see a complete list.",
- " ",
- "SET TERMINAL ANSWERBACK { OFF, ON }",
- " Disables/enables the ENQ/Answerback sequence ("K-95 version term-type").",
- " ",
- "SET TERMINAL ANSWERBACK MESSAGE <extension>",
- " Allows you to specify an extension to the default answerback message.",
- " ",
- #else
- "SET TERMINAL TYPE ...",
- " This command is not available because this version of C-Kermit does not",
- " include a terminal emulator. Instead, it is a "semitransparent pipe"",
- " (or a totally transparent one, if you configure it that way) to the",
- " computer or service you have made a connection to. Your console,",
- " workstation window, or the terminal emulator or terminal from which you",
- " are running C-Kermit provides the emulation.",
- " ",
- #endif /* OS2 */
- #ifdef CK_APC
- "SET TERMINAL APC { ON, OFF, UNCHECKED }",
- #ifdef OS2