1: /* C K U U S 2 -- User interface STRINGS & help module for C-Kermit */ 2: 3: /* 4: Author: Frank da Cruz (fdc@columbia.edu, FDCCU@CUVMA.BITNET), 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 kermit@columbia.edu (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 */