|
|
1.1 ! root 1: /* C K U U S 2 -- User interface STRINGS & help module for C-Kermit */ ! 2: ! 3: /* ! 4: Author: Frank da Cruz ([email protected], [email protected]), ! 5: Columbia University Center for Computing Activities. ! 6: First released January 1985. ! 7: Copyright (C) 1985, 1992, Trustees of Columbia University in the City of New ! 8: York. Permission is granted to any individual or institution to use, copy, or ! 9: redistribute this software so long as it is not sold for profit, provided this ! 10: copyright notice is retained. ! 11: */ ! 12: ! 13: /* ! 14: This module separates long strings from the body of the other ckuus* modules. ! 15: */ ! 16: ! 17: #include "ckcdeb.h" ! 18: #include "ckcnet.h" ! 19: #include "ckcasc.h" ! 20: #include "ckcker.h" ! 21: #include "ckuusr.h" ! 22: #include "ckcxla.h" ! 23: ! 24: #ifndef NOICP ! 25: #ifdef DCMDBUF ! 26: extern char *cmdbuf; ! 27: #else ! 28: extern char cmdbuf[]; ! 29: #endif /* DCMDBUF */ ! 30: #endif /* NOICP */ ! 31: ! 32: #ifdef DEBUG ! 33: extern char debfil[]; ! 34: #endif /* DEBUG */ ! 35: #ifdef TLOG ! 36: extern char trafil[]; ! 37: #endif ! 38: ! 39: extern char *xarg0; ! 40: extern int nrmt, nprm, dfloc, local, parity, duplex; ! 41: extern int turn, flow; ! 42: extern int binary, warn, quiet, keep; ! 43: extern int success; ! 44: ! 45: extern long speed; ! 46: extern char *dftty, *versio, *ckxsys; ! 47: extern struct keytab prmtab[]; ! 48: extern struct keytab remcmd[]; ! 49: ! 50: /* Command-Line help (Unix command-line arguments) */ ! 51: ! 52: #ifndef NOCMDL ! 53: static ! 54: char *hlp1[] = { ! 55: #ifndef NOICP ! 56: "[cmdfile] [-x arg [-x arg]...[-yyy]..] [ = text ] ]\n", ! 57: #else ! 58: "[-x arg [-x arg]...[-yyy]..]\n", ! 59: #endif ! 60: " -x is an option requiring an argument, -y an option with no argument.\n", ! 61: #ifndef NOICP ! 62: #ifndef NOSPL ! 63: " = means ignore following words, but place in array \\&@[].\n", ! 64: #else ! 65: " = means ignore following material.\n", ! 66: #endif /* NOSPL */ ! 67: #else ! 68: " = means ignore following material.\n", ! 69: #endif /* NOICP */ ! 70: "actions:\n", ! 71: " -s files send files -r receive files\n", ! 72: " -s - send files from stdin -k receive files to stdout\n", ! 73: #ifndef NOSERVER ! 74: " -x enter server mode -f finish remote server\n\n", ! 75: #else ! 76: " -f finish remote server\n\n", ! 77: #endif /* NOSERVER */ ! 78: " -g files get remote files from server (quote wildcards)\n", ! 79: " -a name alternate file name, used with -s, -r, -g\n", ! 80: " -c connect (before file transfer), used with -l and -b\n", ! 81: " -n connect (after file transfer), used with -l and -b\n\n", ! 82: "settings:\n", ! 83: " -l line communication line device -q quiet during file transfer\n", ! 84: #ifdef NETCONN ! 85: " -j host network host name -i binary file transfer\n", ! 86: #else ! 87: " -i binary file transfer\n", ! 88: #endif /* NETCONN */ ! 89: " -b bps line speed, e.g. 2400 -t half duplex, xon handshake\n", ! 90: #ifdef DEBUG ! 91: " -p x parity, x = e,o,m,s, or n -d log debug info to debug.log\n", ! 92: #else ! 93: " -p x parity, x = e,o,m,s, or n\n", ! 94: #endif /* DEBUG */ ! 95: #ifndef NOICP ! 96: " -y name alternate init file name -w write over files\n", ! 97: #else ! 98: " -w write over files\n", ! 99: #endif /* NOICP */ ! 100: " -e n receive packet length -v n window size\n", ! 101: #ifndef NODIAL ! 102: " -m name modem type -z force foreground\n", ! 103: #else ! 104: " -z force foreground\n", ! 105: #endif /* NODIAL */ ! 106: #ifdef SUNX25 ! 107: " -X X.25 address -o index X.25 closed user group call\n", ! 108: " -u X.25 reverse charge call -U string X.25 call user data\n", ! 109: #endif /* SUNX25 */ ! 110: #ifdef NOICP ! 111: "Interactive command parser removed.\n", ! 112: #else ! 113: "If no action command is included, or -S is, enter interactive dialog.\n", ! 114: #endif ! 115: "" ! 116: }; ! 117: ! 118: /* U S A G E */ ! 119: ! 120: VOID ! 121: usage() { ! 122: #ifndef MINIX ! 123: #ifdef NOICP ! 124: #endif /* NOICP */ ! 125: conol("Usage: "); ! 126: conol(xarg0); ! 127: conola(hlp1); ! 128: #else ! 129: conol("Usage: "); ! 130: conol(xarg0); ! 131: conol(" [-x arg [-x arg]...[-yyy]..] ]\n"); ! 132: #endif /* MINIX */ ! 133: } ! 134: #endif /* NOCMDL */ ! 135: ! 136: #ifndef NOICP ! 137: ! 138: /* Interactive help strings */ ! 139: ! 140: static char *tophlp[] = { ! 141: "Trustees of Columbia University in the City of New York.\n", ! 142: #ifndef NOHELP ! 143: "Type ? for a list of commands, type HELP x for any command x.", ! 144: #else ! 145: "Type ? for a list of commands; see documentation for detailed descriptions.", ! 146: #endif /* NOHELP */ ! 147: "While typing commands, you may use the following special characters:\n", ! 148: " DEL, RUBOUT, BACKSPACE, CTRL-H: Delete the most recent character typed.", ! 149: " CTRL-W: Delete the most recent word typed.", ! 150: " CTRL-U: Delete the current line.", ! 151: " CTRL-R: Redisplay the current line.", ! 152: " ? (question mark) Display a menu for the current command field.", ! 153: " ESC (or TAB) Attempt to complete the current field.", ! 154: " \\ (backslash) include the following character literally", ! 155: #ifndef NOSPL ! 156: " or introduce a numeric backslash code, variable, or function.\n", ! 157: #else ! 158: " or introduce a numeric backslash code.\n", ! 159: #endif /* NOSPL */ ! 160: ! 161: "Command words other than filenames can be abbreviated in most contexts.", ! 162: "Commands may be continued onto subsequent lines by ending them with - (dash)", ! 163: "and commands may have trailing comments introduced by ; (semicolon).", ! 164: #ifndef NOFRILLS ! 165: "The BUG command tells you how to report bugs.", ! 166: #endif /* NOFRILLS */ ! 167: #ifndef NOCMDL ! 168: "\nFrom system level, type 'kermit -h' for help about command line options.", ! 169: #endif /* NOCMDL */ ! 170: "" }; ! 171: ! 172: #ifndef NOHELP ! 173: ! 174: static char *hmxxbye = "Syntax: BYE\n\ ! 175: Shut down and log out a remote Kermit server"; ! 176: ! 177: static char *hmxxclo[] = { ! 178: "Syntax: CLOSE name", ! 179: "Example: CLOSE SESSION\n", ! 180: "Close one of the following logs or files:", ! 181: "SESSION, TRANSACTION, PACKET, DEBUGGING, READ, WRITE", ! 182: "Type HELP LOG and HELP OPEN for further info.", "" }; ! 183: ! 184: static char *hmxxcon = "Syntax: CONNECT (or C)\n\n\ ! 185: Connect to a remote computer via the tty device given in the most recent\n\ ! 186: SET LINE command, or the network host named in the most recent SET HOST\n\ ! 187: command. Type the escape character (normally Ctrl-\\) followed by C to\n\ ! 188: get back, or followed by ? for help."; ! 189: ! 190: static char *hmxxget = "Syntax: GET filespec\n\ ! 191: Tell the remote Kermit server to send the named file or files.\n\ ! 192: If the filespec is omitted, then you are prompted for the remote and\n\ ! 193: local filenames separately."; ! 194: ! 195: static char *hmxxlg[] = { "Syntax: LOG (or L) name [ { NEW, APPEND } ]", ! 196: "Record information in a log file:\n", ! 197: "DEBUGGING Debugging information, to help track down bugs in the C-Kermit", ! 198: " program (default log name is debug.log).\n", ! 199: "PACKETS Kermit packets, to help with protocol problems (packet.log)", ! 200: "SESSION Terminal session, during CONNECT command (session.log)", ! 201: "TRANSACTIONS Names and statistics about files transferred (transact.log)\n", ! 202: "If you include the APPEND keyword after the filename, the existing log, if", ! 203: "any, is appended to; otherwise a new file is created.", ! 204: "" } ; ! 205: ! 206: #ifndef NOSCRIPT ! 207: static char *hmxxlogi[] = { "\ ! 208: Syntax: SCRIPT text\n", ! 209: "Login to a remote system using the text provided. The login script", ! 210: "is intended to operate similarly to uucp \"L.sys\" entries.", ! 211: "A login script is a sequence of the form:\n", ! 212: " expect send [expect send] . . .\n", ! 213: "where 'expect' is a prompt or message to be issued by the remote site, and", ! 214: "'send' is the names, numbers, etc, to return. The send may also be the", ! 215: "keyword EOT, to send control-d, or BREAK (or \\\\b), to send a break signal.", ! 216: "Letters in send may be prefixed by ~ to send special characters. These are:", ! 217: "~b backspace, ~s space, ~q '?', ~n linefeed, ~r return, ~c don\'t", ! 218: "append a return, and ~o[o[o]] for octal of a character. As with some", ! 219: "uucp systems, sent strings are followed by ~r unless they end with ~c.\n", ! 220: "Only the last 7 characters in each expect are matched. A null expect,", ! 221: "e.g. ~0 or two adjacent dashes, causes a short delay. If you expect", ! 222: "that a sequence might not arrive, as with uucp, conditional sequences", ! 223: "may be expressed in the form:\n", ! 224: " -send-expect[-send-expect[...]]\n", ! 225: "where dashed sequences are followed as long as previous expects fail.", ! 226: "" }; ! 227: #endif ! 228: ! 229: static char *hmxxrc[] = { "Syntax: RECEIVE (or R) [filespec]\n", ! 230: "Wait for a file to arrive from the other Kermit, which must be given a", ! 231: "SEND command. If the optional filespec is given, the (first) incoming", ! 232: "file will be stored under that name, otherwise it will be stored under", ! 233: "the name it arrives with.", ! 234: "" } ; ! 235: ! 236: static char *hmxxsen = "\ ! 237: Syntax: SEND (or S) filespec [name]\n\n\ ! 238: Send the file or files specified by filespec.\n\ ! 239: filespec may contain wildcard characters '*' or '?'. If no wildcards,\n\ ! 240: then 'name' may be used to specify the name 'filespec' is sent under; if\n\ ! 241: 'name' is omitted, the file is sent under its own name."; ! 242: ! 243: #ifndef NOMSEND ! 244: static char *hmssmse = "\ ! 245: Syntax: MSEND filespec [ filespec [ ... ] ]\n\n\ ! 246: Send the files specified by the filespecs. One or more filespecs may be\n\ ! 247: listed, separated by spaces. Any or all filespecs may contain wildcards\n\ ! 248: and they may be in different directories. An alternate name cannot be given."; ! 249: #endif /* NOMSEND */ ! 250: ! 251: #ifndef NOSERVER ! 252: static char *hmxxser = "Syntax: SERVER\n\n\ ! 253: Enter server mode on the currently selected line. All further commands\n\ ! 254: will be taken in packet form from the other Kermit program. Use FINISH\n\ ! 255: or BYE to get C-Kermit out of server mode."; ! 256: #endif /* NOSERVER */ ! 257: ! 258: static char *hmhset[] = { "\ ! 259: The SET command is used to establish various communication or file", ! 260: "parameters. The SHOW command can be used to display the values of", ! 261: "SET parameters. Help is available for each individual parameter;", ! 262: "type HELP SET ? to see what's available.", ! 263: "" } ; ! 264: ! 265: #ifndef NOSETKEY ! 266: static char *hmhskey[] = { "Syntax: SET KEY k text\n", ! 267: "Map the key k to send 'text' when pressed during CONNECT mode.", ! 268: "K can be expressed as decimal number or backslash code, 'text'", ! 269: "can also contain any backslash code. If 'text' has the length 1", ! 270: "it is treated specially. In some environments (OS/2, for example)", ! 271: "that single character may be wider than 8 bits, if specified in", ! 272: "backslash notation. In this case, a scan code mapping takes place,", ! 273: "i.e. key k takes over the function of the key whose scan code is", ! 274: "assigned to k. This may even be a controlling key for the CONNECT", ! 275: "mode. If 'text' is empty, the default key binding is restored for", ! 276: "the key k. SET KEY mappings take place before terminal character-set", ! 277: "translation.", ! 278: ""}; ! 279: #endif /* NOSETKEY */ ! 280: ! 281: static char *hmxychkt[] = { "Syntax: SET BLOCK-CHECK n\n", ! 282: "Type of packet block check to be used for error detection, 1, 2, or 3.", ! 283: "Type 1 is standard, and catches most errors. Types 2 and 3 specify more", ! 284: "rigorous checking at the cost of higher overhead.", ! 285: "" } ; ! 286: ! 287: static char *hmxydial[] = {"SET DIAL DISPLAY {ON, OFF}", ! 288: "Whether to display dialing progress on the screen.\n", ! 289: "SET DIAL HANGUP {ON, OFF}", ! 290: "Whether the DIAL command should hang up the phone before dialing.\n", ! 291: "SET DIAL INIT-STRING text", ! 292: "The 'text' is a replacement for Kermit's built-in initialization command", ! 293: "for the modem.\n", ! 294: "SET DIAL KERMIT-SPOOF {ON, OFF}", ! 295: "If the selected modem type supports the Kermit protocol directly,", ! 296: "use this command to turn its Kermit protocol function on or off.\n", ! 297: "SET DIAL MNP-ENABLE {ON, OFF}", ! 298: "Enable or disable MNP negotiation by the modem. Currently works only", ! 299: "for Telebits.\n", ! 300: "SET DIAL SPEED-MATCHING {ON, OFF}", ! 301: "If selected, the modem locks its interface speed, even if it connects", ! 302: "to a slower modem. Default is OFF (modem changes speed).\n", ! 303: "SET DIAL TIMEOUT number", ! 304: "How many seconds to wait for a dialed call to complete. Use this", ! 305: "to override the DIAL command's automatic timeout calculation. A value", ! 306: "of 0 turns off this feature and returns to Kermit's automatic dial", ! 307: "timeout calculation.", ! 308: "" } ; ! 309: ! 310: static char *hmxyf[] = { "Syntax: SET FILE parameter value", ! 311: "Parameters are:\n", ! 312: ! 313: "TYPE is normally TEXT, with conversion of record format and character set.", ! 314: "BINARY means to do no conversion. Use BINARY for executable programs or", ! 315: "binary data. Example: SET FILE TYPE BINARY.\n", ! 316: ! 317: #ifdef VMS ! 318: "For VAX/VMS, you may include an optional record-format after the word", ! 319: "BINARY. This may be FIXED (the default) or UNDEFINED.", ! 320: "Two additional VMS file types are also supported: IMAGE and LABELED. IMAGE", ! 321: "means raw block i/o, no interference from RMS, and applies to file transmis-", ! 322: "sion only. LABELED means to send or interpret RMS attributes with the file.", ! 323: "\n", ! 324: #endif /* VMS */ ! 325: ! 326: #ifndef NOCSETS ! 327: "CHARACTER-SET: tells the encoding of the local file, ASCII by default.", ! 328: "The names ITALIAN, PORTUGUESE, NORWEGIAN, etc, refer to 7-bit ISO-646", ! 329: "national replacement character (NRC) sets. Latin-1 is the 8-bit ISO 8859", ! 330: "Latin Alphabet 1. Next is the 8-bit character set of the NeXT workstation.", ! 331: "The CPnnn sets are for IBM PCs. Apple-Quickdraw is for the Macintosh.", ! 332: #ifdef CYRILLIC ! 333: "KOI-CYRILLIC, CYRILLIC-ISO, and CP866 are 8-bit Cyrillic character sets.", ! 334: "SHORT-KOI is a 7-bit ASCII coding for Cyrillic.", ! 335: #endif /* CYRILLIC */ ! 336: #ifdef KANJI ! 337: "JAPANESE-EUC, JIS7-KANJI, DEC-KANJI, and SHIFT-JIS-KANJI are Japanese", ! 338: "Kanji character sets.", ! 339: #endif /* KANJI */ ! 340: "Type SET FILE CHAR ? for a complete list of file character sets.\n", ! 341: #endif /* NOCSETS */ ! 342: ! 343: "BYTESIZE { 7, 8 }: normally 8. If 7, truncate the 8th bit of all file \ ! 344: bytes.\n", ! 345: ! 346: "NAMES are normally CONVERTED to 'common form' during transmission; LITERAL", ! 347: "means use filenames literally (useful between like systems).\n", ! 348: ! 349: "COLLISION tells what to do when a file arrives that has the same name as", ! 350: "an existing file. The options are:", ! 351: " BACKUP (default) - Rename the old file to a new, unique name and store", ! 352: " the incoming file under the name it was sent with.", ! 353: " OVERWRITE - Overwrite (replace) the existing file.", ! 354: " APPEND - Append the incoming file to the end of the existing file.", ! 355: " DISCARD - Refuse and/or discard the incoming file.", ! 356: " RENAME - Give the incoming file a unique name.", ! 357: " UPDATE - Accept the incoming file only if it is newer than the existing", ! 358: " file.", ! 359: "Example: SET FILE COLLISION UPDATE\n", ! 360: ! 361: #ifdef VMS ! 362: "RECORD-LENGTH sets the record length for received files of type BINARY. Use", ! 363: "this to receive VMS BACKUP savesets or other fixed-format files. The default", ! 364: "of 512 is suitable for executable (.EXE) files, etc.\n", ! 365: "Example: SET FILE REC 8192\n", ! 366: #endif ! 367: ! 368: "DISPLAY is normally ON, causing file transfer progress to be displayed", ! 369: "on your screen when in local mode. SET DISPLAY OFF is useful for", ! 370: "allowing local-mode file transfers to proceed in the background.\n", ! 371: ! 372: "WARNING. SET FILE WARNING is superseded by the newer command, SET FILE", ! 373: "COLLISION. SET FILE WARNING ON is equivalent to SET FILE COLLISION RENAME", ! 374: "and SET FILE WARNING OFF is equivalent to SET FILE COLLISION OVERWRITE.\n", ! 375: ! 376: "" }; ! 377: ! 378: static char *hmxyhsh[] = { "Syntax: SET HANDSHAKE value\n", ! 379: "Character to use for half duplex line turnaround handshake during file", ! 380: "transfer. C-Kermit waits for this character from the other computer before", ! 381: "sending its next packet. Default is NONE, others are XON, LF, BELL, ESC,", ! 382: "etc. SET HANDSHAKE CODE <n> lets you specify the numeric ASCII value of the", ! 383: "handshake character. Type SET HANDSH ? for a list.", ! 384: "" }; ! 385: ! 386: #ifndef NOSERVER ! 387: static char *hsetsrv[] = {"\ ! 388: SET SERVER DISPLAY {ON,OFF}", ! 389: "Tell whether local-mode C-Kermit during server operation should put a", ! 390: "file transfer display on the screen. Default is OFF.\n", ! 391: "SET SERVER TIMEOUT n", ! 392: "Server command wait timeout interval, how often the C-Kermit server issues", ! 393: "a NAK while waiting for a command packet. Specify 0 for no NAKs at all.", ! 394: "Default is 0.", ! 395: "" }; ! 396: #endif /* NOSERVER */ ! 397: ! 398: static char *hmhrmt[] = { "\ ! 399: The REMOTE command is used to send file management instructions to a", ! 400: "remote Kermit server. There should already be a Kermit running in server", ! 401: "mode on the other end of the currently selected line. Type REMOTE ? to", ! 402: "see a list of available remote commands. Type HELP REMOTE x to get", ! 403: "further information about a particular remote command 'x'.", ! 404: "" } ; ! 405: ! 406: #ifndef NOSPL ! 407: static char *ifhlp[] = { "Syntax: IF [NOT] condition command\n", ! 408: "If the condition is (is not) true, do the command. Only one command may", ! 409: "be given, and it must appear on the same line as the IF. Conditions are:\n", ! 410: " SUCCESS - the previous command succeeded", ! 411: " FAILURE - the previous command failed", ! 412: " DEFINED variablename or macroname - The named variable or macro is defined", ! 413: " NUMERIC variable or constant - The variable or constant is numeric", ! 414: " EXIST filename - The named file exists", ! 415: " COUNT - subtract one from COUNT, execute the command if the result is", ! 416: " greater than zero (see SET COUNT)", ! 417: " EQUAL s1 s2 - s1 and s2 (character strings or variables) are equal", ! 418: " LLT s1 s2 - s1 is lexically (alphabetically) less than s2", ! 419: " LGT s1 s1 - s1 is lexically (alphabetically) greater than s2", ! 420: " = n1 n1 - n1 and n2 (numbers or variables containing numbers) are equal", ! 421: " < n1 n2 - n1 is arithmetically less than n2", ! 422: " > n1 n2 - n1 is arithmetically greater than n2\n", ! 423: "The IF command may be followed on the next line by an ELSE command. Example:", ! 424: " IF < \\%x 10 ECHO It's less", ! 425: " ELSE echo It's not less", ! 426: "See also XIF.", ! 427: "" }; ! 428: #endif /* NOSPL */ ! 429: ! 430: #ifndef NOSPL ! 431: static char *ifxhlp[] = { "\ ! 432: Syntax: XIF condition { commandlist } [ ELSE { commandlist } ]\n", ! 433: "Extended IF command. The conditions are the same as for IF (type HELP IF)", ! 434: "but multiple comma-separated commands may be grouped within braces in both", ! 435: "the IF and ELSE parts. The ELSE part, if any, must be on the same line as", ! 436: "the XIF (or use dash for line continuation). Example:\n", ! 437: " XIF equal \\%a YES { echo OK, goto begin } ELSE { echo Not OK, stop }", ! 438: "" }; ! 439: #endif /* NOSPL */ ! 440: ! 441: #ifndef NOSPL ! 442: static char *forhlp[] = { "\ ! 443: Syntax: FOR variablename initial-value final-value increment { commandlist }", ! 444: "\nFOR loop. Execute the comma-separated commands in the commandlist the", ! 445: "number of times given by the initial value, final value and increment.", ! 446: "Example: FOR \\%i 10 1 -1 { pause 1, echo \\%i }", "" }; ! 447: ! 448: static char *whihlp[] = { "\ ! 449: Syntax: WHILE condition { commandlist }\n", ! 450: "\nWHILE loop. Execute the comma-separated commands in the commandlist while", ! 451: "the condition is true. Conditions are the same as for IF commands.\n", "" }; ! 452: #endif /* NOSPL */ ! 453: ! 454: #ifndef NOSPL ! 455: static char *openhlp[] = { ! 456: "Syntax: OPEN mode filename\n", ! 457: "For use with READ and WRITE commands. Open the local file in the specified", ! 458: "mode: READ, WRITE, or APPEND. !READ and !WRITE mean to read from or write", ! 459: "to a system command rather than a file. Examples:\n", ! 460: " OPEN READ oofa.txt", ! 461: " OPEN !READ sort foo.bar", ! 462: "" }; ! 463: #endif /* NOSPL */ ! 464: ! 465: #ifndef NOSPL ! 466: static char *hxxaskq[] = { ! 467: "Syntax: ASKQ variablename prompt", ! 468: "Example: ASKQ %p Password:\n", ! 469: "Issues the prompt and defines the variable to be whatever you type in.", ! 470: "The characters that you type do not echo on the screen.", "" }; ! 471: #endif /* NOSPL */ ! 472: ! 473: #ifndef NOSPL ! 474: static char *hxxdef[] = { ! 475: "Syntax: DEFINE name [ definition ]\n", ! 476: "Defines a macro or variable. Its value is the definition, taken literally.", ! 477: "No expansion or evaluation of the definition is done. Thus if the", ! 478: "definition includes any variable or function references, their names are", ! 479: "included, rather than their values (compare with ASSIGN). If the definition", ! 480: "is omitted, then the named variable or macro is undefined.\n", ! 481: "A typical macro definition looks like this:\n", ! 482: " DEFINE name command, command, command, ...\n", ! 483: "for example:\n", ! 484: " DEFINE vax set parity even, set duplex full, set flow xon/xoff\n", ! 485: "which defines a Kermit command macro called 'vax'. The definition is a", ! 486: "comma-separated list of Kermit commands. Use the DO command to execute", ! 487: "the macro, or just type its name, followed optionally by arguments.\n", ! 488: "The definition of a variable can be anything at all, for example:\n", ! 489: " DEFINE \\%a Monday", ! 490: " DEFINE \\%b 3\n", ! 491: "These variables can be used almost anywhere, for example:\n", ! 492: " ECHO Today is \\%a", ! 493: " SET BLOCK-CHECK \\%b", ! 494: "" }; ! 495: #endif /* NOSPL */ ! 496: ! 497: #ifndef NOSPL ! 498: static char *hxxass[] = { ! 499: "Syntax: ASSIGN variablename string.", ! 500: "Example: ASSIGN \\%a My name is \\%b.\n", ! 501: "Assigns the current value of the string to the variable (or macro).", ! 502: "The definition string is fully evaluated before it is assigned, so that", ! 503: "the values of any variables are contained are used, rather than their", ! 504: "names. Compare with DEFINE. To illustrate the difference, try this:\n", ! 505: " DEFINE \\%a hello", ! 506: " DEFINE \\%x \\%a", ! 507: " ASSIGN \\%y \\%a", ! 508: " DEFINE \\%a goodbye", ! 509: " ECHO \\%x \\%y\n", ! 510: "This will print 'goodbye hello'.", "" }; ! 511: #endif /* NOSPL */ ! 512: ! 513: #ifndef NOSPL ! 514: static char *hxxdec[] = { ! 515: "Syntax: DECREMENT variablename [ number ]\n", ! 516: "Decrement (subtract one from) the value of a variable if the current value", ! 517: "is numeric. If the number argument is given, subtract that number instead.", ! 518: "\nExamples: DECR \\%a, DECR \\%a 7, DECR \\%a \\%n", "" }; ! 519: #endif /* NOSPL */ ! 520: ! 521: #ifndef NOSPL ! 522: static char *hxxinc[] = { ! 523: "Syntax: INCREMENT variablename [ number ]\n", ! 524: "Increment (add one to) the value of a variable if the current value is", ! 525: "numeric. If the number argument is given, add that number instead.\n", ! 526: "Examples: INCR \\%a, INCR \\%a 7, INCR \\%a \\%n", "" }; ! 527: #endif /* NOSPL */ ! 528: ! 529: #ifdef SUNX25 ! 530: static char *hxxpad[] = { ! 531: "Syntax: PAD command", ! 532: "Execute a PAD command. Examples:\n", ! 533: " PAD clear - clear the virtual call", ! 534: " PAD status - return the status of virtual call", ! 535: " PAD reset - send a reset packet", ! 536: " PAD interrupt - send an interrupt packet", ""}; ! 537: ! 538: static char *hxyx25[] = { ! 539: "Syntax: SET X.25 call-option on [index,string]/off\n", ! 540: "Set X.25 call option. Options are:", ! 541: " closed-user-group on index/off - to enable/disable closed user group call,", ! 542: " where index is the group index and can range from 0 to 99", ! 543: " reverse-charge on/off - to enable/disable reverse charge call", ! 544: " call-user-data on string/off - to specify call user data in X.25 call.", ! 545: ""}; ! 546: #endif /* SUNX25 */ ! 547: ! 548: static char *hxxpau[] = { ! 549: "Syntax: PAUSE [ number ]", ! 550: "Example: PAUSE 3\n", ! 551: "Do nothing for the specified number of seconds; if no number given, one", ! 552: "second. If interrupted from the keyboard, set FAILURE, otherwise SUCCESS.", ! 553: "" }; ! 554: ! 555: #ifndef NOPUSH ! 556: static char *hxxshe[] = { ! 557: "Syntax: ! [ command ] or RUN [ command ] or PUSH [ command ]\n", ! 558: "Give a command to the local operating system's command processor, and", ! 559: "display the results on the screen.\n", ! 560: "If the command is omitted, enter interactive mode; return to Kermit", ! 561: "by exiting from the system's command parser. The command is usually", ! 562: "EXIT or QUIT or LOGOUT.", "" }; ! 563: #endif /* NOPUSH */ ! 564: ! 565: #ifndef NOXMIT ! 566: static char *hxxxmit[] = { ! 567: "Syntax: TRANSMIT file\n", ! 568: "The TRANSMIT command is used for sending single files to other computers", ! 569: "that don't have Kermit. Text files are sent a line at a time; binary files", ! 570: "are sent a character at a time. There is no guarantee that the other", ! 571: "computer will receive the file correctly and completely. Before you start", ! 572: "the TRANSMIT command, you must put the other computer in data collection", ! 573: "mode, for example by starting a text editor. TRANSMIT may be interrupted by", ! 574: "Ctrl-C. Synonym: XMIT.", ! 575: "" }; ! 576: #endif /* NOXMIT */ ! 577: ! 578: #ifndef NOCSETS ! 579: static char *hxxxla[] = { ! 580: "Syntax: TRANSLATE file1 cs1 cs2 [ file2 ]\n", ! 581: "Translates file1 from the character set cs1 into the character set cs2", ! 582: "and stores the result in file2. The character sets can be any of", ! 583: "C-Kermit's file character sets. If file2 is omitted, the translation", ! 584: "is displayed on the screen. Uses Latin-1 as intermediate character set", ! 585: "unless LANGUAGE is set to RUSSIAN, in which case it uses Latin-Cyrillic.", ! 586: "Synonym: XLATE. Example:\n", ! 587: "TRANSLATE lasagna.lat latin1 italian lasagna.nrc", ! 588: "" }; ! 589: #endif /* NOCSETS */ ! 590: ! 591: #ifndef NOSPL ! 592: static char *hxxwai[] = { ! 593: "Syntax: WAIT number [modem-signal(s)]", ! 594: "Example: WAIT 5 \\cd\\cts\n", ! 595: "Waits up to the given number of seconds for all of the specified signals.", ! 596: "Sets FAILURE if signals do not appear in given time or if interrupted by", ! 597: "typing anything at the keyboard during the waiting period.\n", ! 598: "Signals: \\cd = Carrier Detect, \\dsr = Dataset Ready, \\cts = Clear To Send", ! 599: "Warning: This command does not work yet, signals are ignored.", "" }; ! 600: #endif /* NOSPL */ ! 601: ! 602: static char *hxxwri[] = { ! 603: "Syntax: WRITE name text\n", ! 604: "Writes the given text to the named log or file. The text text may include", ! 605: "backslash codes, and is not terminated by a newline unless you include the", ! 606: "appropriate code. The name parameter can be any of the following:\n", ! 607: " DEBUG-LOG", ! 608: #ifndef NOSPL ! 609: " FILE (the OPEN WRITE, OPEN !WRITE, or OPEN APPEND file, see HELP OPEN)", ! 610: #endif /* NOSPL */ ! 611: " PACKET-LOG", ! 612: " SCREEN (compare with ECHO)", ! 613: " SESSION-LOG", ! 614: " TRANSACTION-LOG", "" }; ! 615: ! 616: #ifndef NODIAL ! 617: static char *hxxdial[] = { "Syntax: DIAL phonenumber", ! 618: "Example: DIAL 7654321\n", ! 619: "Dial a number using a modem autodialer. First you must SET MODEM, then", ! 620: "SET LINE and SET SPEED. Then give the DIAL command, including the phone", ! 621: "number. See also SET DIAL, SET MODEM, SET LINE, SET SPEED, REDIAL.", "" }; ! 622: #endif /* NODIAL */ ! 623: ! 624: #endif /* NOHELP */ ! 625: ! 626: /* D O H L P -- Give a help message */ ! 627: ! 628: _PROTOTYP( int dohset, (int) ); ! 629: ! 630: int ! 631: dohlp(xx) int xx; { ! 632: int x,y; ! 633: ! 634: if (xx < 0) return(xx); ! 635: switch (xx) { ! 636: ! 637: #ifdef NOHELP ! 638: ! 639: case XXHLP: ! 640: if ((x = cmcfm()) < 0) return(x); ! 641: printf("%s, Copyright (C) 1985, 1992,\n",versio); ! 642: for ( x = 0; *tophlp[x] ; x++ ) /* Print lines */ ! 643: printf("%s\n",tophlp[x]); ! 644: printf("\n"); /* End with blank line */ ! 645: return(1); ! 646: ! 647: #else /* help is available */ ! 648: ! 649: #ifndef NOSPL ! 650: case XXASS: /* assign */ ! 651: return(hmsga(hxxass)); ! 652: ! 653: case XXASK: /* ask */ ! 654: return(hmsg("\ ! 655: Syntax: ASK variablename prompt\n\ ! 656: Example: ASK \\%n What is your name\\63\\32\n\n\ ! 657: Issues the prompt and defines the variable to be whatever you type in.")); ! 658: ! 659: case XXASKQ: ! 660: return(hmsga(hxxaskq)); ! 661: #endif /* NOSPL */ ! 662: ! 663: #ifndef NOFRILLS ! 664: case XXBUG: ! 665: return(hmsg("Describe how to report C-Kermit bugs.")); ! 666: #endif /* NOFRILLS */ ! 667: ! 668: case XXBYE: /* bye */ ! 669: return(hmsg(hmxxbye)); ! 670: ! 671: #ifndef NOFRILLS ! 672: case XXCLE: /* clear */ ! 673: return(hmsg("\ ! 674: Syntax: CLEAR\n\ ! 675: Clear the serial port input buffer.")); ! 676: #endif /* NOFRILLS */ ! 677: ! 678: case XXCLO: /* close */ ! 679: return(hmsga(hmxxclo)); ! 680: ! 681: case XXCOM: /* comment */ ! 682: return(hmsg("\ ! 683: Syntax: COMMENT text\n\ ! 684: Example: COMMENT - this is a comment.\n\n\ ! 685: Introduce a comment. Beginning of command line only. Commands may also\n\ ! 686: have trailing comments, introduced by ; (semicolon).")); ! 687: ! 688: case XXCON: /* connect */ ! 689: return(hmsg(hmxxcon)); ! 690: ! 691: case XXCWD: /* cd / cwd */ ! 692: #ifdef vms ! 693: return(hmsg("Syntax: CD [ directory or device:directory ]\n\ ! 694: Change Working Directory, equivalent to VMS SET DEFAULT command")); ! 695: #else ! 696: #ifdef datageneral ! 697: return(hmsg("Change Working Directory, equivalent to DG 'dir' command")); ! 698: #else ! 699: #ifdef OS2 ! 700: return(hmsg("Change Working Directory, equivalent to OS/2 'chdir' command")); ! 701: #else ! 702: return(hmsg("Syntax: CD [ directoryname ]\n\n\ ! 703: Change Working Directory, equivalent to UNIX cd command.")); ! 704: #endif /* OS2 */ ! 705: #endif /* datageneral */ ! 706: #endif /* vms */ ! 707: ! 708: #ifndef NOSPL ! 709: case XXDCL: ! 710: return(hmsg("Syntax: DECLARE arrayname[size]\n\ ! 711: Example: DECLARE \\&a[20]\n\n\ ! 712: Declares an array of the given size. Array elements can be used just like\n\ ! 713: any other variables.")); ! 714: ! 715: case XXDEF: /* define */ ! 716: return(hmsga(hxxdef)); ! 717: #endif /* NOSPL */ ! 718: ! 719: #ifndef NOFRILLS ! 720: case XXDEL: /* delete */ ! 721: return(hmsg("Syntax: DELETE filespec\n\n\ ! 722: Delete a local file or files. RM is a synonym for DELETE.")); ! 723: #endif /* NOFRILLS */ ! 724: ! 725: #ifndef NODIAL ! 726: case XXDIAL: /* dial */ ! 727: return(hmsga(hxxdial)); ! 728: #endif ! 729: ! 730: case XXDIR: /* directory */ ! 731: return(hmsg("Syntax: DIRECTORY [ filespec ]\n\ ! 732: Display a directory listing of local files.")); ! 733: ! 734: #ifndef NOSERVER ! 735: #ifndef NOFRILLS ! 736: case XXDIS: ! 737: return(hmsg("Syntax: DISABLE command\n\n\ ! 738: Security for the C-Kermit server. Prevent the client Kermit program from\n\ ! 739: executing the named REMOTE command, such as CD, DELETE, RECEIVE, etc.")); ! 740: #endif /* NOFRILLS */ ! 741: #endif /* NOSERVER */ ! 742: ! 743: #ifndef NOSPL ! 744: case XXDO: /* do */ ! 745: return(hmsg("Syntax: [ DO ] macroname [ arguments ]\n\n\ ! 746: Execute a macro that was defined by the DEFINE command. The word DO\n\ ! 747: can be omitted. Trailing argument words, if any, are automatically\n\ ! 748: assigned to the macro argument variables \\%1, \\%2, etc.")); ! 749: #endif /* NOSPL */ ! 750: ! 751: #ifndef NOSPL ! 752: case XXDEC: ! 753: return(hmsga(hxxdec)); ! 754: #endif /* NOSPL */ ! 755: ! 756: case XXECH: /* echo */ ! 757: return(hmsg("Syntax: ECHO text\n\ ! 758: Display the text on the screen, followed by a newline. The ECHO text may\n\ ! 759: contain backslash codes. Example: ECHO \\7Wake up!\\7")); ! 760: ! 761: #ifndef NOSERVER ! 762: #ifndef NOFRILLS ! 763: case XXENA: ! 764: return(hmsg("Syntax: ENABLE capability\n\n\ ! 765: For use with server mode. Allow the client Kermit program access to the\n\ ! 766: named capability, such as CD, DELETE, RECEIVE, etc. Opposite of DISABLE.")); ! 767: #endif /* NOFRILLS */ ! 768: #endif /* NOSERVER */ ! 769: ! 770: #ifndef NOSPL ! 771: case XXEND: /* end */ ! 772: return(hmsg("Syntax: END\n\ ! 773: Exit from the current macro or TAKE file, back to wherever invoked from.")); ! 774: #endif /* NOSPL */ ! 775: ! 776: #ifndef NOFRILLS ! 777: case XXERR: /* error */ ! 778: return(hmsg("Syntax: ERROR\n\ ! 779: Send an Error packet to the other Kermit.")); ! 780: #endif /* NOFRILLS */ ! 781: ! 782: case XXEXI: /* exit */ ! 783: case XXQUI: ! 784: return(hmsg("Syntax: QUIT (or EXIT)\n\ ! 785: Exit from the Kermit program, closing all open files and devices.")); ! 786: ! 787: case XXFIN: ! 788: return(hmsg("Syntax: FINISH\n\ ! 789: Tell the remote Kermit server to shut down without logging out.")); ! 790: ! 791: #ifndef NOSPL ! 792: case XXFOR: ! 793: return(hmsga(forhlp)); ! 794: #endif /* NOSPL */ ! 795: ! 796: case XXGET: ! 797: return(hmsg(hmxxget)); ! 798: ! 799: #ifndef NOSPL ! 800: #ifndef NOFRILLS ! 801: case XXGOK: ! 802: return(hmsg("Syntax: GETOK prompt\n\ ! 803: Print the prompt, make user type 'yes', 'no', or 'ok', and set SUCCESS or\n\ ! 804: FAILURE accordingly.")); ! 805: #endif /* NOFRILLS */ ! 806: #endif /* NOSPL */ ! 807: ! 808: #ifndef NOSPL ! 809: case XXGOTO: ! 810: return(hmsg("Syntax: GOTO label\n\ ! 811: In a TAKE file or macro, go to the given label. A label is a word on the\n\ ! 812: left margin that starts with a colon (:). Example:\n\n\ ! 813: :oofa\n\ ! 814: echo Hello!\n\ ! 815: goto oofa")); ! 816: #endif /* NOSPL */ ! 817: ! 818: case XXHAN: ! 819: return(hmsg("Syntax: HANGUP\n\ ! 820: Hang up the phone or network connection.")); ! 821: ! 822: case XXHLP: ! 823: printf("%s, Copyright (C) 1985, 1992,",versio); ! 824: return(hmsga(tophlp)); ! 825: ! 826: #ifndef NOSPL ! 827: case XXIF: ! 828: return(hmsga(ifhlp)); ! 829: ! 830: case XXINC: ! 831: return(hmsga(hxxinc)); ! 832: ! 833: case XXINP: ! 834: return(hmsg("\ ! 835: Syntax: INPUT n text\n\ ! 836: Example: INPUT 5 Login:\n\n\ ! 837: Wait up to n seconds for the given text to arrive on the communication line.\n\ ! 838: For use in script programs with IF FAILURE and IF SUCCESS.")); ! 839: #endif /* NOSPL */ ! 840: ! 841: #ifndef NODIAL ! 842: case XXRED: ! 843: return(hmsg("Redial the number given in the most recent DIAL commnd.")); ! 844: #endif /* NODIAL */ ! 845: ! 846: #ifndef NOSPL ! 847: case XXREI: ! 848: return(hmsg("Syntax: REINPUT n string\n\n\ ! 849: Look for the string in the text that has recently been INPUT, set SUCCESS\n\ ! 850: or FAILURE accordingly. Timeout, n, must be specified but is ignored.")); ! 851: #endif /* NOSPL */ ! 852: ! 853: #ifndef NOFRILLS ! 854: case XXREN: ! 855: return(hmsg("Syntax: RENAME oldname newname\n\n\ ! 856: Change the name of file 'oldname' to 'newname'.")); ! 857: #endif /* NOFRILLS */ ! 858: ! 859: #ifndef NOSPL ! 860: case XXLBL: ! 861: return(hmsg("\ ! 862: Introduce a label, like :loop, for use with GOTO in TAKE files or macros.\n\ ! 863: See GOTO.")); ! 864: #endif /* NOSPL */ ! 865: ! 866: case XXLOG: ! 867: return(hmsga(hmxxlg)); ! 868: ! 869: #ifndef NOSCRIPT ! 870: case XXLOGI: ! 871: return(hmsga(hmxxlogi)); ! 872: #endif ! 873: ! 874: #ifndef NOFRILLS ! 875: case XXMAI: ! 876: return(hmsg("Syntax: MAIL filename address\n\n\ ! 877: Send the file to the remote Kermit, which must be in RECEIVE or SERVER mode,\n\ ! 878: and request that the remote host deliver the file as electronic mail to the\n\ ! 879: given address. Example: MAIL BUG.TXT KERMIT@CUVMA")); ! 880: #endif /* NOFRILLS */ ! 881: ! 882: #ifndef NOMSEND ! 883: case XXMSE: ! 884: return(hmsg(hmssmse)); ! 885: #endif /* NOMSEND */ ! 886: ! 887: #ifndef NOSPL ! 888: case XXOPE: ! 889: return(hmsga(openhlp)); ! 890: #endif /* NOSPL */ ! 891: ! 892: #ifndef NOSPL ! 893: case XXOUT: ! 894: return(hmsg("Syntax: OUTPUT text\n\n\ ! 895: Send the text out the currently selected line, as if you had typed it\n\ ! 896: during CONNECT mode. The text may contain backslash codes. Example:\n\n\ ! 897: OUTPUT help\\13")); ! 898: #endif /* NOSPL */ ! 899: ! 900: #ifdef SUNX25 ! 901: case XXPAD: ! 902: return(hmsga(hxxpad)); ! 903: #endif /* SUNX25 */ ! 904: ! 905: #ifndef NOSPL ! 906: case XXPAU: ! 907: return(hmsga(hxxpau)); ! 908: #endif /* NOSPL */ ! 909: ! 910: #ifndef NOFRILLS ! 911: case XXPRI: ! 912: return(hmsg("Syntax: PRINT file [ options ]\n\n\ ! 913: Print the local file on a local printer with the given options.")); ! 914: #endif /* NOFRILLS */ ! 915: ! 916: case XXPWD: ! 917: return(hmsg("Syntax: PWD\n\ ! 918: Print the name of the current working directory.")); ! 919: ! 920: #ifndef NOSPL ! 921: case XXREA: ! 922: return(hmsg("Syntax: READ variablename\n\ ! 923: Read a line from the currently open READ or !READ file into the variable\n\ ! 924: (see OPEN).")); ! 925: #endif /* NOSPL */ ! 926: ! 927: case XXREC: ! 928: return(hmsga(hmxxrc)); ! 929: ! 930: case XXREM: ! 931: if ((y = cmkey(remcmd,nrmt,"Remote command","",xxstring)) == -2) return(y); ! 932: if (y == -1) return(y); ! 933: if ((x = cmcfm()) < 0) return(x); ! 934: return(dohrmt(y)); ! 935: ! 936: #ifndef NOSPL ! 937: case XXRET: ! 938: return(hmsg("Syntax: RETURN [ value ]\n\ ! 939: Return from a macro. An optional return value can be given for use with\n\ ! 940: with \\fexecute(macro), which allows macros to be used like functions.")); ! 941: case XXSEN: ! 942: return(hmsg(hmxxsen)); ! 943: #endif /* NOSPL */ ! 944: ! 945: #ifndef NOSERVER ! 946: case XXSER: ! 947: return(hmsg(hmxxser)); ! 948: #endif /* NOSERVER */ ! 949: ! 950: #ifndef NOJC ! 951: case XXSUS: ! 952: return(hmsg("Syntax: SUSPEND or Z\n\ ! 953: Suspend Kermit. Continue Kermit with the appropriate system command,\n\ ! 954: such as fg.")); ! 955: #endif /* NOJC */ ! 956: ! 957: case XXSET: ! 958: y = cmkey(prmtab,nprm,"Parameter","",xxstring); ! 959: if (y == -3) return(dohset(y)); ! 960: if (y < 0) return(y); ! 961: if ((x = cmcfm()) < 0) return(x); ! 962: return(dohset(y)); ! 963: ! 964: #ifndef NOPUSH ! 965: case XXSHE: ! 966: return(hmsga(hxxshe)); ! 967: #endif /* NOPUSH */ ! 968: ! 969: #ifndef NOSHOW ! 970: case XXSHO: ! 971: return(hmsg("\ ! 972: Display current values of various items (SET parameters, variables, etc).\n\ ! 973: Type SHOW ? for a list of categories.")); ! 974: #endif /* NOSHOW */ ! 975: ! 976: case XXSPA: ! 977: #ifdef datageneral ! 978: return(hmsg("\ ! 979: Display disk usage in current device, directory,\n\ ! 980: or return space for a specified device, directory.")); ! 981: #else ! 982: return(hmsg("Syntax: SPACE\n\ ! 983: Display disk usage in current device and/or directory")); ! 984: #endif ! 985: ! 986: case XXSTA: ! 987: return(hmsg("Syntax: STATISTICS\n\ ! 988: Display statistics about most recent file transfer")); ! 989: ! 990: #ifndef NOSPL ! 991: case XXSTO: ! 992: return(hmsg("Syntax: STOP\n\ ! 993: Stop executing the current macro or TAKE file and return immediately\n\ ! 994: to the C-Kermit prompt.")); ! 995: #endif /* NOSPL */ ! 996: ! 997: case XXTAK: ! 998: return(hmsg("Syntax: TAKE filename\n\ ! 999: Take Kermit commands from the named file. Kermit command files may\n\ ! 1000: themselves contain TAKE commands, up to a reasonable depth of nesting.")); ! 1001: ! 1002: #ifdef NETCONN ! 1003: case XXTEL: ! 1004: return(hmsg("Syntax: TELNET [ host ]\n\ ! 1005: Equivalent to SET HOST host, followed by CONNECT. If hostname omitted,\n\ ! 1006: previous connection (if any) is resumed.")); ! 1007: #endif /* NETCONN */ ! 1008: ! 1009: ! 1010: #ifndef NOXMIT ! 1011: case XXTRA: ! 1012: return(hmsga(hxxxmit)); ! 1013: #endif /* NOXMIT */ ! 1014: ! 1015: #ifndef NOFRILLS ! 1016: case XXTYP: ! 1017: return(hmsg("Syntax: TYPE file\n\ ! 1018: Display a file on the screen. Pauses if you type Ctrl-S, resumes if you\n\ ! 1019: type Ctrl-Q, returns immediately to C-Kermit prompt if you type Ctrl-C." ! 1020: )); ! 1021: #endif /* NOFRILLS */ ! 1022: ! 1023: #ifndef NOSPL ! 1024: case XXWHI: ! 1025: return(hmsga(whihlp)); ! 1026: #endif /* NOSPL */ ! 1027: ! 1028: #ifndef NOCSETS ! 1029: case XXXLA: ! 1030: return(hmsga(hxxxla)); ! 1031: #endif /* NOCSETS */ ! 1032: ! 1033: case XXVER: ! 1034: return(hmsg("Syntax: VERSION\nDisplays the program version number.")); ! 1035: ! 1036: #ifndef NOSPL ! 1037: case XXWAI: ! 1038: return(hmsga(hxxwai)); ! 1039: #endif /* NOSPL */ ! 1040: ! 1041: #ifndef NOFRILLS ! 1042: case XXWHO: ! 1043: return(hmsg("Syntax: WHO [ user ]\nDisplays info about the user.")); ! 1044: ! 1045: case XXWRI: ! 1046: return(hmsga(hxxwri)); ! 1047: #endif /* NOFRILLS */ ! 1048: ! 1049: #ifndef NOSPL ! 1050: case XXIFX: ! 1051: return(hmsga(ifxhlp)); ! 1052: #endif /* NOSPL */ ! 1053: ! 1054: #endif /* NOHELP */ ! 1055: ! 1056: default: ! 1057: if ((x = cmcfm()) < 0) return(x); ! 1058: printf("Help not available - %s\n",cmdbuf); ! 1059: break; ! 1060: } ! 1061: return(success = 0); ! 1062: } ! 1063: ! 1064: #ifndef NOHELP ! 1065: ! 1066: /* H M S G -- Get confirmation, then print the given message */ ! 1067: ! 1068: int ! 1069: hmsg(s) char *s; { ! 1070: int x; ! 1071: if ((x = cmcfm()) < 0) return(x); ! 1072: printf("\n%s\n\n",s); ! 1073: return(0); ! 1074: } ! 1075: ! 1076: int ! 1077: hmsga(s) char *s[]; { /* Same function, but for arrays */ ! 1078: int x, y, i, j, k, n; ! 1079: if ((x = cmcfm()) < 0) return(x); ! 1080: ! 1081: printf("\n"); /* Start off with a blank line */ ! 1082: n = 1; /* Line counter */ ! 1083: for (i = 0; *s[i]; i++) { ! 1084: printf("%s\n",s[i]); /* Print a line. */ ! 1085: y = (int)strlen(s[i]); ! 1086: k = 1; ! 1087: for (j = 0; j < y; j++) /* See how many newlines were */ ! 1088: if (s[i][j] == '\n') k++; /* in the string... */ ! 1089: n += k; ! 1090: if (n > 21) /* After a screenful, give them */ ! 1091: if (!askmore()) return(-9); ! 1092: else n = 0; ! 1093: } ! 1094: printf("\n"); ! 1095: return(0); ! 1096: } ! 1097: ! 1098: #ifndef NOXMIT ! 1099: static char *hsetxmit[] = { ! 1100: "Syntax: SET TRANSMIT parameter value\n", ! 1101: "Controls the behavior of the TRANSMIT command, used for uploading files", ! 1102: "to computers that don't have Kermit programs. Parameters are:\n", ! 1103: "ECHO ON/OFF: Whether to echo text as it is being transmitted.", ! 1104: "EOF text: Text to send after end of file is reached.", ! 1105: "FILL number: ASCII value of character to insert into blank lines.", ! 1106: "LINEFEED ON/OFF: Transmit LF as well as CR at the end of each line.", ! 1107: " Normally, only CR is sent.", ! 1108: "LOCKING-SHIFT ON/OFF: Whether to use SO/SI for transmitting 8-bit data", ! 1109: " when PARITY is not NONE.", ! 1110: "PAUSE number: How many milliseconds to pause after transmitting each line", ! 1111: " (text mode), or each character (binary mode).", ! 1112: "PROMPT number: ASCII value of character to look for from host before", ! 1113: " sending next line, normally LF (10).", ! 1114: "Synonym: SET XMIT.", ! 1115: "" }; ! 1116: #endif /* NOXMIT */ ! 1117: ! 1118: static char *hsetbkg[] = { ! 1119: "Syntax: SET BACKGROUND { OFF, ON }\n", ! 1120: "SET BACKGROUND OFF forces prompts and messages to appear on your screen", ! 1121: "even though Kermit thinks it is running in the background.", "" }; ! 1122: ! 1123: #ifdef DYNAMIC ! 1124: static char *hsetbuf[] = { ! 1125: "Syntax: SET BUFFERS n1 n2\n", ! 1126: "Change the overall amount of memory allocated for SEND and RECEIVE packet", ! 1127: "buffers, respectively. Bigger numbers let you have longer packets and more", ! 1128: "window slots", "" }; ! 1129: #endif /* DYNAMIC */ ! 1130: ! 1131: static char *hsetcmd[] = { ! 1132: "Syntax: SET COMMAND BYTESIZE { 7, 8 }\n", ! 1133: "SET COMMAND BYTE 8 allows you to use an 8-bit (international) character set", ! 1134: "in the commands you type at the C-Kermit> prompt. 7 is the default.", "" }; ! 1135: ! 1136: static char *hsetcar[] = { ! 1137: "Syntax: SET CARRIER ON, AUTO, or OFF\n", ! 1138: "Attempts to control treatment of carrier on the communication device.", ! 1139: "ON means that carrier is required at all times except during the DIAL", ! 1140: "command. OFF means that carrier is never required. AUTO (the default)", ! 1141: "means that carrier is required only during CONNECT.", "" }; ! 1142: ! 1143: static char *hsetat[] = { ! 1144: "Syntax: SET ATTRIBUTES name ON or OFF\n", ! 1145: "Use this command to enable (ON) or disable (OFF) the transmission of", ! 1146: "selected file attributes along with each file, and to handle or ignore", ! 1147: "selected incoming file attributes, including:\n", ! 1148: " CHARACTER-SET: The transfer character set for text files", ! 1149: " DATE: The file's creation date", ! 1150: " DISPOSITION: Unusual things to do with the file, like MAIL or PRINT", ! 1151: " LENGTH: The file's length", ! 1152: " SYSTEM-ID: Machine/Operating system of origin", ! 1153: " TYPE: The file's type (text or binary)\n", ! 1154: "You can also specify ALL to select all of them. Examples:\n", ! 1155: " SET ATTR DATE OFF\n SET ATTR SIZE ON\n SET ATTR ALL OFF", "" ! 1156: }; ! 1157: ! 1158: #ifndef NOSPL ! 1159: static char *hxxinp[] = { ! 1160: "Syntax: SET INPUT parameter value\n", ! 1161: "The SET INPUT command controls the behavior of the INPUT command:\n", ! 1162: "SET INPUT CASE { IGNORE, OBSERVE }", ! 1163: "Tells whether alphabetic case is to be significant in string comparisons.\n", ! 1164: "SET INPUT DEFAULT-TIMEOUT secs", ! 1165: "Establishes default timeout for INPUT commands. Currently has no effect.\n", ! 1166: "SET INPUT ECHO { ON, OFF }", ! 1167: "Tells whether to display arriving characters read by INPUT on the screen.\n", ! 1168: "SET INPUT TIMEOUT-ACTION { PROCEED, QUIT }", ! 1169: "Tells whether to proceed or quit from a script program if an INPUT command", ! 1170: "fails. PROCEED (default) allows use of IF SUCCESS and IF FAILURE commands.", ! 1171: "" }; ! 1172: #endif /* NOSPL */ ! 1173: ! 1174: static char *hxytak[] = { ! 1175: "Syntax: SET TAKE parameter value\n", ! 1176: "Controls behavior of TAKE command.\n", ! 1177: "SET TAKE ECHO { ON, OFF } tells whether commands read from a TAKE file", ! 1178: "should be displayed on the screen.\n", ! 1179: "SET TAKE ERROR { ON, OFF } tells whether a TAKE command file should be", ! 1180: "automatically terminated when a command fails.", "" }; ! 1181: ! 1182: static char *hxyterm[] = { ! 1183: "Syntax: SET TERMINAL parameter value\n", ! 1184: "SET TERMINAL BYTESIZE 7 or 8, to use 7- or 8-bit terminal characters", ! 1185: "between C-Kermit and the remote host during CONNECT.\n", ! 1186: "SET TERMINAL CHARACTER-SET <remote-cs> [ <local-cs> ] to specify the", ! 1187: "character set used by the remote host, <remote-cs>, and the character", ! 1188: "set used by C-Kermit locally, <local-cs>. If you don't specify the", ! 1189: "local character set, the current FILE CHARACTER-SET is used. When you", ! 1190: "specify two different character sets, C-Kermit translates between them", ! 1191: "during CONNECT. By default, both character sets are ASCII.\n", ! 1192: #ifdef OS2PM ! 1193: "SET TERMINAL VT100 or TEK4014, to set terminal emulation mode.", ! 1194: #endif /* OS2 */ ! 1195: #ifdef OS2 ! 1196: "SET TERMINAL COLOR <screenpart> <foreground> <background>, to set", ! 1197: "the colors of the terminal emulation screen. <screenpart> may be one", ! 1198: "of NORMAL, REVERSE, UNDERLINED, STATUS and HELP. <foreground> and", ! 1199: "<background> may be one of BLACK, BLUE, GREEN, CYAN, RED, MAGENTA,", ! 1200: "BROWN, LGRAY, DGRAY, LBLUE, LGREEN, LCYAN, LRED, LMAGENTA, YELLOW", ! 1201: "or WHITE. The L prefix for the color names means Light.\n", ! 1202: #endif /* OS2 */ ! 1203: "SET TERMINAL LOCKING-SHIFT { OFF, ON } tells C-Kermit whether to use", ! 1204: "Shift-In/Shift-Out (Ctrl-O and Ctrl-N) to switch between 7-bit and 8-bit", ! 1205: "characters during CONNECT. OFF by default.\n", ! 1206: "SET TERMINAL NEWLINE-MODE { OFF, ON } tells whether to send CRLF when you", ! 1207: "type CR during CONNECT mode.\n", ! 1208: "Type SHOW TERMINAL to see current terminal settings.", ! 1209: "" }; ! 1210: ! 1211: #ifdef NETCONN ! 1212: static char *hxyhost[] = { ! 1213: "Syntax: SET HOST hostname-or-number\n", ! 1214: "Select a network host. Use this command instead of SET LINE.", ! 1215: "After SET HOST give the host name or number. TCP/IP Examples:\n", ! 1216: " SET HOST watsun.cc.columbia.edu", ! 1217: " SET HOST 128.59.39.2", ! 1218: "" }; ! 1219: ! 1220: static char *hxynet[] = { ! 1221: "Syntax: SET NETWORK network-type\n", ! 1222: #ifdef SUNX25 ! 1223: "Select TCP/IP or X.25 network communication.", ! 1224: #else ! 1225: "Select TCP/IP network communication.", ! 1226: #endif /* SUNX25 */ ! 1227: "After SET NETWORK give the type of network to use. Examples:\n", ! 1228: " SET NETWORK tcp/ip", ! 1229: #ifdef SUNX25 ! 1230: " SET NETWORK x.25", ! 1231: #endif ! 1232: ""}; ! 1233: #endif /* NETCONN */ ! 1234: ! 1235: #ifndef NOSPL ! 1236: static char *hxymacr[] = { ! 1237: "Syntax: SET MACRO parameter value\n", ! 1238: "Controls the behavior of macros.\n", ! 1239: "SET MACRO ECHO { ON, OFF } tells whether commands executed from a macro", ! 1240: "definition should be displayed on the screen.\n", ! 1241: "SET MACRO ERROR { ON, OFF } tells whether a macro should be automatically", ! 1242: "terminated upon a command error.", "" }; ! 1243: #endif /* NOSPL */ ! 1244: ! 1245: static char *hxymodm[] = { ! 1246: "Syntax: SET MODEM-DIALER name\n", ! 1247: "Type of modem for dialing remote connections. Indicates that modem can", ! 1248: "be commanded to dial without Carrier Detect signal from modem, and selects", ! 1249: "the appropriate dialing protocol to be used by the DIAL command. Many modem", ! 1250: "models are supported. Type SET MODEM ? for a list. DIRECT or NONE means", ! 1251: "a direct connection, with no modem at all. Also see HELP DIAL, HELP CARRIER", ! 1252: "" }; ! 1253: ! 1254: static char *hmxyprm[] = { ! 1255: "Syntax: SET PROMPT [ text ]\n", ! 1256: "Prompt text for this program, normally 'C-Kermit>'. May contain backslash", ! 1257: "codes for special effects. Surround by { } to preserve leading or trailing", ! 1258: "spaces. If text omitted, prompt reverts to C-Kermit>.", ! 1259: "" }; ! 1260: ! 1261: static char *hxywind[] = { ! 1262: "Syntax: SET WINDOW-SIZE number\n", ! 1263: "Specify number of window slots for sliding windows, the number of packets", ! 1264: "that can be transmitted before pausing for acknowledgement. The default", ! 1265: "is one, the maximum is 31. Increased window size may result in reduced", ! 1266: "maximum packet length. Use sliding windows for improved efficiency on", ! 1267: "connections with long delays. A full duplex connection is required.", ! 1268: "" }; ! 1269: ! 1270: static char *hxysr[] = { ! 1271: "END-OF-PACKET number", ! 1272: "ASCII value of control character, normally 13 (carriage return).\n", ! 1273: "PACKET-LENGTH number", ! 1274: "2000 or less.\n", ! 1275: "PADDING number", ! 1276: "number of prepacket padding characters, 94 or less (rarely used).\n", ! 1277: "PAD-CHARACTER number", ! 1278: "ASCII value of control character to use for padding (typically 0).\n", ! 1279: "START-OF-PACKET number", ! 1280: "ASCII value of control character to mark start of packet (normally 1).\n", ! 1281: "TIMEOUT number", ! 1282: "Number of seconds to wait for a packet before sending NAK or retransmitting", ! 1283: "(94 seconds or less)", "" }; ! 1284: ! 1285: static char *hxyxfer[] = { ! 1286: "Syntax: SET TRANSFER LOCKING-SHIFT { OFF, ON, FORCED }\n", ! 1287: "Tell whether locking-shift protocol should be used during file transfer", ! 1288: "to achieve 8-bit transparency on a 7-bit connection. ON means to request", ! 1289: "its use if PARITY is not NONE and to use it if the other Kermit agrees,", ! 1290: "OFF means not to use it, FORCED means to use it even if the other Kermit", ! 1291: "does not agree.", ! 1292: #ifndef NOCSETS ! 1293: "\nSyntax: SET TRANSFER CHARACTER-SET name\n", ! 1294: "Select the character set used to represent textual data in Kermit packets.", ! 1295: "Text characters are translated to/from the FILE CHARACTER-SET.", ! 1296: "The choices are TRANSPARENT (no translation, the default), ASCII,", ! 1297: #ifdef CYRILLIC ! 1298: #ifdef KANJI ! 1299: "LATIN1 (ISO Latin Alphabet 1), CYRILLIC-ISO (ISO Latin/Cyrillic),", ! 1300: "and JAPANESE-EUC.", ! 1301: #else ! 1302: "LATIN1 (ISO Latin Alphabet 1), and CYRILLIC-ISO (ISO Latin/Cyrillic).", ! 1303: #endif /* KANJI */ ! 1304: #else /* No CYRILLIC */ ! 1305: #ifdef KANJI ! 1306: "LATIN1 (ISO Latin Alphabet 1), and JAPANESE-EUC.", ! 1307: #else ! 1308: "and LATIN1 (ISO Latin Alphabet 1).", ! 1309: #endif /* KANJI */ ! 1310: #endif /* CYRILLIC */ ! 1311: "Synonym: SET XFER CHARACTER-SET.", ! 1312: #endif /* NOCSETS */ ! 1313: "" }; ! 1314: ! 1315: /* D O H S E T -- Give help for SET command */ ! 1316: ! 1317: int ! 1318: dohset(xx) int xx; { ! 1319: ! 1320: if (xx == -3) return(hmsga(hmhset)); ! 1321: if (xx < 0) return(xx); ! 1322: switch (xx) { ! 1323: ! 1324: case XYATTR: ! 1325: return(hmsga(hsetat)); ! 1326: ! 1327: case XYBACK: ! 1328: return(hmsga(hsetbkg)); ! 1329: ! 1330: #ifdef DYNAMIC ! 1331: case XYBUF: ! 1332: return(hmsga(hsetbuf)); ! 1333: #endif /* DYNAMIC */ ! 1334: ! 1335: case XYCARR: ! 1336: return(hmsga(hsetcar)); ! 1337: ! 1338: #ifndef NOSPL ! 1339: case XYCASE: ! 1340: return(hmsg("Syntax: SET CASE { ON, OFF }\n\ ! 1341: Tells whether alphabetic case is significant in string comparisons\n\ ! 1342: done by INPUT, IF, and other commands.")); ! 1343: #endif /* NOSPL */ ! 1344: ! 1345: case XYCMD: ! 1346: return(hmsga(hsetcmd)); ! 1347: ! 1348: case XYIFD: ! 1349: return(hmsg("Syntax: SET INCOMPLETE { DISCARD, KEEP }\n\ ! 1350: Discard or Keep incompletely received files, default is DISCARD.")); ! 1351: ! 1352: #ifndef NOSPL ! 1353: case XYINPU: ! 1354: return(hmsga(hxxinp)); ! 1355: #endif /* NOSPL */ ! 1356: ! 1357: case XYCHKT: ! 1358: return(hmsga(hmxychkt)); ! 1359: ! 1360: #ifndef NOSPL ! 1361: case XYCOUN: ! 1362: return(hmsg("Syntax: SET COUNT number\n\ ! 1363: Example: SET COUNT 5\n\ ! 1364: Set up a loop counter, for use with IF COUNT.")); ! 1365: #endif /* NOSPL */ ! 1366: ! 1367: case XYDFLT: ! 1368: return(hmsg("Syntax: SET DEFAULT directory\n\ ! 1369: Change directory. Equivalent to CD command.")); ! 1370: ! 1371: case XYDELA: ! 1372: return(hmsg("Syntax: SET DELAY number\n\ ! 1373: Number of seconds to wait before sending first packet after SEND command.")); ! 1374: ! 1375: #ifndef NODIAL ! 1376: case XYDIAL: ! 1377: return(hmsga(hmxydial)); ! 1378: #endif /* NODIAL */ ! 1379: ! 1380: #ifdef UNIX ! 1381: case XYSUSP: ! 1382: return(hmsg("Syntax: SET SUSPEND { OFF, ON }\n\n\ ! 1383: Disables SUSPEND command, suspend signals, and <esc-char>Z during CONNECT.")); ! 1384: #endif ! 1385: ! 1386: #ifndef NOSCRIPT ! 1387: case XYSCRI: ! 1388: return(hmsg("Syntax: SET SCRIPT ECHO { OFF, ON }\n\n\ ! 1389: Disables/Enables echoing of SCRIPT command operation.")); ! 1390: #endif /* NOSCRIPT */ ! 1391: ! 1392: case XYTAKE: ! 1393: return(hmsga(hxytak)); ! 1394: ! 1395: case XYTERM: ! 1396: return(hmsga(hxyterm)); ! 1397: ! 1398: case XYDUPL: ! 1399: return(hmsg("Syntax: SET DUPLEX { FULL, HALF }\n\n\ ! 1400: During CONNECT: FULL means remote host echoes, HALF means C-Kermit\n\ ! 1401: does its own echoing.")); ! 1402: ! 1403: case XYESC: ! 1404: return(hmsg("Syntax: SET ESCAPE number\n\n\ ! 1405: Decimal ASCII value for escape character during CONNECT, normally 28\n\ ! 1406: (Control-\\). Type the escape character followed by C to get back to the\n\ ! 1407: C-Kermit prompt.")); ! 1408: ! 1409: case XYFILE: ! 1410: return(hmsga(hmxyf)); ! 1411: ! 1412: case XYFLOW: ! 1413: #ifdef UTEK ! 1414: return(hmsg("Syntax: SET FLOW value\n\ ! 1415: Type of flow control to be used during file transfer and connect mode.\n\ ! 1416: The choices are XON/XOFF (default), IDTR/OCTS, and NONE.")); ! 1417: #else ! 1418: return(hmsg("Syntax: SET FLOW value\n\ ! 1419: Type of flow control to be used during file transfer.\n\ ! 1420: The choices are XON/XOFF (default) and NONE.")); ! 1421: #endif /* UTEK */ ! 1422: ! 1423: case XYHAND: ! 1424: return(hmsga(hmxyhsh)); ! 1425: ! 1426: #ifdef NETCONN ! 1427: case XYHOST: ! 1428: return(hmsga(hxyhost)); ! 1429: case XYNET: ! 1430: return(hmsga(hxynet)); ! 1431: ! 1432: #ifdef SUNX25 ! 1433: case XYX25: ! 1434: return(hmsga(hxyx25)); ! 1435: ! 1436: case XYPAD: ! 1437: return(hmsg("Syntax: SET PAD name value\n\ ! 1438: Set a PAD X.3 parameter with a desired value.")); ! 1439: #endif /* SUNX25 */ ! 1440: #endif /* NETCONN */ ! 1441: ! 1442: #ifndef NOSETKEY ! 1443: case XYKEY: /* SET KEY */ ! 1444: return(hmsga(hmhskey)); ! 1445: #endif /* NOSETKEY */ ! 1446: ! 1447: #ifndef NOCSETS ! 1448: case XYLANG: ! 1449: return(hmsg("Syntax: SET LANGUAGE name\n\ ! 1450: Selects language-specific translation rules for text-mode file transfers.\n\ ! 1451: Used with SET FILE CHARACTER-SET and SET TRANSFER CHARACTER-SET.")); ! 1452: #endif /* NOCSETS */ ! 1453: ! 1454: case XYLINE: ! 1455: printf("\nSyntax: SET LINE devicename\n\n\ ! 1456: Select communication device to use. Normally %s.\n",dftty); ! 1457: if (!dfloc) { ! 1458: printf("\ ! 1459: If you SET LINE to other than %s, then Kermit\n",dftty); ! 1460: printf("\ ! 1461: will be in 'local' mode; SET LINE alone will reset Kermit to remote mode.\n\ ! 1462: To use the modem to dial out, first SET MODEM-DIALER (e.g., to HAYES), then"); ! 1463: puts("\nSET LINE xxx, next issue the DIAL command, and finally CONNECT.\n"); ! 1464: } ! 1465: return(0); ! 1466: ! 1467: #ifndef NOSPL ! 1468: case XYMACR: ! 1469: return(hmsga(hxymacr)); ! 1470: #endif /* NOSPL */ ! 1471: ! 1472: case XYMODM: ! 1473: return(hmsga(hxymodm)); ! 1474: ! 1475: case XYPARI: ! 1476: return(hmsg("Syntax: SET PARITY name\n\n\ ! 1477: Parity to use during terminal connection and file transfer: EVEN, ODD, MARK,\n\ ! 1478: SPACE, or NONE. Normally NONE.")); ! 1479: ! 1480: case XYPROM: ! 1481: return(hmsga(hmxyprm)); ! 1482: ! 1483: case XYQUIE: ! 1484: return(hmsg("Syntax: SET QUIET {ON, OFF}\n\n\ ! 1485: Normally ON. OFF disables most information messages during interactive\n\ ! 1486: operation.")); ! 1487: ! 1488: case XYRETR: ! 1489: return(hmsg("Syntax: SET RETRY number\n\n\ ! 1490: How many times to retransmit a particular packet before giving up.")); ! 1491: ! 1492: #ifdef UNIX ! 1493: case XYSESS: ! 1494: return(hmsg("Syntax: SET SESSION-LOG { BINARY, TEXT }\n\n\ ! 1495: If BINARY, record all CONNECT characters in session log. If TEXT, strip\n\ ! 1496: out carriage returns.")); ! 1497: #endif /* UNIX */ ! 1498: ! 1499: case XYSPEE: ! 1500: return(hmsg("Syntax: SET SPEED number\n\n\ ! 1501: Communication line speed for external tty line specified in most recent\n\ ! 1502: SET LINE command, in bits per second. Type SET SPEED ? for a list of\n\ ! 1503: possible speeds.")); ! 1504: ! 1505: case XYRECV: ! 1506: case XYSEND: ! 1507: if (xx == XYRECV) ! 1508: puts("\nSyntax: SET RECEIVE parameter value\n\n\ ! 1509: Specify parameters for inbound packets:"); ! 1510: else puts("\nSyntax: SET SEND parameter value\n\n\ ! 1511: Specify parameters for outbound packets. This command should be used only\n\ ! 1512: to override the normal negotiated parameters."); ! 1513: return(hmsga(hxysr)); ! 1514: ! 1515: #ifndef NOSERVER ! 1516: case XYSERV: ! 1517: return(hmsga(hsetsrv)); ! 1518: #endif /* NOSERVER */ ! 1519: ! 1520: #ifndef NOXMIT ! 1521: case XYXMIT: ! 1522: return(hmsga(hsetxmit)); ! 1523: #endif /* NOXMIT */ ! 1524: ! 1525: #ifndef NOCSETS ! 1526: case XYUNCS: ! 1527: return(hmsg("Syntax: SET UNKNOWN-CHAR-SET action\n\n\ ! 1528: DISCARD (default) means reject any arriving files encoded in unknown\n\ ! 1529: character sets. KEEP means to accept them anyway.")); ! 1530: #endif /* NOCSETS */ ! 1531: ! 1532: #ifdef UNIX ! 1533: case XYWILD: ! 1534: return(hmsg("Syntax: SET WILDCARD-EXPANSION { KERMIT, SHELL }\n\n\ ! 1535: KERMIT (the default) means C-Kermit expands filename wildcards in SEND\n\ ! 1536: and MSEND commands and incoming GET commands. SHELL means your shell does \ ! 1537: it.")); ! 1538: #endif /* UNIX */ ! 1539: ! 1540: case XYWIND: ! 1541: return(hmsga(hxywind)); ! 1542: ! 1543: #ifndef NOCSETS ! 1544: case XYXFER: ! 1545: return(hmsga(hxyxfer)); ! 1546: #endif ! 1547: ! 1548: default: ! 1549: printf("Not available yet - %s\n",cmdbuf); ! 1550: return(0); ! 1551: } ! 1552: } ! 1553: ! 1554: ! 1555: /* D O H R M T -- Give help about REMOTE command */ ! 1556: ! 1557: static char *hrset[] = { ! 1558: "Syntax: REMOTE SET parameter value", ! 1559: "Example: REMOTE SET FILE TYPE BINARY\n", ! 1560: "Ask the remote Kermit server to set the named parameter to the given value.", ! 1561: "Equivalent to typing the corresponding SET command directly to the other", ! 1562: "Kermit if it were in interactive mode.", "" }; ! 1563: ! 1564: int ! 1565: dohrmt(xx) int xx; { ! 1566: int x; ! 1567: if (xx == -3) return(hmsga(hmhrmt)); ! 1568: if (xx < 0) return(xx); ! 1569: switch (xx) { ! 1570: ! 1571: case XZCWD: ! 1572: return(hmsg("Syntax: REMOTE CD [ name ]\n\n\ ! 1573: Ask remote Kermit server to change its working directory or device.\n\ ! 1574: If the device or directory name is omitted, restore the default.")); ! 1575: ! 1576: case XZDEL: ! 1577: return(hmsg("Syntax: REMOTE DELETE filespec\n\n\ ! 1578: Ask the remote Kermit server to delete the named file(s).")); ! 1579: ! 1580: case XZDIR: ! 1581: return(hmsg("Syntax: REMOTE DIRECTORY [ filespec ]\n\n\ ! 1582: Ask the remote Kermit server to provide a directory listing of the named\n\ ! 1583: file(s) or if no file specification is given, of all files in the current\n\ ! 1584: directory.")); ! 1585: ! 1586: case XZHLP: ! 1587: return(hmsg("Syntax: REMOTE HELP\n\n\ ! 1588: Ask the remote Kermit server to list the services it provides.")); ! 1589: ! 1590: case XZHOS: ! 1591: return(hmsg("Syntax: REMOTE HOST command\n\n\ ! 1592: Send a command to the remote host computer in its own command language\n\ ! 1593: through the remote Kermit server.")); ! 1594: ! 1595: #ifndef NOFRILLS ! 1596: case XZKER: ! 1597: return(hmsg("Syntax: REMOTE KERMIT command\n\n\ ! 1598: Send a command to the remote Kermit server in its own command language.")); ! 1599: ! 1600: case XZLGI: ! 1601: return(hmsg("Syntax: REMOTE LOGIN user password [ account ]\n\n\ ! 1602: Log in to a remote Kermit server that requires you login.")); ! 1603: ! 1604: case XZLGO: ! 1605: return(hmsg("Syntax: REMOTE LOGOUT\n\n\ ! 1606: Log out from a remote Kermit server to which you have previously logged in.")); ! 1607: ! 1608: case XZPRI: ! 1609: return(hmsg("Syntax: REMOTE PRINT filespec [ options ]\n\n\ ! 1610: Send the specified file(s) to the remote Kermit and ask it to have the\n\ ! 1611: file printed on the remote system's printer, using any specified options.")); ! 1612: #endif /* NOFRILLS */ ! 1613: ! 1614: case XZSET: ! 1615: return(hmsga(hrset)); ! 1616: ! 1617: case XZSPA: ! 1618: return(hmsg("Syntax: REMOTE SPACE [ name ]\n\n\ ! 1619: Ask the remote Kermit server to tell you about its disk space on the current\n\ ! 1620: disk or directory, or in the one that you name.")); ! 1621: ! 1622: #ifndef NOFRILLS ! 1623: case XZTYP: ! 1624: return(hmsg("Syntax: REMOTE TYPE file\n\n\ ! 1625: Ask the remote Kermit server to type the named file(s) on your screen.")); ! 1626: ! 1627: case XZWHO: ! 1628: return(hmsg("Syntax: REMOTE WHO [ name ]\n\n\ ! 1629: Ask the remote Kermit server to list who's logged in, or to give information\n\ ! 1630: about the named user.")); ! 1631: #endif /* NOFRILLS */ ! 1632: ! 1633: default: ! 1634: if ((x = cmcfm()) < 0) return(x); ! 1635: printf("not working yet - %s\n",cmdbuf); ! 1636: return(-2); ! 1637: } ! 1638: } ! 1639: ! 1640: #endif /* NOHELP */ ! 1641: #endif /* NOICP */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.