|
|
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.