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