source: trunk/third/kermit/ckuus2.c @ 10780

Revision 10780, 128.1 KB checked in by brlewis, 27 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r10779, which included commits to RCS files with non-trunk default branches.
Line 
1/*  C K U U S 2  --  User interface strings & help text module for C-Kermit  */
2 
3/*
4  Author: Frank da Cruz <fdc@columbia.edu>,
5  Columbia University Academic Information Systems, New York City.
6
7  Copyright (C) 1985, 1996, Trustees of Columbia University in the City of New
8  York.  The C-Kermit software may not be, in whole or in part, licensed or
9  sold for profit as a software product itself, nor may it be included in or
10  distributed with commercial products or otherwise distributed by commercial
11  concerns to their clients or customers without written permission of the
12  Office of Kermit Development and Distribution, Columbia University.  This
13  copyright notice must not be removed, altered, or obscured.
14*/
15 
16/*
17 This module separates long strings from the body of the other ckuus* modules.
18*/
19
20#include "ckcsym.h"
21#include "ckcdeb.h"
22#include "ckcnet.h"
23#include "ckcasc.h"
24#include "ckcker.h"
25#include "ckuusr.h"
26#include "ckcxla.h"
27 
28extern xx_strp xxstring;
29extern char *ccntab[];
30
31#ifndef NOICP
32#ifdef DCMDBUF
33extern char *cmdbuf;
34#else
35extern char cmdbuf[];
36#endif /* DCMDBUF */
37#endif /* NOICP */
38
39#ifdef DEBUG
40extern char debfil[];
41#endif /* DEBUG */
42#ifdef TLOG
43extern char trafil[];
44#endif
45
46extern char *xarg0;
47extern int nrmt, nprm, dfloc, local, parity, escape;
48extern int turn, flow;
49extern int binary, warn, quiet, keep;
50extern int success;
51#ifdef OS2
52extern int tt_rows[], tt_cols[];
53#else /* OS2 */
54extern int tt_rows, tt_cols;
55#endif /* OS2 */
56extern int cmd_rows, cmd_cols;
57
58extern long speed;
59extern char *dftty, *versio, *ckxsys;
60extern struct keytab prmtab[];
61extern struct keytab remcmd[];
62 
63/* Command-Line help (Unix command-line arguments) */
64
65#ifndef NOCMDL
66static
67char *hlp1[] = {
68#ifndef NOICP
69" [cmdfile] [-x arg [-x arg]...[-yyy]..] [ = text ] ]\n",
70#else
71"[-x arg [-x arg]...[-yyy]..]\n",
72#endif /* NOICP */
73"  -x is an option requiring an argument, -y an option with no argument.\n",
74#ifdef COMMENT /* No room for this any more */
75#ifndef NOICP
76#ifndef NOSPL
77"     = means ignore following words, but place them in array \\&@[].\n",
78#else
79"     = means ignore following material.\n",
80#endif /* NOSPL */
81#else
82"     = means ignore following material.\n",
83#endif /* NOICP */
84#endif /* COMMENT */
85"actions:\n",
86"  -s files  send files                  -r  receive files\n",
87"  -s -      send from stdin             -k  receive files to stdout\n",
88#ifndef NOSERVER
89"  -x        enter server mode           -f  finish remote server\n",
90#else
91"  -f        finish remote server\n",
92#endif /* NOSERVER */
93"  -g files  get remote files from server (quote wildcards)\n",
94"  -a name   alternate file name, used with -s, -r, -g\n",
95#ifndef NOLOCAL
96"  -c        connect (before file transfer), used with -l and -b\n",
97"  -n        connect (after file transfer), used with -l and -b\n",
98#endif /* NOLOCAL */
99"settings:\n",
100#ifndef NOLOCAL
101"  -l dev    communication line device   -q  quiet during file transfer\n",
102#ifdef NETCONN
103"  -j host   network host name[:port]    -i  binary transfer (-T = text)\n",
104#else
105"  -i        binary file transfer\n",
106#endif /* NETCONN */
107"  -b bps    line speed, e.g. 19200      -t  half duplex, xon handshake\n",
108#else
109"  -i        binary file transfer\n",
110#endif /* NOLOCAL */
111#ifdef DEBUG
112"  -p x      parity, x = e,o,m,s, or n   -d  log debug info to debug.log\n",
113#else
114"  -p x      parity, x = e,o,m,s, or n\n",
115#endif /* DEBUG */
116#ifndef NOICP
117"  -y name   alternate init file name    -Y  no init file\n",
118#else
119#endif /* NOICP */
120"  -e n      receive packet length       -w  write over files\n",
121#ifdef UNIX
122"  -v n      sliding window slots        -z  force foreground\n",
123#else
124"  -v n      sliding window slots\n",
125#endif /* UNIX */
126#ifndef NODIAL
127"  -m name   modem type                  -R  remote-only advisory\n",
128#endif /* NODIAL */
129/*
130  If all this stuff is defined, we run off the screen...
131*/
132#ifdef CK_NETBIOS
133"  -N n      NetBIOS adapter number\n",
134#endif /* CK_NETBIOS */
135#ifdef ANYX25
136" -o index   X.25 closed user group call -X  X.25 address\n",
137" -U string  X.25 call user data         -u  X.25 reverse charge call\n",
138" -Z n       X.25 connection open file descriptor\n",
139#endif /* ANYX25 */
140#ifndef NOSPL
141"other:\n",
142"  -C \"command, command, ...\"  (interactive-mode commands to execute)\n",
143"   =  means ignore following words, but place them in array \\&@[].\n",
144#else
145"   =  means ignore following text.\n",
146#endif /* NOSPL */
147#ifdef NOICP
148"Operation by command-line options only.\n",
149#else
150"If no action command is included, or -S is, enter interactive dialog.\n",
151#endif /* NOICP */
152""
153};
154 
155/*  U S A G E */
156 
157VOID
158usage() {
159#ifndef MINIX
160    conol("Usage: ");
161    conol(xarg0);
162    conola(hlp1);
163#else
164    conol("Usage: ");
165    conol(xarg0);
166    conol(" [-x arg [-x arg]...[-yyy]..] ]\n");
167#endif /* MINIX */
168}
169#endif /* NOCMDL */
170
171#ifndef NOICP
172
173/*  Interactive help strings  */
174 
175static char *tophlp[] = {
176"Trustees of Columbia University in the City of New York.\n",
177
178#ifndef NOHELP
179#ifdef NT
180"  Type INTRO   for a brief introduction to the Kermit Command screen.",
181#else
182"  Type INTRO   for a brief introduction to C-Kermit.",
183#endif /* NT */
184"  Type VERSION for version and copyright information.",
185"  Type HELP    followed by a command name for help about a specific command.",
186"  Type NEWS    for news about new features.",
187#ifdef OS2
188#ifndef NT
189"  Type UPDATES to view updates to the \"Using C-Kermit\" manual.",
190#endif /* NT */
191#endif /* OS2 */
192"  Type BUG     to learn how to get technical support.",
193"  Press ?      (question mark) at the prompt, or anywhere within a command,",
194"               for a menu (context-sensitive help, menu on demand).",
195#else
196"Press ? for a list of commands; see documentation for detailed descriptions.",
197#endif /* NOHELP */
198
199#ifndef NOCMDL
200#ifdef NT
201"\n\
202  From DOS level, type \"k95 -h\" for help about command-line options.",
203#else
204#ifdef OS2
205"\n\
206  From system level, type \"k2 -h\" for help about command-line options.",
207#else
208"\n\
209  From system level, type \"kermit -h\" for help about command-line options.",
210#endif /* OS2 */
211#endif /* NT */
212#endif /* NOCMDL */
213" ",
214#ifdef NT
215"Documentation: \"Kermit 95\" by Christine M. Gianone and Frank da Cruz,",
216"Manning Publications, 1996.  Technical Reference: \"Using C-Kermit\" by",
217"Frank da Cruz and Christine M. Gianone, 2nd Ed., Digital Press, 1997.",
218"To order call +1 (212) 854-3703.",
219#else
220#ifdef MAC
221"Documentation for Command Window: \"Using C-Kermit\" by Frank da Cruz and",
222"Christine M. Gianone, Digital Press, 1997, ISBN: 1-55558-164-1.  To order,",
223"call +1 212 854-3703 or +1 800 366-2665.",
224#else
225"DOCUMENTATION: \"Using C-Kermit\" by Frank da Cruz and Christine M. Gianone,",
226"2nd Edition, Digital Press / Butterworth-Heinemann 1997, ISBN 1-55558-164-1.",
227"To order: +1 212 854-3703 or +1 800 366-2665.  PLEASE PURCHASE THE MANUAL.",
228"It shows you how to use C-Kermit and answers your questions; sales of this",
229"book are the primary source of funding for C-Kermit development and support.",
230#endif /* MAC */
231#endif /* NT */
232" ",
233#ifdef OS2ONLY
234"Use the UPDATES command to access hypertext documentation for features added",
235"since the book was published. Use UPDATES <keyword> to search for a keyword.",
236#else
237#ifdef MAC
238"Also see the Mac Kermit Doc and Bwr files on the Mac Kermit diskette.\n",
239#else
240#ifdef HPUX10
241"See /usr/share/lib/kermit/*.* for additional information.",
242#endif /* HPUX10 */
243#endif /* MAC */
244#endif /* OS2 */
245""
246};
247
248#ifndef NOHELP
249char *newstxt[] = {
250" Welcome to C-Kermit 6.0.  This version of C-Kermit was released",
251" concurrently with the second edition of the manual, \"Using C-Kermit\",",
252" and it is completely described there, with supplementary material found",
253" in system-specific publications, such as the Kermit 95 manual.  The",
254" update files that accompanied edits 189, 190, and 191 are no longer needed.",
255" ",
256" If the release date shown by the VERSION command is long past, be sure to",
257" check with the Kermit Project to see if have been updates.",
258""
259};
260#endif /* NOHELP */
261
262#ifndef NOHELP
263char *introtxt[] = {
264#ifdef NT
265"Welcome to K-95, Kermit communications software for:",
266#else
267#ifdef OS2
268"Welcome to Kermit/2, Kermit communications software for:",
269#else
270#ifdef UNIX
271#ifdef HPUX
272"Welcome to HP-UX C-Kermit communications software for:",
273#else
274"Welcome to UNIX C-Kermit communications software for:",
275#endif /* HPUX */
276#else
277#ifdef VMS
278"Welcome to VMS C-Kermit communications software for:",
279#else
280#ifdef VOS
281"Welcome to VOS C-Kermit communications software for:",
282#else
283#ifdef MAC
284"Welcome to Mac Kermit communications software for:",
285#else
286"Welcome to C-Kermit communications software for:",
287#endif /* MAC */
288#endif /* VOS */
289#endif /* VMS */
290#endif /* UNIX */
291#endif /* OS2 */
292#endif /* NT */
293" . Error-free and efficient file transfer",
294#ifdef OS2
295" . VT320/220/102/100/52, ANSI, Wyse, DG, Televideo, and other emulations",
296#else
297#ifdef MAC
298" . VT220 terminal emulation",
299#else
300" . Terminal connection",
301#endif /* MAC */
302#endif /* OS2 */
303#ifndef NOSPL
304" . Script programming",
305#endif /* NOSPL */
306#ifndef NOICS
307" . International character set conversion",
308#endif /* NOICS */
309#ifndef NOLOCAL
310"\nSupporting:",
311" . Serial connections, direct or dialed.",
312#ifndef NODIAL
313" . Automatic modem dialing",
314#endif /* NODIAL */
315#ifdef TCPSOCKET
316" . TCP/IP network connections",
317#endif /* TCPSOCKET */
318#ifdef ANYX25
319" . X.25 network connections",
320#endif /* ANYX25 */
321#ifdef OS2
322#ifdef DECNET
323" . DECnet/PATHWORKS LAT Ethernet connections",
324#endif /* DECNET */
325#ifdef SUPERLAT
326" . Meridian Technologies' SuperLAT connections",
327#endif /* SUPERLAT */
328#ifdef NPIPE
329" . Named-pipe connections",
330#endif /* NPIPE */
331#ifdef CK_NETBIOS
332" . NETBIOS connections",
333#endif /* CK_NETBIOS */
334#endif /* OS2 */
335#endif /* NOLOCAL */
336
337"\nWhile typing commands, you may use the following special characters:",
338" . DEL, RUBOUT, BACKSPACE, CTRL-H: Delete the most recent character typed.",
339" . CTRL-W:  Delete the most recent word typed.",
340" . CTRL-U:  Delete the current line.",
341" . CTRL-R:  Redisplay the current line.",
342#ifdef CK_RECALL
343#ifdef OS2
344" . \030 or CTRL-B: Command recall - go backwards in command recall buffer.",
345" . \031 or CTRL-N: Command recall - go forward in command recall buffer.",
346#else
347" . CTRL-P:  Command recall - go backwards in command recall buffer.",
348" . CTRL-B:  Command recall - same as Ctrl-P.",
349" . CTRL-N:  Command recall - go forward in command recall buffer.",
350#endif /* OS2 */
351#endif /* CK_RECALL */
352" . ?        (question mark) Display a menu for the current command field.",
353" . ESC      (or TAB) Attempt to complete the current field.",
354" . \\        (backslash) include the following character literally",
355#ifndef NOSPL
356"            or introduce a backslash code, variable, or function.",
357#else
358"            or introduce a numeric backslash code.",
359#endif /* NOSPL */
360"  Command words other than filenames can be abbreviated in most contexts.",
361
362#ifdef OS2
363#ifdef NT
364"\nBasic K-95 commands:",
365"  EXIT          exit from K-95",
366#else /* NT */
367"\nBasic Kermit/2 commands:",
368"  EXIT          exit from Kermit/2",
369#endif /* NT */
370#else /* OS2 */
371"\nBasic C-Kermit commands:",
372"  EXIT          exit from C-Kermit",
373#endif /* NT */
374"  HELP          request general help",
375"  HELP command  request help about the given command",
376"  TAKE          execute commands from a file",
377
378"\nCommands for file transfer:",
379"  SEND          send files",
380"  RECEIVE       receive files",
381"  GET           get files from a Kermit server",
382#ifdef CK_RESEND
383"  RESEND        recover an interrupted send",
384"  REGET         recover an interrupted get from a server",
385#endif /* CK_RESEND */
386#ifndef NOSERVER
387"  SERVER        be a Kermit server",
388#endif /* NOSERVER */
389
390"\nImportant settings:",
391"  SET PARITY    communications parity",
392#ifdef CK_RTSCTS
393"  SET FLOW      communications flow control, such as RTS/CTS",
394#else
395"  SET FLOW      communications flow control, such as XON/XOFF",
396#endif /* CK_RTSCTS */
397"  SET FILE      file settings, for example TYPE TEXT or TYPE BINARY",
398
399#ifndef NOLOCAL
400"\nTo make a direct serial connection:",
401#ifdef OS2
402#ifdef NT
403"  SET PORT      select serial communication device",
404#else
405"  SET PORT      select serial communication port or server",
406#endif /* NT */
407#else
408"  SET LINE      select serial communication device",
409#endif /* OS2 */
410"  SET SPEED     select communication speed",
411"  CONNECT       begin terminal connection",
412
413#ifndef NODIAL
414"\nTo dial out with a modem:",
415"  SET DIAL DIRECTORY     specify dialing directory file (optional)",
416"  SET DIAL COUNTRY-CODE  country you are dialing from (*)",
417"  SET DIAL AREA-CODE     area-code you are dialing from (*)",
418"  LOOKUP                 lookup entries in your dialing directory (*)",
419"  SET MODEM TYPE         select modem type",
420#ifdef OS2
421#ifdef NT
422"  SET PORT      select serial communication device",
423#else
424"  SET PORT      select serial communication port or server",
425#endif /* NT */
426#else
427"  SET LINE      select serial communication device",
428#endif /* OS2 */
429"  SET SPEED     select communication speed",
430"  DIAL          dial the phone number",
431"  CONNECT       begin terminal connection",
432#ifdef OS2
433"Further info:   HELP DIAL, HELP SET MODEM, HELP SET PORT, HELP SET DIAL",
434#else
435"Further info:   HELP DIAL, HELP SET MODEM, HELP SET LINE, HELP SET DIAL",
436#endif /* OS2 */
437"(*) (For use with optional dialing directory)",
438#endif /* NODIAL */
439
440#ifdef NETCONN
441"\nTo make a network connection:",
442"  SET NETWORK DIRECTORY  specify a network services direction (optional)",
443"  LOOKUP                 lookup entries in your network directory",
444"  SET NETWORK   select network type",
445"  SET HOST      select network host",
446"  CONNECT       begin terminal connection",
447#ifdef TNCODE
448"  TELNET        select a TCP/IP host and CONNECT to it",
449#endif /* TNCODE */
450#endif /* NETCONN */
451
452#ifdef NT
453"\nTo return from the terminal window to the K-95> prompt:",
454#else
455#ifdef OS2
456"\nTo return from the terminal window to the K/2> prompt:",
457#else
458"\nTo return from a terminal connection to the C-Kermit prompt:",
459#endif /* OS2 */
460#endif /* NT */
461#ifdef OS2
462"  \
463Press the key or key-combination shown after \"Prompt:\" in the status line",
464"  (such as Alt-x) or type your escape character followed by the letter C.",
465#else
466"  Type your escape character followed by the letter C.",
467#endif /* OS2 */
468"\nTo display your escape character:",
469"  SHOW ESCAPE",
470"\nTo display other settings:",
471"  SHOW COMMUNICATIONS, SHOW TERMINAL, SHOW FILE, SHOW PROTOCOL, etc.",
472#else  /* !NOLOCAL */
473"\nTo display settings:",
474"  SHOW COMMUNICATIONS, SHOW TERMINAL, SHOW FILE, SHOW PROTOCOL, etc.",
475#endif /* NOLOCAL */
476"\nTo speed up file transfers:",
477"  SET RECEIVE PACKET-LENGTH  (use bigger packets)",
478"  SET WINDOW                 (use sliding windows)",
479"  SET PREFIXING              (reduce prefixing overhead)",
480"  FAST                       (combination of the three above)",
481
482"\nFor further information about a particular command, type HELP xxx,",
483"where xxx is the name of the command.  For documentation, news of new",
484"releases, and information about other Kermit software, contact:\n",
485"  The Kermit Project         E-mail: kermit-orders@columbia.edu",
486"  Columbia University        Web:    http://www.columbia.edu/kermit/",
487"  612 West 115th Street      Voice:  +1 (212) 854-3703",
488"  New York NY  10025-7799    Fax:    +1 (212) 663-8202",
489"  USA",
490""
491};
492
493static char *hxxinp[] = {
494"Syntax:  INPUT { number-of-seconds, time-of-day } [ text ]",
495"Example: INPUT 5 Login:  or  INPUT 23:59:59 RING",
496" ",
497"Waits up to the given number of seconds, or until the given time of day",
498"for the given text to arrive on the connection.  If no text is given, INPUT",
499"waits for any character.  For use in script programs with IF FAILURE and",
500"IF SUCCESS.  Also see MINPUT, REINPUT, SET INPUT.  See PAUSE for details on",
501"time-of-day format.",
502""};
503
504#ifdef CK_XYZ
505#ifdef XYZ_INTERNAL
506static char *hxyixyz[] = {
507"Syntax: SET PROTOCOL { KERMIT, XMODEM, YMODEM, ZMODEM } [ s1 s2 ]",
508" ",
509"Selects protocol to use for transferring files.  String 1 is a command to",
510"output prior to SENDing with this protocol in binary mode; string 2 is the",
511"same thing but for text mode.  Use \"%\" in any of these strings to",
512"represent the filename(s).  Use { braces } if any command contains spaces.",
513"Example:",
514" ",
515"  set proto xmodem {rx %s} {rx -a %s}",
516" ",
517""};
518#else
519static char *hxyxyz[] = {
520"Syntax: SET PROTOCOL { KERMIT, XMODEM, YMODEM, ZMODEM } [ s1 s2 s3 s4 s5 s6 ]",
521" ",
522"Selects protocol to use for transferring files.  s1 and s2 are commands to",
523"output prior to SENDing with this protocol, to automatically start the",
524"RECEIVE process on the other end in binary or text mode, respectively.",
525"s3 and s4 are commands used on this computer for sending files with this",
526"protocol in binary or text mode.  s5 and s6 are the commands for receiving",
527"files with this protocol.  Use \"%s\" in any of these strings to represent",
528"the filename(s).  Use { braces } if any command contains spaces.  Example:",
529" ",
530"  set proto ymodem rb {rb -a} {sb %s} {sb -a %s} rb rb",
531" ",
532"NOTE: This feature requires REDIRECT and external protocols that can be",
533"redirected.",
534""};
535#endif /* CK_XYZ */
536#endif /* XYZ_INTERNAL */
537
538static char *hmxxbye = "Syntax: BYE\n\
539Shut down and log out a remote Kermit server";
540 
541static char *hmxxclo[] = {
542"Syntax:  CLOSE name",
543"Example: CLOSE PACKET\n",
544"Close one of the following logs or files:",
545#ifndef NOLOCAL
546"  SESSION",
547#endif /* NOLOCAL */
548#ifdef TLOG
549"  TRANSACTION",
550#endif /* TLOG */
551"  PACKET",
552#ifdef DEBUG
553"  DEBUGGING",
554#endif /* DEBUG */
555#ifndef NOSPL
556"  READ",
557"  WRITE",
558#endif /* NOSPL */
559"Type HELP LOG and HELP OPEN for further info.", "" };
560 
561#ifdef CK_MINPUT
562static char *hmxxminp[] = {
563"Syntax:  MINPUT n [ string1 [ string2 [ ... ] ] ]",
564"Example: MINPUT 5 Login: {Username: } {NO CARRIER} BUSY RING\n",
565"For use in script programs.  Waits up to n seconds for any one of the",
566"strings to arrive on the communication device.  If no strings are given, the",
567"command waits for any character at all to arrive.  Strings are separated by",
568"spaces; use { braces } for grouping.  If any of the strings is encountered",
569"within the timeout interval, the command succeeds and the \\v(minput)",
570"variable is set to the number of the string that was matched: 1, 2, 3, etc.",
571"If none of the strings arrives, the command times out, fails, and",
572"\\v(minput) is set to 0.\n",
573"Also see: INPUT, REINPUT, SET INPUT.",
574"" };
575#endif /* CK_MINPUT */
576
577#ifndef NOLOCAL
578static char *hmxxcon[] = {
579#ifdef OS2
580"Syntax: CONNECT (or C)\n",
581#else
582"Syntax: CONNECT (or C) [/QUIETLY]\n",
583#endif /* OS2 */
584"Connect to a remote computer via the serial communications device given in",
585#ifdef OS2
586"the most recent SET PORT command, or to the network host named in the most",
587#else
588"the most recent SET LINE command, or to the network host named in the most",
589#endif /* OS2 */
590"recent SET HOST command.  Type the escape character followed by C to get",
591"back to the C-Kermit prompt, or followed by ? for a list of CONNECT-mode",
592#ifdef OS2
593"escape commands.  You can also assign the \\Kexit verb to the key or",
594"key-combination of your choice; by default it is assigned to Alt-x.",
595#else
596"escape commands.",
597"\nInclude the /QUIETLY switch to suppress the informational message that",
598"tells you how to escape back, etc.",
599#endif /* OS2 */
600"" };
601#endif /* NOLOCAL */
602 
603static char *hmxxget = "Syntax: GET filespec\n\
604Tell the remote Kermit server to send the named file or files.\n\
605If the filespec is omitted, then you are prompted for the remote and\n\
606local filenames separately.";
607
608#ifdef OS2ONLY
609static char *hmxxupd[] = {
610"Syntax: UPDATES [ keyword ]",
611"Loads the C-Kermit INF files with the OS/2 VIEW command for complete",
612"documentation of all changes and new features in OS/2 C-Kermit since the",
613"first edition of \"Using C-Kermit\" was published.  This command is not a",
614"substitute for the manual, but a supplement to it.",
615" ",
616"If a keyword is given, VIEW searches the index for it and, if it is found,",
617"goes straight to the first panel indexed for the keyword.",
618" ",
619"Upon quitting from VIEW (via Services:Exit or by closing the window) you",
620"are returned to the C-Kermit> prompt.",
621""
622};
623#endif /* OS2ONLY */
624
625static char *hmxxlg[] = { "Syntax: LOG (or L) name [ { NEW, APPEND } ]",
626"Record information in a log file:\n",
627#ifdef DEBUG
628"DEBUGGING     Debugging information, to help track down bugs in the C-Kermit",
629"              program (default log name is debug.log).\n",
630#endif /* DEBUG */
631"PACKETS       Kermit packets, to help with protocol problems (packet.log)",
632#ifndef NOLOCAL
633"SESSION       Terminal session, during CONNECT command (session.log)",
634#endif /* NOLOCAL */
635#ifdef TLOG
636"TRANSACTIONS  Names and statistics about files transferred (transact.log)\n",
637#endif /* TLOG */
638"If you include the APPEND keyword after the filename, the existing log file,",
639"if any, is appended to; otherwise a new file is created.",
640"Use CLOSE to stop logging.",
641"" };
642 
643#ifndef NOSCRIPT
644static char *hmxxlogi[] = { "\
645Syntax: SCRIPT text\n",
646"A limited and cryptic \"login assistant\", carried over from old C-Kermit",
647"releases for comptability, but not recommended for use.  Instead, please",
648"use the full script programming language described in chapters 11-13 of",
649"\"Using C-Kermit\".\n",
650"Login to a remote system using the text provided.  The login script",
651"is intended to operate similarly to UNIX uucp \"L.sys\" entries.",
652"A login script is a sequence of the form:\n",
653"  expect send [expect send] . . .\n",
654"where 'expect' is a prompt or message to be issued by the remote site, and",
655"'send' is the names, numbers, etc, to return.  The send may also be the",
656"keyword EOT, to send control-d, or BREAK (or \\\\b), to send a break signal.",
657"Letters in send may be prefixed by ~ to send special characters.  These are:",
658"~b backspace, ~s space, ~q '?', ~n linefeed, ~r return, ~c don\'t",
659"append a return, and ~o[o[o]] for octal of a character.  As with some",
660"uucp systems, sent strings are followed by ~r unless they end with ~c.\n",
661"Only the last 7 characters in each expect are matched.  A null expect,",
662"e.g. ~0 or two adjacent dashes, causes a short delay.  If you expect",
663"that a sequence might not arrive, as with uucp, conditional sequences",
664"may be expressed in the form:\n",
665"  -send-expect[-send-expect[...]]\n",
666"where dashed sequences are followed as long as previous expects fail.",
667"" };
668#endif /* NOSCRIPT */
669 
670static char *hmxxrc[] = { "Syntax: RECEIVE (or R) [filespec]\n",
671"Wait for a file to arrive from the other Kermit, which must be given a",
672"SEND command.  If the optional filespec is given, the (first) incoming",
673"file will be stored under that name, otherwise it will be stored under",
674#ifndef CK_TMPDIR
675"the name it arrives with.",
676#else
677#ifdef OS2
678"the name it arrives with.  If the filespec denotes a disk and/or directory,",
679"the incoming file or files will be stored there.",
680#else
681"the name it arrives with.  If the filespec denotes a directory, the",
682"incoming file or files will be placed in that directory.",
683#endif /* OS2 */
684#endif /* CK_TMPDIR */
685"" };
686 
687static char *hmxxsen = "\
688Syntax: SEND (or S) filespec [name]\n\n\
689Send the file or files specified by filespec.\n\
690filespec may contain wildcard characters '*' or '?'.  If no wildcards,\n\
691then 'name' may be used to specify the name 'filespec' is sent under; if\n\
692'name' is omitted, the file is sent under its own name.  Also see ADD.";
693 
694#ifndef NORESEND
695static char *hmxxrsen = "\
696Syntax: RESEND filespec [name]\n\n\
697Resend the file or files, whose previous transfer was interrupted.\n\
698Picks up from where previous transfer left off, IF the receiver was told\n\
699to SET FILE INCOMPLETE KEEP.  Only works for binary-mode transfers.\n\
700Requires the other Kermit to have RESEND capability.";
701
702static char *hmxxrget = "\
703Syntax: REGET filespec\n\n\
704Ask a server to RESEND a file to C-Kermit.";
705
706static char *hmxxpsen = "\
707Syntax: PSEND filespec position [name]\n\n\
708Just like SEND, except sends the file starting at the given byte position.";
709#endif /* NORESEND */
710
711#ifndef NOMSEND
712static char *hmssmse = "\
713Syntax: MSEND filespec [ filespec [ ... ] ]\n\n\
714Send the files specified by the filespecs.  One or more filespecs may be\n\
715listed, separated by spaces.  Any or all filespecs may contain wildcards\n\
716and they may be in different directories.  An alternate name cannot be given.";
717
718static char *hmssadd = "\
719Syntax: ADD filespec [ <mode> [ <as-name> ] ]\n\n\
720Add the file or files to the current SEND list.  Use SHOW SEND-LIST and\n\
721CLEAR SEND-LIST to display and clear the list, use SEND by itself to send it.";
722#endif /* NOMSEND */
723
724#ifndef NOSERVER
725static char *hmxxser = "Syntax: SERVER\n\n\
726Enter server mode on the currently selected line.  All further commands\n\
727will be taken in packet form from the other Kermit program.  Use FINISH\n\
728or BYE to get C-Kermit out of server mode.";
729#endif /* NOSERVER */
730 
731static char *hmhset[] = { "\
732The SET command is used to establish various communication or file",
733"parameters.  The SHOW command can be used to display the values of",
734"SET parameters.  Help is available for each individual parameter;",
735"type HELP SET ? to see what's available.",
736"" };
737 
738#ifndef NOSETKEY
739static char *hmhskey[] = {
740"Syntax: SET KEY k text",
741"Or:     SET KEY CLEAR\n",
742"Configure the key whose \"scan code\" is k to send the given text when",
743"pressed during CONNECT mode.  SET KEY CLEAR restores all the default",
744"key mappings.  If there is no text, the default key binding is restored for",
745#ifndef NOCSETS
746"the key k.  SET KEY mappings take place before terminal character-set",
747"translation.",
748#else
749"the key k.",
750#endif /* NOCSETS */
751#ifdef OS2
752"\nThe text may contain \"\\Kverbs\" to denote actions, to stand for DEC",
753"keypad, function, or editing keys, etc.  For a list of available keyboard",
754"verbs, type SHOW KVERBS.",
755#endif /* OS2 */
756"\nTo find out the scan code and mapping for a particular key, use the",
757"SHOW KEY command.",
758""};
759#endif /* NOSETKEY */
760
761static char *hmxychkt[] = { "Syntax: SET BLOCK-CHECK type\n",
762"Type of packet block check to be used for error detection, 1, 2, 3, or",
763"BLANK-FREE-2.  Type 1 is standard, and catches most errors.  Types 2 and 3",
764"specify more rigorous checking at the cost of higher overhead.  The",
765"BLANK-FREE-2 type is the same as Type 2, but is guaranteed to contain no",
766"blanks.",
767"" };
768 
769#ifdef CK_SPEED
770static char *hmxyqctl[] = {
771"Syntax: SET CONTROL-CHARACTER { PREFIXED, UNPREFIXED } { <code>..., ALL }\n",
772"<code> is the numeric ASCII code for a control character 1-31, 127-159, 255.",
773"The word \"ALL\" means the command applies to all characters in this range.",
774"\nPREFIXED <code> means the given control character must be converted to a",
775" printable character and prefixed, the default for all control characters.",
776"\nUNPREFIXED <code> means you think it is safe to send the given control",
777" character as-is, without a prefix.  USE THIS OPTION AT YOUR OWN RISK!",
778"\nSHOW CONTROL to see current settings.  SET CONTROL PREFIXED ALL is",
779"recommended for safety.  You can include multiple <code> values in one",
780"command, separated by spaces.",
781"" };
782#endif /* CK_SPEED */
783
784#ifndef NODIAL
785static char *hxymodm[] = {
786"Syntax: SET MODEM <parameter> <value> ...\n",
787"Note: Many of the SET MODEM parameters are configured automatically when",
788"you SET MODEM TYPE, according to the modem's capabilities.  SHOW MODEM to",
789"see them.  Also see HELP DIAL and HELP SET DIAL.\n",
790"SET MODEM TYPE <name>",
791"  Tells Kermit which kind of modem you have, so it can issue the appropriate",
792"  modem-specific commands for configuration, dialing, and hanging up.  For a",
793"  list of the modem types known to Kermit, type \"set modem type ?\".",
794"  Use SET MODEM TYPE NONE (the default) for direct serial connections.  Use",
795"  SET MODEM TYPE USER-DEFINED to use a type of modem that is not built in",
796"  to Kermit, and then user SET MODEM CAPABILITIES, SET MODEM DIAL-COMMAND,",
797"  and SET MODEM COMMAND to tell Kermit how to configure and control it.\n",
798#ifdef UNIX
799"  Give the SET MODEM TYPE command BEFORE the SET LINE command so Kermit can",
800"  open the communications device in the correct mode for dialing.\n",
801#endif /* UNIX */
802
803"SET MODEM CAPABILITIES <list>",
804"  Use this command for changing Kermit's idea of your modem's capabilities,",
805"  for example, if your modem is supposed to have built-in error correction",
806"  but in fact does not.  Also use this command to define the capabilities",
807"  of a USER-DEFINED modem.  Capabilities are:\n",
808"   AT      AT-commands",
809"   DC      data-compression",
810"   EC      error-correction",
811"   HWFC    hardware-flow",
812"   ITU     v25bis-commands",
813"   SWFC    software-flow",
814"   KS      kermit-spoof",
815"   SB      speed-buffering",
816"   TB      Telebit\n",
817"SET MODEM CARRIER-WATCH { AUTO, ON, OFF }",
818"  Synonym for SET CARRIER-WATCH (q.v.)\n",
819"SET MODEM COMPRESSION { ON, OFF }",
820"  Enables/disables the modem's data compression feature, if any.\n",
821"SET MODEM DIAL-COMMAND <text>",
822"  The text replaces Kermit's built-in modem dialing command.  It must",
823"  include '%s' (percent s) as a place-holder for the telephone numbers",
824"  given in your DIAL commands.\n",
825"SET MODEM ERROR-CORRECTION { ON, OFF }",
826"  Enables/disables the modem's error-correction feature, if any.\n",
827"SET MODEM ESCAPE-CHARACTER number",
828"  Numeric ASCII value of modem's escape character, e.g. 43 for '+'.",
829"  For Hayes-compatible modems, Kermit uses three copies, e.g. \"+++\".\n",
830"SET MODEM FLOW-CONTROL {AUTO, NONE, RTS/CTS, XON/XOFF}",
831"  Selects the type of local flow control to be used by the modem.\n",
832"SET MODEM HANGUP-METHOD { MODEM-COMMAND, RS232-SIGNAL }",
833"  How hangup operations should be done.  MODEM-COMMAND means try to",
834"  escape back to the modem's command processor and give a modem-specific",
835"  hangup command.  RS232-SIGNAL means turn off the DTR signal.\n",
836"SET MODEM KERMIT-SPOOF {ON, OFF}",
837"  If the selected modem type supports the Kermit protocol directly,",
838"  use this command to turn its Kermit protocol function on or off.\n",
839"SET MODEM MAXIMUM-SPEED <number>",
840"  Specify the maximum interface speed for the modem.\n",
841"SET MODEM NAME <text>",
842"  Descriptive name for a USER-DEFINED modem.\n",
843"SET MODEM SPEED-MATCHING {ON, OFF}",
844"  ON means that C-Kermit changes its serial interface speed to agree with",
845"  the speed reported by the modem's CONNECT message, if any.  OFF means",
846"  Kermit should not change its interface speed.\n",
847"SET MODEM COMMAND commands are used to override built-in modem commands for",
848"each modem type, or to fill in commands for the USER-DEFINED modem type.",
849"Omitting the optional [ text ] restores the built-in modem-specific command,",
850"if any:\n",
851"SET MODEM COMMAND AUTOANSWER {ON, OFF} [ text ]",
852"  Modem commands to turn autoanswer on and off.\n",
853"SET MODEM COMMAND COMPRESSION {ON, OFF} [ text ]",
854"  Modem commands to turn data compression on and off.\n",
855"SET MODEM COMMAND ERROR-CORRECTION {ON, OFF} [ text ]",
856"  Modem commands to turn error correction on and off.\n",
857"SET MODEM COMMAND HANGUP [ text ]",
858"  Command that tells the modem to hang up the connection.\n",
859"SET MODEM COMMAND INIT-STRING [ text ]",
860"  The 'text' is a replacement for C-Kermit's built-in initialization command",
861"  for the modem.\n",
862"SET MODEM COMMAND HARDWARE-FLOW [ text ]",
863"  Modem command to enable hardware flow control (RTS/CTS) in the modem.\n",
864"SET MODEM COMMAND SOFTWARE-FLOW [ text ]",
865"  Modem command to enable local software flow control (Xon/Xoff) in modem.\n",
866"SET MODEM COMMAND NO-FLOW-CONTROL [ text ]",
867"  Modem command to disable local flow control in the modem.\n",
868"SET MODEM COMMAND PULSE [ text ]",
869"  Modem command to select pulse dialing.\n",
870"SET MODEM COMMAND TONE [ text ]",
871"  Modem command to select tone dialing.\n",
872"",
873};
874
875static char *hmxydial[] = {
876"The SET DIAL command establishes or changes all parameters related to",
877"dialing the telephone.  Also see HELP DIAL and HELP SET MODEM.  Use SHOW",
878"DIAL to display all of the SET DIAL values.\n",
879"SET DIAL COUNTRY-CODE <number>",
880"  Tells Kermit the telephonic country-code of the country you are dialing",
881"  from, so it can tell whether a portable-format phone number from your",
882"  dialing directory will result in a national or an international call.",
883"  Examples: 1 for USA, Canada, Puerto Rico, etc; 7 for Russia, 39 for Italy,",
884"  351 for Portugal, 47 for Norway, 44 for the UK, 972 for Israel, 81 for",
885"  Japan, ...\n",
886"  If you have not already set your DIAL INTL-PREFIX and LD-PREFIX, then this",
887"  command sets default values for them: 011 and 1, respectively, for country",
888"  code 1; 00 and 0, respectively, for all other country codes.  If these are",
889"  not your true international and long-distance dialing prefixes, then you",
890"  should follow this command by DIAL INTL-PREFIX and LD-PREFIX to let Kermit",
891"  know what they really are.\n",
892"SET DIAL AREA-CODE [ <number> ]",
893"  Tells Kermit the area or city code that you are dialing from, so it can",
894"  tell whether a portable-format phone number from the dialing directory is",
895"  local or long distance.  Be careful not to include your long-distance",
896"  dialing prefix as part of your area code; for example, the area code for",
897"  central London is 171, not 0171.\n",
898"SET DIAL CONFIRMATION {ON, OFF}",
899"  Kermit does various transformations on a telephone number retrieved from",
900"  the dialing directory prior to dialing (use LOOKUP <name> to see them).",
901"  In case the result might be wrong, you can use SET DIAL CONFIRM ON to have",
902"  Kermit ask you if it is OK to dial the number, and if not, to let you type",
903"  in a replacement.\n",
904"SET DIAL CONNECT { AUTO, ON, OFF }",
905"  Whether to CONNECT (enter terminal mode) automatically after successfully",
906"  dialing.  ON means to do this; OFF means not to.  AUTO (the default) means",
907"  do it if the DIAL command was given interactively, but don't do it if the",
908"  DIAL command was issued from a macro or command file.  If you specify ON",
909"  or AUTO, you may follow this by one of the keywords VERBOSE or QUIET, to",
910"  indicate whether the verbose 4-line 'Connecting...' message is to be",
911"  displayed if DIAL succeeds and Kermit goes into CONNECT mode.\n",
912"SET DIAL CONVERT-DIRECTORY {ASK, ON, OFF}",
913"  The format of Kermit's dialing directory changed in version 5A(192).  This",
914"  command tells Kermit what to do when it encounters an old-style directory:",
915"  ASK you whether to convert it, or convert it automatically (ON), or leave",
916"  it alone (OFF).  Old-style directories can still be used without",
917"  conversion, but the parity and speed fields are ignored.\n",
918"SET DIAL DIRECTORY [ filename [ filename [ filename [ ... ] ] ] ]",
919"  The name(s) of your dialing directory file(s).  If you do not supply any",
920"  filenames, the  dialing directory feature is disabled and all numbers are",
921"  dialed literally as given in the DIAL command.  If you supply more than",
922"  one directory, all of them are searched.\n",
923"SET DIAL SORT {ON, OFF}",
924"  When multiple entries are obtained from your dialing directory, they are",
925"  sorted in \"cheapest-first\" order.  If this does not produce the desired",
926"  effect, SET DIAL SORT OFF to disable sorting, and the numbers will be",
927"  dialed in the order in which they were found.\n",
928"SET DIAL DISPLAY {ON, OFF}",
929"  Whether to display dialing progress on the screen; default is OFF.\n",
930"SET DIAL HANGUP {ON, OFF}",
931"  Whether to hang up the phone prior to dialing; default is ON.\n",
932"SET DIAL METHOD {DEFAULT, TONE, PULSE}",
933"  Whether to use the modem's DEFAULT dialing method, or to force TONE or",
934"  PULSE dialing.\n",
935"SET DIAL TIMEOUT number",
936"  How many seconds to wait for a dialed call to complete.  Use this command",
937"  to override the DIAL command's automatic timeout calculation.  A value",
938"  of 0 turns off this feature and returns to Kermit's automatic dial",
939"  timeout calculation.\n",
940"SET DIAL RESTRICT { INTERNATIONAL, LOCAL, LONG-DISTANCE, NONE }",
941"  Prevents placing calls of the type indicated, or greater.  For example",
942"  SET DIAL RESTRICT LONG prevents placing of long-distance and international",
943"  calls.  If this command is not given, there are no restrictions.\n",
944"SET DIAL RETRIES <number>",
945"  How many times to redial each number if the dialing result is busy or no",
946"  no answer, until the call is succesfully answered.  The default is 0",
947"  because automatic redialing is illegal in some countries.\n",
948"SET DIAL INTERVAL <number>",
949"  How many seconds to pause between automatic redial attempts; default 10.\n",
950
951"The following commands apply to all phone numbers, whether given literally",
952"or found in the dialing directory:\n",
953"SET DIAL PREFIX [ text ]",
954"  Establish a prefix to be applied to all phone numbers that are dialed,",
955"  for example to disable call waiting.\n",
956"SET DIAL SUFFIX [ text ]",
957"  Establish a suffix to be added after all phone numbers that are dialed.\n",
958"The following commands apply only to portable-format numbers obtained from",
959"the dialing directory; i.e. numbers that start with a \"+\" sign and",
960"country code, followed by area code in parentheses, followed by the phone",
961"number.\n",
962"SET DIAL LD-PREFIX [ <text> ]",
963"  Your long-distance dialing prefix, to be used with portable dialing",
964"  directory entries that result in long-distance calls.\n",
965"SET DIAL LD-SUFFIX [ <text> ]",
966"  Long-distance dialing suffix, if any, to be used with portable dialing",
967"  directory entries that result in long-distance calls.  This would normally",
968"  be used for appending a calling-card number to the phone number.\n",
969"SET DIAL TOLL-FREE-AREA-CODE [ <number> [ <number> [ ... ] ] ]",
970"  Tells Kermit the toll-free area code(s) in your country.\n",
971"SET DIAL TOLL-FREE-PREFIX [ <text> ]",
972"  You toll-free dialing prefix, in case it is different from your long-",
973"  distance dialing prefix.\n",
974"SET DIAL INTL-PREFIX <text>",
975"  Your international dialing prefix, to be used with portable dialing",
976"  directory entries that result in international calls.\n",
977"SET DIAL INTL-SUFFIX <text>",
978"  International dialing suffix, if any, to be used with portable dialing",
979"  directory entries that result in international calls.\n",
980"SET DIAL PBX-OUTSIDE-PREFIX <text>",
981"  Use this to tell Kermit how to get an outside line when dialing from a",
982"  Private Branch Exchange (PBX).\n",
983"SET DIAL PBX-EXCHANGE <text>",
984"  If PBX-OUTSIDE-PREFIX is set, then you can use this command to tell Kermit",
985"  the leading digits of a local phone number that identify it as being on",
986"  your PBX, so it can make an internal call by deleting those digits from",
987"  the phone number.\n",
988"SET DIAL PBX-INTERNAL-PREFIX <text>",
989"  If PBX-EXCHANGE is set, and Kermit determines from it that a call is",
990"  internal, then this prefix, if any, is added to the number prior to",
991"  dialing.  Use this if internal calls require a special prefix.",
992"" };
993#endif /* NODIAL */
994
995static char *hmxyflo[] = { "Syntax: SET FLOW value\n",
996#ifndef NOLOCAL
997"Type of flow control to use during file transfer and CONNECT mode.",
998#else
999"Type of flow control to use during file transfer.",
1000#endif /* NOLOCAL */
1001"Choices: AUTOMATIC (the default, let Kermit choose for you); KEEP (don't",
1002"change the device's current setting), XON/XOFF (software flow control),",
1003"NONE (no flow control at all), and possibly others including RTS/CTS",
1004"(hardware) depending on the capabilities of your computer and operating",
1005"system.  Type SET FLOW ? for a list.",
1006""};
1007
1008static char *hmxyf[] = { "Syntax: SET FILE parameter value",
1009"Parameters:\n",
1010
1011"BYTESIZE { 7, 8 }: normally 8.  If 7, truncate the 8th bit of all file \
1012bytes.\n",
1013
1014#ifndef NOCSETS
1015"CHARACTER-SET: tells the encoding of the local file, ASCII by default.",
1016"The names ITALIAN, PORTUGUESE, NORWEGIAN, etc, refer to 7-bit ISO-646",
1017"national character sets.  LATIN1 is the 8-bit ISO 8859-1 Latin Alphabet 1",
1018"for Western European languages.",
1019"NEXT is the 8-bit character set of the NeXT workstation.",
1020"The CPnnn sets are for IBM PCs.  MACINTOSH-LATIN is for the Macintosh.",
1021#ifndef NOLATIN2
1022"LATIN2 is ISO 8859-2 for Eastern European languages that are written with",
1023"Roman letters.",
1024#endif /* NOLATIN2 */
1025#ifdef CYRILLIC
1026"KOI-CYRILLIC, CYRILLIC-ISO, and CP866 are 8-bit Cyrillic character sets.",
1027"SHORT-KOI is a 7-bit ASCII coding for Cyrillic.",
1028#endif /* CYRILLIC */
1029#ifdef HEBREW
1030"HEBREW-ISO is ISO 8859-8 Latin/Cyrillic.  CP862 is the Hebrew PC code page.",
1031"HEBREW-7 is like ASCII with the lowercase letters replaced by Hebrew.",
1032#endif /* HEBREW */
1033#ifdef KANJI
1034"JAPANESE-EUC, JIS7-KANJI, DEC-KANJI, and SHIFT-JIS-KANJI are Japanese",
1035"Kanji character sets.",
1036#endif /* KANJI */
1037"Type SET FILE CHAR ? for a complete list of file character sets.\n",
1038#endif /* NOCSETS */
1039
1040"COLLISION tells what to do when a file arrives that has the same name as",
1041"an existing file.  The options are:",
1042"  BACKUP (default) - Rename the old file to a new, unique name and store",
1043"    the incoming file under the name it was sent with.",
1044"  OVERWRITE - Overwrite (replace) the existing file.",
1045"  APPEND - Append the incoming file to the end of the existing file.",
1046"  DISCARD - Refuse and/or discard the incoming file.",
1047"  RENAME - Give the incoming file a unique name.",
1048"  UPDATE - Accept the incoming file only if it is newer than the existing",
1049"    file.",
1050"Example: SET FILE COLLISION UPDATE\n",
1051
1052"SET FILE DISPLAY selects the format of the file transfer display for",
1053"local-mode file transfer.  The choices are:",
1054"  SERIAL (the default).  One dot is printed for every K bytes transferred.",
1055"    This format works on any kind of terminal, even a hardcopy.",
1056"  CRT.  Numbers are continuously updated on a single screen line.  This",
1057"    format can be used on any video display terminal.",
1058#ifdef CK_CURSES
1059"  FULLSCREEN.  A fully formatted 24x80 screen showing lots of information.",
1060"    This requires a video display terminal whose control sequences are",
1061"    understood by Kermit.",
1062#endif /* CK_CURSES */
1063"  NONE.  No file transfer display at all.\n",
1064
1065"DOWNLOAD-DIRECTORY [ <directory-name> ]",
1066"Directory into which all received files should be placed.  By default,",
1067"received files go into your current directory.\n",
1068
1069"INCOMPLETE - what to do with an incompletely received file: KEEP",
1070"(default), or DISCARD.\n",
1071
1072#ifdef VMS
1073"LABEL { ACL, BACKUP-DATE, NAME, OWNER, PATH } { ON, OFF } - Tells which",
1074"items to include (ON) or exclude (OFF) in labeled file transfer.",
1075#else
1076#ifdef OS2
1077"LABEL { ARCHIVE, READ-ONLY, HIDDEN, SYSTEM, EXTENDED } { ON, OFF }",
1078"Tells which items to include (ON) or exclude (OFF) in labeled file transfer.",
1079#endif /* OS2 */
1080#endif /* VMS */
1081
1082"NAMES are normally CONVERTED to 'common form' during transmission; LITERAL",
1083"means use filenames literally (useful between like systems).  Also see",
1084"SET SEND PATHNAMES and SET RECEIVE PATHNAMES.\n",
1085
1086#ifdef VMS
1087"RECORD-LENGTH sets the record length for received files of type BINARY. Use",
1088"this to receive VMS BACKUP savesets or other fixed-format files. The default",
1089"of 512 is suitable for executable (.EXE) files, etc.\n",
1090"Example: SET FILE REC 8192\n",
1091#endif /* VMS */
1092
1093"TYPE: How file contents are to be treated during file transfer.",
1094"TYPE is normally TEXT, with conversion of record format and character set.",
1095"BINARY means to do no conversion.  Use BINARY for executable programs or",
1096"binary data.  Example: SET FILE TYPE BINARY.\n",
1097
1098#ifdef VMS
1099"For VMS, you may include an optional record-format after the word",
1100"BINARY.  This may be FIXED (the default) or UNDEFINED.",
1101"Two additional VMS file types are also supported: IMAGE and LABELED.  IMAGE",
1102"means raw block i/o, no interference from RMS, and applies to file transmis-",
1103"sion only.  LABELED means to send or interpret RMS attributes with the file.",
1104"\n",
1105#endif /* VMS */
1106
1107"WARNING.  SET FILE WARNING is superseded by the newer command, SET FILE",
1108"COLLISION.  SET FILE WARNING ON is equivalent to SET FILE COLLISION RENAME",
1109"and SET FILE WARNING OFF is equivalent to SET FILE COLLISION OVERWRITE.\n",
1110
1111"" };
1112 
1113static char *hmxyhsh[] = { "Syntax: SET HANDSHAKE value\n",
1114"Character to use for half duplex line turnaround handshake during file",
1115"transfer.  C-Kermit waits for this character from the other computer before",
1116"sending its next packet.  Default is NONE, others are XON, LF, BELL, ESC,",
1117"etc.  SET HANDSHAKE CODE <n> lets you specify the numeric ASCII value of the",
1118"handshake character.  Type SET HANDSH ? for a list.",
1119"" };
1120
1121#ifndef NOSERVER
1122static char *hsetsrv[] = {"\
1123SET SERVER DISPLAY {ON,OFF}",
1124"Tell whether local-mode C-Kermit during server operation should put a",
1125"file transfer display on the screen.  Default is OFF.\n",
1126"SET SERVER GET-PATH [ directory [ directory [ ... ] ] ]",
1127"Tells the C-Kermit server where to search for files whose names it receives",
1128"from client GET commands when the names are not fully specified pathnames.",
1129"Default is no GET-PATH, so C-Kermit looks only in its current directory.\n",
1130"SET SERVER IDLE-TIMEOUT seconds",
1131"Idle time limit while in server mode, 0 for no limit.\n",
1132"SET SERVER LOGIN [ username [ password [ account ] ] ]",
1133"Sets up a username and optional password which must be supplied before",
1134"the server will respond to any commands other than REMOTE LOGIN.  The",
1135"account is ignored.  If you enter SET SERVER LOGIN by itself, then login",
1136"is no longer required.\n",
1137"SET SERVER TIMEOUT n",
1138"Server command wait timeout interval, how often the C-Kermit server issues",
1139"a NAK while waiting for a command packet.  Specify 0 for no NAKs at all.",
1140"Default is 0.",
1141"" };
1142#endif /* NOSERVER */
1143
1144static char *hmhrmt[] = { "\
1145The REMOTE command is used to send file management instructions to a",
1146"remote Kermit server.  There should already be a Kermit running in server",
1147"mode on the other end of the currently selected line.  Type REMOTE ? to",
1148"see a list of available remote commands.  Type HELP REMOTE x to get",
1149"further information about a particular remote command 'x'.",
1150"" };
1151
1152#ifndef NOSPL
1153static char *ifhlp[] = { "Syntax: IF [NOT] condition command\n",
1154"If the condition is (is not) true, do the command.  Only one command may",
1155"be given, and it must appear on the same line as the IF.  Conditions are:\n",
1156"  SUCCESS     - the previous command succeeded",
1157"  FAILURE     - the previous command failed",
1158"  BACKGROUND  - C-Kermit is running in the background",
1159#ifdef CK_IFRO
1160"  FOREGROUND  - C-Kermit is running in the foreground",
1161"  REMOTE-ONLY - C-Kermit was started with the -R command-line option\n",
1162#else
1163"  FOREGROUND  - C-Kermit is running in the foreground\n",
1164#endif /* CK_IFRO */
1165"  DEFINED variablename or macroname - The named variable or macro is defined",
1166#ifdef CK_TMPDIR
1167"  DIRECTORY string                  - The string is the name of a directory",
1168#endif /* CK_TMPDIR */
1169#ifdef ZFCDAT
1170"  NEWER file1 file2                 - The 1st file is newer than the 2nd one",
1171#endif /* ZFCDAT */
1172"  NUMERIC variable or constant      - The variable or constant is numeric",
1173"  EXIST filename                    - The named file exists\n",
1174"  COUNT   - subtract one from COUNT, execute the command if the result is",
1175"            greater than zero (see SET COUNT)\n",
1176"  EQUAL s1 s2 - s1 and s2 (character strings or variables) are equal",
1177"  LLT s1 s2   - s1 is lexically (alphabetically) less than s2",
1178"  LGT s1 s1   - s1 is lexically (alphabetically) greater than s2\n",
1179"  = n1 n2 - n1 and n2 (numbers or variables containing numbers) are equal",
1180"  < n1 n2 - n1 is arithmetically less than n2",
1181"  > n1 n2 - n1 is arithmetically greater than n2\n",
1182"The IF command may be followed on the next line by an ELSE command. Example:",
1183"  IF < \\%x 10 ECHO It's less",
1184"  ELSE echo It's not less\n",
1185"See also XIF.",
1186"" };
1187
1188static char *hmxxeval[] = {"Syntax: EVALUATE expression\n",
1189"Evaluate an integer arithmetic expression and print its value.  The",
1190"expression can contain numbers and/or numeric-valued variables or functions.",
1191"Operators include +-/*(), etc.  Example: EVAL (1+1) * (\\%a / 3).",
1192"" };
1193#endif /* NOSPL */
1194
1195#ifndef NOSPL
1196static char *ifxhlp[] = { "\
1197Syntax: XIF condition { commandlist } [ ELSE { commandlist } ]\n",
1198"Extended IF command.  The conditions are the same as for IF (type HELP IF)",
1199"but multiple comma-separated commands may be grouped within braces in both",
1200"the IF and ELSE parts.  The ELSE part, if any, must be on the same line as",
1201"the XIF (or use dash for line continuation).  Example:\n",
1202"  XIF equal \\%a YES { echo OK, goto begin } ELSE { echo Not OK, stop }",
1203"" };
1204
1205static char *forhlp[] = { "\
1206Syntax: FOR variablename initial-value final-value increment { commandlist }",
1207"\nFOR loop.  Execute the comma-separated commands in the commandlist the",
1208"number of times given by the initial value, final value and increment.",
1209"Example:  FOR \\%i 10 1 -1 { pause 1, echo \\%i }", "" };
1210
1211static char *whihlp[] = { "\
1212Syntax: WHILE condition { commandlist }",
1213"\nWHILE loop.  Execute the comma-separated commands in the bracketed",
1214"commandlist while the condition is true.  Conditions are the same as for",
1215"IF commands.",
1216"" };
1217
1218static char *swihlp[] = {
1219"Syntax: SWITCH <variable> { case-list }",
1220"The case-list is a series of lines like these:\n",
1221"  :x, command, command, ..., break\n",
1222"where \"x\" is a possible value for the variable.  At the end of the",
1223"case-list, you can put a \"default\" label to catch when the variable does",
1224"not match any of the labels:\n",
1225"  :default, command, command, ...",
1226""
1227};
1228
1229static char *openhlp[] = {
1230"Syntax:  OPEN mode filename\n",
1231"For use with READ and WRITE commands.  Open the local file in the specified",
1232"mode: READ, WRITE, or APPEND.  !READ and !WRITE mean to read from or write",
1233"to a system command rather than a file.  Examples:\n",
1234"  OPEN READ oofa.txt",
1235"  OPEN !READ sort foo.bar",
1236"" };
1237
1238static char *hxxaskq[] = {
1239"Syntax:  ASKQ variablename [ prompt ]",
1240"Example: ASKQ \\%p { Password:}\n",
1241"Issues the prompt and defines the variable to be whatever you type in.",
1242"The characters that you type do not echo on the screen.",
1243"Use braces to preserve leading and/or trailing spaces in the prompt.",
1244"To include a question mark, precede it by backslash (\\).",""
1245};
1246
1247static char *hxxask[] = {
1248"Syntax:  ASK variablename [ prompt ]",
1249"Example: ASK \\%n { What is your name\\? }\n",
1250"Issues the prompt and defines the variable to be whatever you type in.",
1251"Use braces to preserve leading and/or trailing spaces in the prompt.",
1252"To include a question mark, precede it by backslash (\\).",""
1253};
1254
1255static char *hxxgetc[] = {
1256"Syntax:  GETC variablename [ prompt ]",
1257"Example: GETC \\%c { Type any character to continue...}\n",
1258"Issues the prompt and sets the variable to the first character you type.",
1259"Use braces to preserve leading and/or trailing spaces in the prompt.", ""
1260};
1261
1262static char *hxxdef[] = {
1263"Syntax: DEFINE name [ definition ]\n",
1264"Defines a macro or variable.  Its value is the definition, taken literally.",
1265"No expansion or evaluation of the definition is done.  Thus if the",
1266"definition includes any variable or function references, their names are",
1267"included, rather than their values (compare with ASSIGN).  If the definition",
1268"is omitted, then the named variable or macro is undefined.\n",
1269"A typical macro definition looks like this:\n",
1270"  DEFINE name command, command, command, ...\n",
1271"for example:\n",
1272"  DEFINE vax set parity even, set duplex full, set flow xon/xoff\n",
1273"which defines a Kermit command macro called 'vax'.  The definition is a",
1274"comma-separated list of Kermit commands.  Use the DO command to execute",
1275"the macro, or just type its name, followed optionally by arguments.\n",
1276"The definition of a variable can be anything at all, for example:\n",
1277"  DEFINE \\%a Monday",
1278"  DEFINE \\%b 3\n",
1279"These variables can be used almost anywhere, for example:\n",
1280"  ECHO Today is \\%a",
1281"  SET BLOCK-CHECK \\%b",
1282"" };
1283
1284static char *hxxass[] = {
1285"Syntax:  ASSIGN variablename string.",
1286"Example: ASSIGN \\%a My name is \\%b.\n",
1287"Assigns the current value of the string to the variable (or macro).",
1288"The definition string is fully evaluated before it is assigned, so that",
1289"the values of any variables are contained are used, rather than their",
1290"names.  Compare with DEFINE.  To illustrate the difference, try this:\n",
1291"  DEFINE \\%a hello",
1292"  DEFINE \\%x \\%a",
1293"  ASSIGN \\%y \\%a",
1294"  DEFINE \\%a goodbye",
1295"  ECHO \\%x \\%y\n",
1296"This will print 'goodbye hello'.", "" };
1297
1298static char *hxxdec[] = {
1299"Syntax: DECREMENT variablename [ number ]\n",
1300"Decrement (subtract one from) the value of a variable if the current value",
1301"is numeric.  If the number argument is given, subtract that number instead.",
1302"\nExamples: DECR \\%a, DECR \\%a 7, DECR \\%a \\%n", "" };
1303
1304static char *hxxinc[] = {
1305"Syntax: INCREMENT variablename [ number ]\n",
1306"Increment (add one to) the value of a variable if the current value is",
1307"numeric.  If the number argument is given, add that number instead.\n",
1308"Examples: INCR \\%a, INCR \\%a 7, INCR \\%a \\%n", "" };
1309#endif /* NOSPL */
1310
1311#ifdef ANYX25
1312static char *hxxpad[] = {
1313"Syntax: PAD command",
1314"X.25 PAD commands:\n",
1315"    PAD CLEAR     - Clear the virtual call",
1316"    PAD STATUS    - Return the status of virtual call",
1317"    PAD RESET     - Send a reset packet",
1318"    PAD INTERRUPT - Send an interrupt packet",
1319""};
1320
1321static char *hxyx25[] = {
1322"Syntax: SET X.25 option { ON [ data ], OFF }\n",
1323"X.25 call options:",
1324"  CLOSED-USER-GROUP { ON index, OFF }",
1325"    Enable or disable closed user group call, where index is the group",
1326"    index, 0 to 99.",
1327"  REVERSE-CHARGE { ON, OFF }",
1328"    Tell whether you want to reverse the charges for the call.",
1329"  CALL-USER-DATA { ON string, OFF }",
1330"    Specify call user-data for the X.25 call.",
1331""};
1332#endif /* ANYX25 */
1333
1334#ifdef OS2
1335static char *hxyprtr[] = {
1336"Syntax: SET PRINTER filename\n",
1337"Where to send transparent-print and screen-dump material during CONNECT.",
1338"Default is PRN.  You can also specify a disk file name, in which case the",
1339"given file is created if it does not exist, or is appended to if it already",
1340"exists.  Use SET PRINTER NUL to discard transparent print and screen-dump",
1341"material.  SHOW PRINTER displays the current setting.  Note: SET PRINTER",
1342"does not affect the PRINT command.",
1343""};
1344#endif /* OS2 */
1345
1346static char *hxyexit[] = {
1347"Syntax: SET EXIT ON-DISCONNECT { ON, OFF }",
1348"  When ON, C-Kermit EXITs automatically when a network connection",
1349"  is terminated either by the host or by issuing a HANGUP command.",
1350"  This command is not currently supported on serial connections.\n",
1351"Syntax: SET EXIT STATUS number",
1352#ifdef NOSPL
1353"  Set C-Kermit's program return code to the given number.",
1354#else
1355"  Set C-Kermit's program return code to the given number, which can be a",
1356"  constant, variable, or an \\feval() expression.",
1357#endif /* NOSPL */
1358"\nSyntax: SET EXIT WARNING { ON, OFF, ALWAYS }",
1359"  When EXIT WARNING is ON, issue a warning message and ask for confirmation",
1360"  before EXITing if a connection to another computer might still be open.",
1361"  When EXIT WARNING is ALWAYS, confirmation is always requested.  The",
1362"  default is ON.",
1363"" };
1364
1365#ifndef NOSPL
1366static char *hxxpau[] = {
1367"Syntax:  PAUSE [ { number-of-seconds, hh:mm:ss } ]",
1368"Example: PAUSE 3  or  PAUSE 14:52:30\n",
1369"Do nothing for the specified number of seconds or until the given time of",
1370"day in 24-hour hh:mm:ss notation.  If the time of day is earlier than the",
1371"current time, it is assumed to be tomorrow.  If no argument given, one",
1372"second is used.  The pause can be interrupted by typing any character on the",
1373"keyboard.  If interrupted, PAUSE fails, otherwise it succeeds.",
1374"Synonym: SLEEP.",
1375"" };
1376
1377static char *hxxmsl[] = {
1378"Syntax:  MSLEEP [ number ]",
1379"Example: MSLEEP 500\n",
1380"Do nothing for the specified number of milliseconds; if no number given,",
1381"100 milliseconds.","" };
1382#endif /* NOSPL */
1383
1384#ifndef NOPUSH
1385extern int nopush;
1386static char *hxxshe[] = {
1387"Syntax: ! [ command ] or RUN [ command ] or PUSH [ command ]\n",
1388"Give a command to the local operating system's command processor, and",
1389"display the results on the screen.\n",
1390"If the command is omitted, enter interactive mode; return to Kermit",
1391"by exiting from the system's command parser.  The command is usually",
1392"EXIT or QUIT or LOGOUT.",  "" };
1393#endif /* NOPUSH */
1394
1395#ifndef NOXMIT
1396static char *hxxxmit[] = {
1397"Syntax: TRANSMIT file\n",
1398"The TRANSMIT command is used for sending single files to other computers",
1399"that don't have Kermit.  Text files are sent a line at a time; binary files",
1400"are sent a character at a time.  There is no guarantee that the other",
1401"computer will receive the file correctly and completely.  Before you start",
1402"the TRANSMIT command, you must put the other computer in data collection",
1403"mode, for example by starting a text editor.  TRANSMIT may be interrupted by",
1404"Ctrl-C.  Synonym: XMIT.",
1405"" };
1406#endif /* NOXMIT */
1407
1408#ifndef NOCSETS
1409static char *hxxxla[] = {
1410"Syntax: TRANSLATE file1 cs1 cs2 [ file2 ]\n",
1411"Translates file1 from the character set cs1 into the character set cs2",
1412"and stores the result in file2.  The character sets can be any of",
1413"C-Kermit's file character sets.  If file2 is omitted, the translation",
1414"is displayed on the screen.  An appropriate intermediate character-set",
1415"is chosen automatically, if necessary.",
1416"Synonym: XLATE.  Example:\n",
1417"TRANSLATE lasagna.lat latin1 italian lasagna.nrc",
1418"" };
1419#endif /* NOCSETS */
1420
1421#ifndef NOSPL
1422static char *hxxwai[] = {
1423"Syntax:  WAIT { number-of-seconds, hh:mm:ss } [modem-signal(s)]",
1424"Example: WAIT 5 \\cd \\cts",
1425"Or:      WAIT 23:59:59 \\cd",
1426"Waits up to the given number of seconds or the given time of day for all of",
1427"the specified modem signals to appear on the serial communication device.",
1428"Sets FAILURE if signals do not appear in the given time or if interrupted by",
1429"typing anything at the keyboard during the waiting period.\n",
1430"Signals: \\cd = Carrier Detect, \\dsr = Dataset Ready, \\cts = Clear To Send",
1431"" };
1432#endif /* NOSPL */
1433
1434static char *hxxwri[] = {
1435"Syntax: WRITE name text\n",
1436"Writes the given text to the named log or file.  The text text may include",
1437"backslash codes, and is not terminated by a newline unless you include the",
1438"appropriate code.  The name parameter can be any of the following:\n",
1439"  DEBUG-LOG",
1440"  ERROR (standard error)",
1441#ifndef NOSPL
1442"  FILE (the OPEN WRITE, OPEN !WRITE, or OPEN APPEND file, see HELP OPEN)",
1443#endif /* NOSPL */
1444"  PACKET-LOG",
1445"  SCREEN (compare with ECHO)",
1446#ifndef NOLOCAL
1447"  SESSION-LOG",
1448#endif /* NOLOCAL */
1449"  TRANSACTION-LOG", "" };
1450
1451#ifndef NODIAL
1452static char *hxxlook[] = { "Syntax: LOOKUP name\n",
1453"Looks up the given name in the dialing directory or directories, if any,",
1454"specified in the most recent SET DIAL DIRECTORY command.  Each matching",
1455"entry is shown, along with any transformations that would be applied to",
1456"portable-format entries based on your locale.  HELP DIAL, HELP SET DIAL",
1457"for further info.",
1458""
1459};
1460
1461static char *hxxansw[] = { "Syntax:  ANSWER [ <seconds> ]\n",
1462#ifdef OS2
1463"Waits for a modem call to come in.  Prior SET MODEM TYPE and SET PORT",
1464#else
1465"Waits for a modem call to come in.  Prior SET MODEM TYPE and SET LINE",
1466#endif /* OS2 */
1467"required.  If <seconds> is 0 or not specified, Kermit waits forever or until",
1468"interrupted, otherwise Kermit waits the given number of seconds.  The ANSWER",
1469"command puts the modem in autoanswer mode.  Subsequent DIAL commands will",
1470"automatically put it (back) in originate mode.  SHOW MODEM, HELP SET MODEM",
1471"for more info.",
1472""
1473};
1474
1475static char *hxxdial[] = { "Syntax:  DIAL phonenumber",
1476"Example: DIAL 7654321\n",
1477"Dials a number using an autodial modem.  First you must SET MODEM, then",
1478#ifdef OS2
1479"SET PORT, then SET SPEED.  Then give the DIAL command, including the phone",
1480#else
1481"SET LINE, then SET SPEED.  Then give the DIAL command, including the phone",
1482#endif /* OS2 */
1483"number, for example:\n",
1484"  DIAL 7654321\n",
1485#ifdef NETCONN
1486"If the modem is on a network modem server, SET HOST first, then SET MODEM,",
1487"then DIAL.  See also SET DIAL, SET MODEM, SET LINE, SET HOST, SET SPEED,",
1488"and REDIAL.\n",
1489#else
1490"See also SET DIAL, SET MODEM, SET LINE, SET SPEED, REDIAL.\n",
1491#endif /* NETCONN */
1492"If the phonenumber starts with a letter, and if you have used the SET DIAL",
1493"DIRECTORY command to specify one or more dialing-directory files, Kermit",
1494"looks it up in the given file(s); if it is found, the name is replaced by",
1495"the number or numbers associated with the name.  If it is not found, the",
1496"name is sent to the modem literally.\n",
1497"If the phonenumber starts with an equals sign (\"=\"), this forces the part",
1498"after the = to be send literally to the modem, even if it starts with a",
1499"letter, without any directory lookup.\n",
1500"A dialing directory is a plain text file, one entry per line:\n",
1501"  name  phonenumber  ;  comments\n",
1502"for example:\n",
1503"  work    9876543              ; This is a comment",
1504"  e-mail  +1  (212) 555 4321   ; My electronic mailbox",
1505"  heise   +49 (511) 535 2301   ; Verlag Heinz Heise BBS\n",
1506"If a phone number starts with +, then it must include country code and",
1507"area code, and C-Kermit will try to handle these appropriately based on",
1508"the current locale (HELP SET DIAL for further info); these are called",
1509"PORTABLE entries.  If it does not start with +, it is dialed literally.\n",
1510"If more than one entry is found with the same name, Kermit dials all of",
1511"them until the call is completed; if the entries are in portable format,",
1512"Kermit dials then in cheap-to-expensive order: internal, then local, then",
1513"long-distance, then international, based on its knowledge of your local",
1514"country code and area code (see HELP SET DIAL).\n",
1515"Specify your dialing directory file(s) with the SET DIAL DIRECTORY command.",
1516 "" };
1517#endif /* NODIAL */
1518
1519#endif /* NOHELP */
1520
1521/*  D O H L P  --  Give a help message  */
1522 
1523_PROTOTYP( int dohset, (int) );
1524
1525int
1526dohlp(xx) int xx; {
1527    int x,y;
1528 
1529    debug(F101,"DOHELP xx","",xx);
1530    if (xx < 0) return(xx);
1531
1532    switch (xx) {
1533 
1534#ifdef NOHELP
1535
1536case XXHLP:
1537    if ((x = cmcfm()) < 0)
1538      return(x);
1539    printf("\n%s, Copyright (C) 1985, 1996,",versio);
1540    return(hmsga(tophlp));
1541
1542#else /* help is available */
1543
1544#ifndef NOSPL
1545case XXASS:                             /* assign */
1546    return(hmsga(hxxass));
1547
1548case XXASK:                             /* ask */
1549    return(hmsga(hxxask));
1550
1551case XXASKQ:
1552    return(hmsga(hxxaskq));
1553
1554case XXAPC:
1555    return(hmsg("Syntax: APC text\n\
1556Echoes the text in the form of a VT220/320/420 Application Program Command.\n\
1557Use the APC command to send commands to MS-DOS Kermit 3.13 or later."));
1558#endif /* NOSPL */
1559
1560#ifndef NOFRILLS
1561case XXBUG:
1562    return(hmsg("Describes how to get technical support."));
1563#endif /* NOFRILLS */
1564
1565#ifndef NOSPL
1566case XXBEEP:
1567#ifdef OS2
1568    return(hmsg("Syntax: BEEP [ { ERROR, INFORMATION, WARNING } ]\n\
1569Generates a bell according to the current settings.  If SET BELL is set to\n\
1570\"system-sounds\" then the appropriate System Sound will be generated.\n\
1571Default is INFORMATION."));
1572#else /* OS2 */
1573    return(hmsg("Syntax: BEEP\n\
1574Sends a BEL character to your terminal."));
1575#endif /* OS2 */
1576#endif /* NOSPL */
1577
1578case XXBYE:                             /* BYE */
1579    return(hmsg(hmxxbye));
1580 
1581case XXCHK:                             /* check */
1582    return(hmsg("\
1583Syntax: CHECK name\n\
1584Checks to see if the named feature is included in this version of C-Kermit.\n\
1585To list the features you can check, type \"check ?\"."));
1586
1587#ifndef NOFRILLS
1588case XXCLE:                             /* clear */
1589#ifdef OS2
1590    return(hmsg("\
1591Syntax: CLEAR [ { COMMAND-SCREEN, DEVICE, DEVICE-AND-INPUT, INPUT,\n\
1592                  SCROLLBACK, SEND-LIST, TERMINAL-SCREEN } ]\n\
1593COMMAND-SCREEN clears the current command screen\n\
1594DEVICE clears the current port or network input buffer\n\
1595DEVICE-AND-INPUT, the default, clears both the device and the INPUT buffer\n\
1596INPUT clears the INPUT command buffer\n\
1597SCROLLBACK empties the scrollback buffer including the current screen\n\
1598SEND-LIST clears the current SEND list (see ADD)\n\
1599TERMINAL-SCREEN clears the current screen a places it into the scrollback\n\
1600    buffer."));
1601#else /* not OS2 */   
1602    return(hmsg("\
1603Syntax: CLEAR [ { DEVICE, INPUT, DEVICE-AND-INPUT, DIAL-STATUS, SEND-LIST }\
1604 ]\n\
1605Clears the communications device input buffer, the INPUT command buffer,\n\
1606or both.  CLEAR SEND-LIST clears the SEND list (see ADD).  CLEAR DIAL-STATUS\n\
1607clears the \\v(dialstatus) variable.  The default is DEVICE-AND-INPUT."));
1608#endif /* OS2 */
1609#endif /* NOFRILLS */
1610
1611case XXCLO:                             /* close */
1612    return(hmsga(hmxxclo));
1613 
1614case XXCOM:                             /* comment */
1615#ifndef STRATUS /* Can't use # for comments in Stratus VOS */
1616    return(hmsg("\
1617Syntax: COMMENT text\n\
1618Example: COMMENT - this is a comment.\n\n\
1619Introduces a comment.  Beginning of command line only.  Commands may also\n\
1620have trailing comments, introduced by ; or #."));
1621#else
1622    return(hmsg("\
1623Syntax: COMMENT text\n\
1624Example: COMMENT - this is a comment.\n\n\
1625Introduces a comment.  Beginning of command line only.  Commands may also\n\
1626have trailing comments, introduced by ; (semicolon)."));
1627#endif /* STRATUS */
1628
1629#ifndef NOLOCAL
1630case XXCON:                             /* connect */
1631    hmsga(hmxxcon);
1632    printf("Your escape character is Ctrl-%c (ASCII %d, %s)\r\n",
1633           ctl(escape), escape, (escape == 127 ? "DEL" : ccntab[escape]));
1634    return(0);
1635#endif /* NOLOCAL */
1636 
1637#ifndef NOFRILLS
1638case XXCPY:
1639    return(hmsg("Syntax: COPY source destination\n\n\
1640Copy the file 'source' to 'destination'."));
1641#endif /* NOFRILLS */
1642
1643case XXCWD:                             /* cd / cwd */
1644#ifdef vms
1645    return(hmsg("Syntax: CD [ directory or device:directory ]\n\
1646Change Working Directory, equivalent to VMS SET DEFAULT command"));
1647#else
1648#ifdef datageneral
1649    return(hmsg("Change Working Directory, equivalent to DG 'dir' command"));
1650#else
1651#ifdef OS2
1652  return(hmsg("Syntax: CD [ directoryname ]\n\
1653Change Directory.  If directoryname is not specified, changes to directory\n\
1654specified by HOME environment variable, if any."));
1655#else
1656    return(hmsg("Syntax: CD [ directoryname ]\n\
1657Change Directory.  \n\
1658If directory name omitted, changes to your home directory."));
1659#endif /* OS2 */
1660#endif /* datageneral */
1661#endif /* vms */
1662 
1663#ifndef NOSPL
1664case XXDCL:
1665    return(hmsg("Syntax:  DECLARE arrayname[size]\n\
1666Example: DECLARE \\&a[20]\n\n\
1667Declares an array of the given size.  Array elements can be used just like\n\
1668any other variables."));
1669
1670case XXDEF:                             /* DEFINE */
1671    return(hmsga(hxxdef));
1672
1673case XXUNDEF:                           /* UNDEFINE */
1674    return(hmsg("Syntax:  UNDEFINE variable-name\n\
1675Undefines a macro or variable."));
1676#endif /* NOSPL */
1677
1678#ifndef NOFRILLS
1679case XXDEL:                             /* delete */
1680    return(hmsg("Syntax: DELETE filespec\n\n\
1681Delete a local file or files.  RM is a synonym for DELETE."));
1682#endif /* NOFRILLS */
1683 
1684#ifndef NODIAL
1685case XXDIAL:                            /* DIAL, etc... */
1686    return(hmsga(hxxdial));
1687
1688case XXPDIA:                            /* PDIAL */
1689    return(hmsg("Syntax: PDIAL phonenumber\n\n\
1690Partially dial a phone number.  Like DIAL but does not wait for carrier\n\
1691or CONNECT message."));
1692
1693case XXRED:
1694    return(hmsg("Redial the number given in the most recent DIAL commnd."));
1695
1696case XXANSW:                            /* ANSWER */
1697    return(hmsga(hxxansw));
1698
1699case XXLOOK:                            /* LOOKUP number in directory */
1700    return(hmsga(hxxlook));
1701#endif /* NODIAL */
1702 
1703case XXDIR:                             /* directory */
1704    return(hmsg("Syntax: DIRECTORY [ filespec ]\n\
1705Display a directory listing of local files."));
1706 
1707#ifndef NOSERVER
1708#ifndef NOFRILLS
1709case XXDIS:
1710    return(hmsg("Syntax: DISABLE command\n\n\
1711Security for the C-Kermit server.  Prevent the client Kermit program from\n\
1712executing the named REMOTE command, such as CD, DELETE, RECEIVE, etc."));
1713#endif /* NOFRILLS */
1714#endif /* NOSERVER */
1715
1716#ifndef NOSPL
1717case XXDO:                              /* do */
1718    return(hmsg("Syntax: [ DO ] macroname [ arguments ]\n\n\
1719Execute a macro that was defined by the DEFINE command.  The word DO\n\
1720can be omitted.  Trailing argument words, if any, are automatically\n\
1721assigned to the macro argument variables \\%1, \\%2, etc."));
1722#endif /* NOSPL */
1723
1724#ifndef NOSPL
1725case XXDEC:
1726    return(hmsga(hxxdec));
1727#endif /* NOSPL */
1728
1729case XXECH:                             /* echo */
1730    return(hmsg("Syntax: ECHO text\n\
1731Display the text on the screen, followed by a line terminator.  The ECHO\n\
1732text may contain backslash codes.  Example: ECHO \\7Wake up!\\7"));
1733 
1734case XXXECH:                            /* xecho */
1735    return(hmsg("Syntax: XECHO text\n\
1736Just like ECHO but does not add a line terminator to the text.  See ECHO."));
1737
1738#ifndef NOSERVER
1739#ifndef NOFRILLS
1740case XXENA:
1741    return(hmsg("Syntax: ENABLE capability\n\n\
1742For use with server mode.  Allow the client Kermit program access to the\n\
1743named capability, such as CD, DELETE, RECEIVE, etc.  Opposite of DISABLE."));
1744#endif /* NOFRILLS */
1745#endif /* NOSERVER */
1746
1747#ifndef NOSPL
1748case XXEND:                             /* end */
1749    return(hmsg("Syntax: END [ number [ message ] ]\n\
1750Exit from the current macro or TAKE file, back to wherever invoked from.\n\
1751Number is return code.  Message, if given, is printed."));
1752
1753case XXEVAL:                            /* evaluate */
1754    return(hmsga(hmxxeval));
1755#endif /* NOSPL */
1756
1757#ifndef NOFRILLS
1758case XXERR:                             /* e-packet */
1759    return(hmsg("Syntax: E-PACKET\n\
1760Send an Error packet to the other Kermit."));
1761#endif /* NOFRILLS */
1762
1763case XXEXI:                             /* exit */
1764case XXQUI:
1765    return(hmsg("Syntax: QUIT (or EXIT) [ number ]\n\
1766Exit from the Kermit program, closing all open files and devices, optionally\n\
1767setting the program's return code to the given number."));
1768 
1769case XXFIN:
1770    return(hmsg("Syntax: FINISH\n\
1771Tell the remote Kermit server to shut down without logging out."));
1772 
1773#ifndef NOSPL
1774case XXFOR:
1775    return(hmsga(forhlp));
1776#endif /* NOSPL */
1777
1778case XXGET:
1779    return(hmsg(hmxxget));
1780 
1781#ifndef NOSPL
1782#ifndef NOFRILLS
1783  case XXGOK:
1784    return(hmsg("Syntax: GETOK prompt\n\
1785Print the prompt, make user type 'yes', 'no', or 'ok', and set SUCCESS or\n\
1786FAILURE accordingly."));
1787#endif /* NOFRILLS */
1788#endif /* NOSPL */
1789
1790#ifndef NOSPL
1791case XXGOTO:
1792    return(hmsg("Syntax: GOTO label\n\
1793In a TAKE file or macro, go to the given label.  A label is a word on the\n\
1794left margin that starts with a colon (:).  Example:\n\n\
1795:oofa\n\
1796echo Hello!\n\
1797goto oofa"));
1798#endif /* NOSPL */
1799
1800case XXHAN:
1801    return(hmsg("Syntax: HANGUP\n\
1802Hang up the phone or network connection."));   
1803
1804case XXHLP:
1805/*
1806  We get confirmation here, even though we do it again in hmsga(), to prevent
1807  the Copyright message from being printed prematurely.  This doesn't do any
1808  harm, because the first call to cmcfm() sets cmflgs to 1, making the second
1809  call return immediately.
1810*/
1811    if ((x = cmcfm()) < 0)
1812      return(x);
1813    printf("\n%s, Copyright (C) 1985, 1996,",versio);
1814    return(hmsga(tophlp));
1815
1816case XXINT:
1817    return(hmsg("Give a brief introduction to C-Kermit."));     
1818
1819#ifndef NOSPL
1820case XXIF:
1821    return(hmsga(ifhlp));
1822
1823case XXINC:
1824    return(hmsga(hxxinc));
1825
1826case XXINP:
1827   return(hmsga(hxxinp));
1828#endif /* NOSPL */
1829
1830#ifdef CK_MINPUT
1831case XXMINP:
1832    return(hmsga(hmxxminp));
1833#endif /* CK_MINPUT */
1834
1835#ifndef NOSPL
1836case XXREI:
1837    return(hmsg("Syntax: REINPUT n string\n\n\
1838Look for the string in the text that has recently been INPUT, set SUCCESS\n\
1839or FAILURE accordingly.  Timeout, n, must be specified but is ignored."));
1840#endif /* NOSPL */
1841
1842#ifndef NOFRILLS
1843case XXREN:
1844    return(hmsg("Syntax: RENAME oldname newname\n\n\
1845Change the name of file 'oldname' to 'newname'."));
1846#endif /* NOFRILLS */
1847
1848#ifndef NOSPL
1849case XXLBL:
1850    return(hmsg("\
1851Introduce a label, like :loop, for use with GOTO in TAKE files or macros.\n\
1852See GOTO."));
1853#endif /* NOSPL */
1854
1855case XXLOG:
1856    return(hmsga(hmxxlg));
1857 
1858#ifndef NOSCRIPT
1859case XXLOGI:
1860    return(hmsga(hmxxlogi));
1861#endif
1862 
1863#ifndef NOFRILLS
1864case XXMAI:
1865    return(hmsg("Syntax: MAIL filename address\n\n\
1866Send the file to the remote Kermit, which must be in RECEIVE or SERVER mode,\n\
1867and request that the remote host deliver the file as electronic mail to the\n\
1868given address.  Example: MAIL BUG.TXT KERMIT@CUVMA"));
1869#endif /* NOFRILLS */
1870
1871#ifndef NOMSEND
1872case XXMSE:
1873    return(hmsg(hmssmse));
1874
1875case XXADD:
1876    return(hmsg(hmssadd));
1877
1878case XXMMOVE:
1879    return(hmsg("MMOVE is exactly like MSEND, except each file that is\n\
1880sent successfully is deleted after it is sent."));
1881#endif /* NOMSEND */
1882
1883#ifndef NOSPL
1884case XXOPE:
1885    return(hmsga(openhlp));
1886#endif /* NOSPL */
1887
1888case XXNEW:
1889    return(hmsg(
1890" Print news of new features since publication of \"Using C-Kermit\"."));
1891
1892#ifndef NOSPL
1893case XXOUT:
1894    return(hmsg("Syntax: OUTPUT text\n\n\
1895Send the text out the currently selected line, as if you had typed it\n\
1896during CONNECT mode.  The text may contain backslash codes.  Example:\n\n\
1897  OUTPUT help\\13"));
1898#endif /* NOSPL */
1899
1900#ifdef ANYX25
1901case XXPAD:
1902    return(hmsga(hxxpad));
1903#endif /* ANYX25 */
1904
1905#ifndef NOSPL
1906case XXPAU:
1907    return(hmsga(hxxpau));
1908
1909case XXMSL:
1910    return(hmsga(hxxmsl));
1911#endif /* NOSPL */
1912
1913#ifdef TCPSOCKET
1914case XXPNG:
1915    return(hmsg("Syntax: PING [ IP-hostname-or-number ]\n\n\
1916Check if given IP network host is reachable.  Default host is from most\n\
1917recent SET HOST or TELNET command.  Runs system PING program, if any."));
1918
1919case XXFTP:
1920    return(hmsg("Syntax: FTP [ IP-hostname-or-number ]\n\n\
1921Make an FTP connection to the given IP host or, if no host specified, to the\n\
1922current host.  Uses the system's FTP program, if any.\n"));
1923#endif /* TCPSOCKET */
1924
1925#ifndef NOFRILLS
1926case XXPRI:
1927    return(hmsg("Syntax: PRINT file [ options ]\n\n\
1928Print the local file on a local printer with the given options."));
1929#endif /* NOFRILLS */
1930
1931case XXPWD:
1932    return(hmsg("Syntax: PWD\n\
1933Print the name of the current working directory."));
1934
1935#ifndef NOSPL
1936case XXREA:
1937    return(hmsg("Syntax: READ variablename\n\
1938Read a line from the currently open READ or !READ file into the variable\n\
1939(see OPEN)."));
1940#endif /* NOSPL */
1941
1942case XXREC:
1943    return(hmsga(hmxxrc));
1944 
1945case XXREM:
1946    y = cmkey(remcmd,nrmt,"Remote command","",xxstring);
1947    return(dohrmt(y));
1948 
1949#ifndef NOSPL
1950case XXRET:
1951    return(hmsg("Syntax: RETURN [ value ]\n\
1952Return from a macro.  An optional return value can be given for use with\n\
1953with \\fexecute(macro), which allows macros to be used like functions."));
1954#endif /* NOSPL */
1955case XXSEN:
1956    return(hmsg(hmxxsen));
1957case XXMOVE:
1958    return(hmsg("MOVE is exactly like SEND, except each file that is\n\
1959sent successfully is deleted after it is sent."));
1960#ifndef NORESEND
1961case XXRSEN:
1962    return(hmsg(hmxxrsen));
1963case XXREGET:
1964    return(hmsg(hmxxrget));
1965case XXPSEN:
1966    return(hmsg(hmxxpsen));
1967#endif /* NORESEND */
1968 
1969#ifndef NOSERVER
1970case XXSER:
1971    return(hmsg(hmxxser));
1972#endif /* NOSERVER */
1973 
1974#ifndef NOJC
1975case XXSUS:
1976    return(hmsg("Syntax: SUSPEND or Z\n\
1977Suspend Kermit.  Continue Kermit with the appropriate system command,\n\
1978such as fg."));
1979#endif /* NOJC */
1980
1981case XXSET:
1982    y = cmkey(prmtab,nprm,"Parameter","",xxstring);
1983    debug(F101,"HELP SET y","",y);
1984    return(dohset(y));
1985 
1986#ifndef NOPUSH
1987case XXSHE:
1988    if ( nopush ) {
1989        if ((x = cmcfm()) < 0) return(x);
1990        printf("Sorry, help not available for \"%s\"\n",cmdbuf);
1991        break;
1992    }
1993    else return(hmsga(hxxshe));
1994#ifdef CK_REDIR
1995case XXFUN:
1996    return(hmsg("Syntax: REDIRECT command\n\
1997Run the given local command with its standard input and output redirected\n\
1998to the current SET LINE or SET HOST communications path.\n\
1999Synonym: < (Left angle bracket)."));
2000#endif /* CK_REDIR */
2001
2002#ifdef CK_REXX
2003case XXREXX:
2004    return(hmsg("Syntax: REXX text\n\
2005The text is a Rexx command to be executed. The \\v(rexx) variable is set to\n\
2006the Rexx command's return value.\n\
2007To execute a rexx program file, use:  REXX call <filename>\n\
2008Rexx programs may call C-Kermit functions by placing the C-Kermit command in\n\
2009single quotes.  For instance:  'set parity none'."));
2010#endif /* CK_REXX */
2011#endif /* NOPUSH */
2012 
2013#ifndef NOSHOW
2014case XXSHO:
2015    return(hmsg("\
2016Display current values of various items (SET parameters, variables, etc).\n\
2017Type SHOW ? for a list of categories."));
2018#endif /* NOSHOW */
2019 
2020case XXSPA:
2021#ifdef datageneral
2022    return(hmsg("\
2023Display disk usage in current device, directory,\n\
2024or return space for a specified device, directory."));
2025#else
2026    return(hmsg("Syntax: SPACE\n\
2027Display disk usage in current device and/or directory"));
2028#endif
2029 
2030case XXSTA:
2031    return(hmsg("Syntax: STATISTICS\n\
2032Display statistics about most recent file transfer"));
2033 
2034#ifndef NOSPL
2035case XXSTO:
2036    return(hmsg("Syntax: STOP [ number [ message ] ]\n\
2037Stop executing the current macro or TAKE file and return immediately to\n\
2038the C-Kermit prompt.  Number is a return code.  Message printed if given."));
2039#endif /* NOSPL */
2040
2041case XXTAK:
2042    return(hmsg("Syntax: TAKE filename\n\
2043Take Kermit commands from the named file.  Kermit command files may\n\
2044themselves contain TAKE commands, up to a reasonable depth of nesting."));
2045 
2046#ifdef TCPSOCKET
2047case XXTEL:
2048    return(hmsg("Syntax: TELNET [ host [ service ] ]\n\
2049Equivalent to SET NETWORK TCP/IP, SET HOST host [ service ], followed by\n\
2050CONNECT.  If host is omitted, previous connection (if any) is resumed."));
2051#ifdef RLOGCODE
2052case XXRLOG:
2053    return(hmsg("Syntax: RLOGIN [ host [ username ] ]\n\
2054Makes an interactive connection to the host using RLOGIN protocol.\n\
2055If host is omitted, previous connection (if any) is resumed."));
2056#endif /* RLOGCODE */
2057#endif /* TCPSOCKET */
2058
2059#ifndef NOXMIT
2060case XXTRA:
2061    return(hmsga(hxxxmit));
2062#endif /* NOXMIT */
2063
2064#ifndef NOFRILLS
2065case XXTYP:
2066    return(hmsg("Syntax: TYPE file\n\
2067Display a file on the screen.  Pauses if you type Ctrl-S, resumes if you\n\
2068type Ctrl-Q, returns immediately to C-Kermit prompt if you type Ctrl-C."
2069));
2070#endif /* NOFRILLS */
2071
2072#ifdef OS2ONLY
2073case XXUPD:
2074    return(hmsga(hmxxupd));
2075#endif /* OS2ONLY */
2076
2077#ifndef NOSPL
2078case XXWHI:
2079    return(hmsga(whihlp));
2080
2081case XXSWIT:
2082    return(hmsga(swihlp));
2083#endif /* NOSPL */
2084
2085#ifndef NOCSETS
2086case XXXLA:
2087    return(hmsga(hxxxla));
2088#endif /* NOCSETS */
2089
2090case XXVER:
2091    return(hmsg("Syntax: VERSION\nDisplays the program version number."));
2092
2093#ifndef NOSPL
2094case XXWAI:
2095    return(hmsga(hxxwai));
2096#endif /* NOSPL */
2097
2098#ifndef NOFRILLS
2099case XXWHO:
2100    return(hmsg("Syntax: WHO [ user ]\nDisplays info about the user."));
2101
2102case XXWRI:
2103    return(hmsga(hxxwri));
2104
2105case XXWRL:
2106    return(hmsg(
2107"WRITE-LINE (WRITELN) is just like WRITE, but includes a line terminator\n\
2108at the end of text.  See WRITE."));
2109#endif /* NOFRILLS */
2110
2111#ifndef NOSPL
2112case XXIFX:
2113    return(hmsga(ifxhlp));
2114
2115case XXGETC:                            /* GETC */
2116    return(hmsga(hxxgetc));
2117
2118case XXFWD:                             /* FORWARD */
2119    return(hmsg(
2120"Like GOTO, but searches only forward for the label.  See GOTO."));
2121
2122case XXLOCAL:                           /* LOCAL */
2123    return(hmsg(
2124"Declares a variable to be local to the current macro or command file."));
2125#endif /* NOSPL */
2126
2127case XXVIEW:
2128    return(hmsg(
2129"View the terminal emulation screen even when there is no connection.\n"));
2130
2131case XXASC:
2132    return(hmsg("Synonym for SET FILE TYPE TEXT.\n"));
2133
2134case XXBIN:
2135    return(hmsg("Synonym for SET FILE TYPE BINARY.\n"));
2136
2137case XXDATE:
2138    return(hmsg("Prints the current date and time.\n"));
2139
2140case XXRETR:
2141    return(hmsg(
2142"Just like GET but asks the server to delete each file that has been\n\
2143sent successfully.\n"));
2144
2145case XXEIGHT:
2146    return(hmsg(
2147"Equivalent to SET PARITY NONE, SET COMMAND BYTE 8, SET TERMINAL BYTE 8.\n"));
2148
2149case XXSAVE:
2150    return(hmsg("Syntax: SAVE KEYMAP <file>\n\
2151Saves current keymap definitions to file, \"keymap.ini\" by default."));
2152#endif /* NOHELP */
2153
2154default:
2155    if ((x = cmcfm()) < 0) return(x);
2156    printf("Sorry, help not available for \"%s\"\n",cmdbuf);
2157    break;
2158    }
2159    return(success = 0);
2160}
2161
2162/*  H M S G  --  Get confirmation, then print the given message  */
2163 
2164int
2165hmsg(s) char *s; {
2166    int x;
2167    if ((x = cmcfm()) < 0) return(x);
2168    printf("\n%s\n\n",s);
2169    return(0);
2170}
2171
2172#ifdef NOHELP
2173
2174int                                     /* Print an array of lines, */
2175hmsga(s) char *s[]; {                   /* cheap version. */
2176    int i;
2177    if ((i = cmcfm()) < 0) return(i);
2178    printf("\n");                       /* Start off with a blank line */
2179    for (i = 0; *s[i]; i++) {           /* Print each line. */
2180        printf("%s\n",s[i]);
2181    }
2182    printf("\n");
2183    return(0);
2184}
2185
2186#else /* NOHELP not defined... */
2187
2188int                                     /* Print an array of lines, */
2189hmsga(s) char *s[]; {                   /* pausing at end of each screen. */
2190    int x, y, i, j, k, n;
2191    if ((x = cmcfm()) < 0) return(x);
2192
2193#ifdef CK_TTGWSIZ
2194#ifdef OS2
2195    ttgcwsz();
2196#else /* OS2 */
2197    /* Check whether window size changed */
2198    if (ttgwsiz() > 0) {
2199        if (tt_rows > 0 && tt_cols > 0) {
2200            cmd_rows = tt_rows;
2201            cmd_cols = tt_cols;
2202        }
2203    }
2204#endif /* OS2 */
2205#endif /* CK_TTGWSIZ */
2206
2207    printf("\n");                       /* Start off with a blank line */
2208    n = 1;                              /* Line counter */
2209    for (i = 0; *s[i]; i++) {
2210        printf("%s\n",s[i]);            /* Print a line. */
2211        y = (int)strlen(s[i]);
2212        k = 1;
2213        for (j = 0; j < y; j++)         /* See how many newlines were */
2214          if (s[i][j] == '\n') k++;     /* in the string... */
2215        n += k;
2216        if (n > (cmd_rows - 3) && *s[i+1]) /* After a screenful, give them */
2217          if (!askmore()) return(0);    /* a "more?" prompt. */
2218          else n = 0;
2219    }
2220    printf("\n");
2221    return(0);
2222}
2223 
2224#ifndef NOXMIT
2225static char *hsetxmit[] = {
2226"Syntax: SET TRANSMIT parameter value\n",
2227"Controls the behavior of the TRANSMIT command, used for uploading files",
2228"to computers that don't have Kermit programs.  Parameters are:\n",
2229"ECHO ON/OFF:     Whether to echo text as it is being transmitted.",
2230"EOF text:        Text to send after end of file is reached.",
2231"FILL number:     ASCII value of character to insert into blank lines.",
2232"LINEFEED ON/OFF: Transmit LF as well as CR at the end of each line.",
2233"                 Normally, only CR is sent.",
2234"LOCKING-SHIFT ON/OFF: Whether to use SO/SI for transmitting 8-bit data",
2235"                 when PARITY is not NONE.",
2236"PAUSE number:    How many milliseconds to pause after transmitting each line",
2237"                 (text mode), or each character (binary mode).",
2238"PROMPT number:   ASCII value of character to look for from host before",
2239"                 sending next line, normally LF (10).",
2240"Synonym: SET XMIT.",
2241"" };
2242#endif /* NOXMIT */
2243
2244static char *hsetbkg[] = {
2245"Syntax: SET BACKGROUND { OFF, ON }\n",
2246"SET BACKGROUND OFF forces prompts and messages to appear on your screen",
2247"even though Kermit thinks it is running in the background.", "" };
2248
2249#ifdef DYNAMIC
2250static char *hsetbuf[] = {
2251"Syntax: SET BUFFERS n1 [ n2 ]\n",
2252"Change the overall amount of memory allocated for SEND and RECEIVE packet",
2253"buffers, respectively.  Bigger numbers let you have longer packets and more",
2254"window slots.  If n2 is omitted, the same value as n1 is used.",
2255"" };
2256#endif /* DYNAMIC */
2257
2258static char *hsetcmd[] = {
2259"Syntax: SET COMMAND parameter value\n",
2260"SET COMMAND BYTESIZE { 7, 8 }",
2261"  Informs C-Kermit of the bytesize of the communication path between itself",
2262"  and your keyboard and screen.  7 is assumed.  SET COMMAND BYTE 8 to allow",
2263"  entry and display of 8-bit characters.\n",
2264#ifdef OS2
2265"SET COMMAND COLOR <foreground-color> <background-color>",
2266"  Choose colors for Command screen.  Use ? to get lists of available \
2267colors.\n",
2268#endif /* OS2 */
2269
2270"SET COMMAND HEIGHT <number>",
2271"  Informs C-Kermit of the number of rows in your command screen for the",
2272"  purposes of More?-prompting.\n",
2273
2274"SET COMMAND WIDTH <number>",
2275"  Informs C-Kermit of the number of characters across your screen for",
2276"  purposes of screen formatting.\n",
2277
2278"SET COMMAND MORE-PROMPTING { ON, OFF }",
2279"  ON (the default) enables More?-prompting when C-Kermit needs to display",
2280"  text that does not fit vertically on your screen.  OFF allows the text to",
2281"  scroll by without intervention.  If your command window has scroll bars,",
2282"  you might prefer OFF.\n",
2283
2284#ifdef CK_RECALL
2285"SET COMMAND RECALL-BUFFER-SIZE number",
2286"  How big you want C-Kermit's command recall buffer to be.  By default, it",
2287"  holds 10 commands.  You can make it any size you like, subject to memory",
2288"  constraints of the computer.  A size of 0 disables command recall.",
2289"  Whenever you give this command, previous command history is lost.",
2290#endif /* CK_RECALL */
2291"\nSET COMMAND QUOTING { ON, OFF }",
2292"  Whether to treat backslash and question mark as special characters (ON),",
2293"  or as ordinary data characters (OFF) in commands.  ON by default.",
2294#ifdef CK_RECALL
2295"\nSET COMMAND RETRY { ON, OFF }",
2296"  Whether to reprompt you with the correct but incomplete portion of a",
2297"  syntactically incorrect command.  ON by default.",
2298#endif /* CK_RECALL */
2299"\nUse SHOW COMMAND to display these settings.",
2300"" };
2301
2302#ifndef NOLOCAL
2303static char *hsetcar[] = {
2304"Syntax: SET CARRIER ON, AUTO, or OFF\n",
2305"Attempts to control treatment of carrier on the communication device.",
2306"ON means that carrier is required at all times except during the DIAL",
2307"command.  OFF means that carrier is never required.  AUTO (the default)",
2308"means that carrier is required only during CONNECT.", "" };
2309#endif /* NOLOCAL */
2310
2311static char *hsetat[] = {
2312"Syntax: SET ATTRIBUTES name ON or OFF\n",
2313"Use this command to enable (ON) or disable (OFF) the transmission of",
2314"selected file attributes along with each file, and to handle or ignore",
2315"selected incoming file attributes, including:\n",
2316#ifndef NOCSETS
2317"  CHARACTER-SET:  The transfer character set for text files",
2318#endif /* NOCSETS */
2319"  DATE:           The file's creation date",
2320"  DISPOSITION:    Unusual things to do with the file, like MAIL or PRINT",
2321"  LENGTH:         The file's length",
2322"  SYSTEM-ID:      Machine/Operating system of origin",
2323"  TYPE:           The file's type (text or binary)\n",
2324"You can also specify ALL to select all of them.  Examples:\n",
2325"  SET ATTR DATE OFF\n  SET ATTR LENGTH ON\n  SET ATTR ALL OFF", ""
2326};
2327
2328#ifndef NOSPL
2329static char *hxyinp[] = {
2330"Syntax: SET INPUT parameter value\n",
2331"The SET INPUT command controls the behavior of the INPUT command:\n",
2332"SET INPUT BUFFER-LENGTH number-of-bytes",
2333"Removes the old INPUT buffer and creates a new one with the given length.\n",
2334"SET INPUT CASE { IGNORE, OBSERVE }",
2335"Tells whether alphabetic case is to be significant in string comparisons.",
2336"This setting is local to the current macro or command file, and is inherited",
2337"by subordinate macros and take files.\n",
2338"SET INPUT ECHO { ON, OFF }",
2339"Tells whether to display arriving characters read by INPUT on the screen.\n",
2340"SET INPUT SILENCE <number>",
2341"The maximum number to seconds of silence (no input at all) before the INPUT",
2342"command times out, 0 for no maximum.\n",
2343"SET INPUT TIMEOUT-ACTION { PROCEED, QUIT }",
2344"Tells whether to proceed or quit from a script program if an INPUT command",
2345"fails.  PROCEED (default) allows use of IF SUCCESS and IF FAILURE commands.",
2346"This setting is local to the current macro or command file, and is inherited",
2347"by subordinate macros and take files.",
2348"" };
2349#endif /* NOSPL */
2350
2351static char *hxytak[] = {
2352"Syntax: SET TAKE parameter value\n",
2353"Controls behavior of TAKE command.\n",
2354"SET TAKE ECHO { ON, OFF } tells whether commands read from a TAKE file",
2355"should be displayed on the screen.\n",
2356"SET TAKE ERROR { ON, OFF } tells whether a TAKE command file should be",
2357"automatically terminated when a command fails.  This setting is local to",
2358"the current command file, and inherited by subordinate command files.",
2359 "" };
2360
2361#ifndef NOLOCAL
2362#ifdef OS2MOUSE
2363static char *hxymouse[] = {
2364"Syntax: SET MOUSE ACTIVATE { ON, OFF }",
2365"Enables or disables the mouse in Connect mode.  Default is ON\n",
2366"Syntax: SET MOUSE BUTTON <number> <key-modifier> <action> [ <text> ]",
2367"where:",
2368"<number> is the mouse button number, 1, 2, or 3;",
2369"<key-modifier> denotes modifier keys held down during the mouse event:\n",
2370"  ALT, ALT-SHIFT, CTRL, CTRL-ALT CTRL-ALT-SHIFT, CTRL-SHIFT, SHIFT, or NONE;",
2371"\nand <action> is the mouse action, CLICK, DRAG, or DOUBLE-CLICK\n.",
2372"The <text> has exactly the same properties as the <text> from the SET KEY",
2373"command -- it can be a character, a string, one or more Kverbs, a macro",
2374"invoked as a Kverb, or any combination of these.  Thus, anything that can be",
2375"assigned to a key can also be assigned to the mouse -- and vice versa.  If",
2376"the <text> is omitted, the action will be ignored.  Examples:\n",
2377"  SET MOUSE BUTTON 1 NONE DOUBLE \\KmouseCurPos",
2378"  SET MOU B 2 SHIFT CLICK help\13\n",
2379"DRAG operations perform a \"mark mode\" selection of Text. You should assign",
2380"only the following actions to drag operations:",
2381"  \\Kdump         - copy marked text to printer (or file)",
2382"  \\Kmarkcopyclip - copy marked text to PM Clipboard",
2383"  \\Kmarkcopyhost - copy marked text direct to Host",
2384"  \\Kmousemark    - mark text, no copy operation performed\n",
2385"The following Kverb is only for use with the mouse:\n",
2386"  \\KmouseCurPos",
2387"which represents the mouse-directed terminal cursor feature.\n",
2388"Syntax: SET MOUSE CLEAR",
2389"Restores all mouse events to their default definitions",
2390"  Button 1 Double-Click = Kverb: \\Kmousecurpos",
2391"  Button 1 Drag         = Kverb: \\Kmarkcopyclip",
2392"  Button 1 Ctrl Drag    = Kverb: \\Kmarkcopyhost",
2393"  Button 2 Double-Click = Kverb: \\Kpaste",
2394" ",
2395"Type UPDATES MOUSE at the C-Kermit> prompt for details.",
2396""};
2397#endif /* OS2MOUSE */
2398
2399static char *hxyterm[] = {
2400"Syntax: SET TERMINAL parameter value\n",
2401#ifdef OS2
2402"SET TERMINAL TYPE { ANSI, VT52, VT100, VT102, VT220, VT320, ... }",
2403"to select emulation.  Type SET TERMINAL TYPE ? to see a complete list.\n",
2404"SET TERMINAL ANSWERBACK { OFF, ON }",
2405"disables/enables the ENQ/Answerback sequence (\"K-95 version term-type\").\n",
2406"SET TERMINAL ANSWERBACK MESSAGE <extension>",
2407"allows you to specify an extension to the default answerback message.\n",
2408#else
2409"SET TERMINAL TYPE ...",
2410"This command is not available because this version of C-Kermit does not",
2411"include a terminal emulator.  Instead, it is a \"semitransparent pipe\"",
2412"(or a totally transparent one, if you configure it that way) to the computer",
2413"or service you have made a connection to.  Your console, workstation window,",
2414"or the terminal emulator or terminal from which you are running C-Kermit",
2415"provides the emulation.\n",
2416#endif /* OS2 */
2417#ifdef CK_APC
2418"SET TERMINAL APC { ON, OFF, UNCHECKED }",
2419#ifdef OS2
2420"controls execution of Application Program Commands sent by the host while",
2421"K-95 is either in CONNECT mode or processing INPUT commands.  ON allows",
2422"execution of \"safe\" commands and disallows potentially dangerous commands",
2423"such as DELETE, RENAME, OUTPUT, and RUN.  OFF prevents execution of APCs.",
2424"UNCHECKED allows execution of all APCs.  OFF is the default.\n",
2425#else /* OS2 */
2426"controls execution of Application Program Commands sent by the host while",
2427"C-Kermit is in CONNECT mode.  ON allows execution of \"safe\" commands and",
2428"disallows potentially dangerous commands such as DELETE, RENAME, OUTPUT, and",
2429"RUN.  OFF prevents execution of APCs.  UNCHECKED allows execution of all",
2430"APCs.  OFF is the default.\n",
2431#endif /* OS2 */
2432#endif /* CK_APC */
2433#ifdef OS2
2434"SET TERMINAL ARROW-KEYS { APPLICATION, CURSOR }",
2435"sets the mode for the arrow keys during VT terminal emulation.\n",
2436"SET TERMINAL ATTRIBUTE { BLINK, REVERSE, UNDERLINE }",
2437"determines whether a true attribute is used, ON, or whether a color",
2438"simulation (as specified by SET TERMINAL COLOR) is used instead.\n",
2439
2440"SET TERMINAL ATTRIBUTE { BLINK, REVERSE, UNDERLINE } { ON, OFF }",
2441"Determines whether real Blinking, Reverse, and Underline are used in the",
2442"terminal display.  When BLINK is turned OFF, reverse background intensity is",
2443"used.  When REVERSE and UNDERLINE are OFF, the colors selected with SET",
2444"TERMINAL COLOR { REVERSE,UNDERLINE } are used instead.  This command affects",
2445"the entire current screen and the entire terminal scrollback buffer.\n",
2446#endif /* OS2 */
2447
2448"SET TERMINAL AUTODOWNLOAD { ON, OFF }",
2449#ifdef OS2
2450"enables/disables automatic switching into file-transfer mode when a valid",
2451#ifdef CK_XYZ
2452"Kermit or ZMODEM packet of the appropriate type is received during CONNECT",
2453"mode or while an INPUT command is active.  Default is OFF.\n",
2454#else
2455"Kermit packet of the appropriate type is received during CONNECT mode or",
2456"while an INPUT command is active.  Default is OFF.\n",
2457#endif /* CK_XYZ */
2458#else /* OS2 */
2459"enables/disables automatic switching into file-transfer mode when a valid",
2460#ifdef CK_XYZ
2461"Kermit or ZMODEM packet of the appropriate type is received during CONNECT",
2462"mode.  Default is OFF.\n",
2463#else
2464"Kermit packet of the appropriate type is received during CONNECT mode.",
2465"Default is OFF.\n",
2466#endif /* CK_XYZ */
2467#endif /* OS2 */
2468
2469#ifdef OS2
2470"SET TERMINAL BELL { AUDIBLE, VISIBLE, NONE }",
2471"specifies how Control-G (bell) characters are handled.  AUDIBLE means",
2472"a beep is sounded; VISIBLE means the screen is flashed momentarily.\n",
2473"This command has been superseded by SET BELL.\n",
2474#endif /* OS2 */
2475
2476"SET TERMINAL BYTESIZE 7 or 8, to use 7- or 8-bit terminal characters",
2477"between C-Kermit and the remote computer or service during CONNECT.\n",
2478
2479#ifndef NOCSETS
2480#ifdef OS2
2481"SET TERMINAL CHARACTER-SET",
2482    "  see SET TERMINAL { LOCAL-CHARACTER-SET, REMOTE-CHARACTER-SET }\n",
2483#else  /* not OS2 */
2484"SET TERMINAL CHARACTER-SET <remote-cs> [ <local-cs> ]",
2485"to specify the character set used by the remote host, <remote-cs>, and the",
2486"character set used by C-Kermit locally, <local-cs>.  If you don't specify",
2487"the local character set, the current FILE CHARACTER-SET is used.  When",
2488"you specify two different character sets, C-Kermit translates between them",
2489"during CONNECT.  By default, both character sets are TRANSPARENT, and",
2490"no translation is done.\n",
2491#endif /* OS2 */
2492#endif /* NOCSETS */
2493
2494#ifdef OS2
2495"SET TERMINAL CODE-PAGE <number> lets you change the PC code page.  Only",
2496"works for code pages that are successfully prepared in CONFIG.SYS.  Use",
2497"SHOW TERMINAL to display the current code page and the available code pages.",
2498#ifdef OS2ONLY
2499"See also SET TERMINAL FONT if the desired code page in not available in",
2500"your version of OS/2.\n",
2501#endif /* OS2ONLY */
2502#endif /* OS2 */
2503
2504#ifdef OS2
2505#ifndef NT
2506"SET TERMINAL COLOR BORDER <foreground>",
2507#endif /* NT */
2508"SET TERMINAL COLOR <screenpart> <foreground> <background>, to set",
2509"the colors of the terminal emulation screen.  <screenpart> may be one of:",
2510"DEBUG, HELP-TEXT, REVERSE, SELECTION, STATUS-LINE, TERMINAL-SCREEN, or",
2511"UNDERLINED-TEXT.",
2512"<foreground> and <background> may be one of: BLACK, BLUE, GREEN, CYAN, RED",
2513"MAGENTA, BROWN, LGRAY, DGRAY, LBLUE, LGREEN, LCYAN, LRED, LMAGENTA, YELLOW",
2514"or WHITE.  The L prefix for the color names means Light.\n",
2515"SET TERMINAL CONTROLS { 7, 8 } to specify whether or not C1 control",
2516"characters (CSI and SS3) should be used when communicating with the host.\n"
2517
2518"SET TERMINAL COLOR ERASE { CURRENT-COLOR, DEFAULT-COLOR }",
2519"Determines whether the current color as set by the host or the default color",
2520"as set by the user (SET TERMINAL COLOR TERMINAL) is used to clear the screen",
2521"when erase commands are received from the host.\n",
2522
2523"SET TERMINAL COLOR RESET-ON-ESC[0m { CURRENT-COLOR, DEFAULT-COLOR }",
2524"Determines whether the current color or the default color is used after",
2525"an ESC [ 0 m (\"reset attributes\") command sequence is received from the",
2526"host.\n",
2527
2528"SET TERMINAL CONTROLS { 7, 8 }",
2529"Determines whether VT220/320 or Wyse 370 function keys, arrow keys, etc,",
2530"that generate ANSI-format escape sequences should send 8-bit control",
2531"characters or 7-bit escape sequences.\n",
2532#endif /* OS2 */
2533
2534"SET TERMINAL CR-DISPLAY { CRLF, NORMAL } to specify how incoming",
2535"carriage return characters are to be displayed on your screen.\n",
2536
2537#ifdef OS2
2538"SET TERMINAL CURSOR { FULL, HALF, UNDERLINE } selects cursor style.\n",
2539#endif /* OS2 */
2540
2541"SET TERMINAL DEBUG { ON, OFF } controls terminal session debugging.\n",
2542
2543"SET TERMINAL ECHO { LOCAL, REMOTE } specifies which side does the echoing",
2544"during terminal connection.\n",
2545
2546"SET TERMINAL ESCAPE-CHARACTER { ENABLED, DISABLED } turns on/off the ability",
2547"to escape back from CONNECT mode using the SET ESCAPE character.",
2548#ifdef OS2
2549"If you disable it you can still get back using Alt-key combinations as shown",
2550"in the status line.\n",
2551#else
2552"If you disable it, Kermit returns to its prompt only if the connection is",
2553"closed by the other end.  USE WITH EXTREME CAUTION.\n",
2554#endif /* OS2 */
2555
2556#ifdef OS2
2557#ifdef OS2ONLY
2558"SET TERMINAL FONT { CP437, CP850, CP852, CP862, CP866, DEFAULT }",
2559"  CP437 - Original PC code page",
2560"  CP850 - \"Multilingual\" (West Europe) code page",
2561"  CP852 - East Europe Roman Alphabet code page (for Czech, Polish, etc)",
2562"  CP862 - Hebrew code page",
2563"  CP866 - Cyrillic (Russian, Belorussian, and Ukrainian) code page",
2564"Loads a soft into the video adapter for use during terminal emulation.",
2565"Use this command when your OS/2 system does not have the desired code page.",
2566"Can be used only in full-screen sessions.  Also see SET TERMINAL CODE-PAGE",
2567"and SET TERMINAL CHARACTER-SET.\n",
2568#endif /* OS2ONLY */
2569#endif /* OS2 */
2570
2571#ifdef OS2
2572#ifdef NT
2573"SET TERMINAL HEIGHT <number> Changes the number of rows (lines) to use",
2574"during terminal emulation, not counting the status line.  Recommended",
2575"values are 24, 42, and 49 (or 25, 43, and 50 if SET TERMINAL STATUSLINE",
2576"is OFF.)\n",
2577#else
2578"SET TERMINAL HEIGHT <number> Changes the number of rows (lines) to use",
2579"during terminal emulation, not counting the status line.  Windowed sessions",
2580"can use any value from 8 to 101.  Fullscreen sessions are limited to 24, 42,"
2581"49, or 59.  Not all heights are supported by all video adapters.\n",
2582#endif /* NT */
2583#else
2584"SET TERMINAL HEIGHT <number> tells C-Kermit how many rows (lines) are on",
2585"your CONNECT-mode screen.\n",
2586#endif /* OS2 */
2587
2588#ifdef OS2
2589"SET TERMINAL KEY <mode> <keycode> <text>",
2590"SET TERMINAL KEY <mode> DEFAULT",
2591"SET TERMINAL KEY <mode> CLEAR",
2592"Configure the key whose <keycode> is k to send the given text when",
2593"pressed while <mode> is active.  <mode> may be any of the valid terminal",
2594"types or the special modes \"EMACS\", \"HEBREW\" or \"RUSSIAN\".  DEFAULT",
2595"restores all the default key mappings for the specified mode.  CLEAR erases",
2596"all the key mappings.  If there is no text, the default key binding is",
2597#ifndef NOCSETS
2598"restored for the key k.  SET TERMINAL KEY mappings take place before",
2599"terminal character-set translation.  SET KEY mappings take precedence over",
2600"SET TERMINAL KEY <terminal type> settings.",   
2601#else
2602"restored for the key k.  SET KEY mappings take precedence over SET TERMINAL",
2603"KEY <terminal type> settings."
2604#endif /* NOCSETS */
2605"\nThe text may contain \"\\Kverbs\" to denote actions, to stand for DEC",
2606"keypad, function, or editing keys, etc.  For a list of available keyboard",
2607"verbs, type SHOW KVERBS.",
2608"\nTo find out the scan code and mapping for a particular key, use the",
2609"SHOW KEY command.  Use the SAVE KEYS command to save all settings to a file.",
2610
2611"SET TERMINAL KEYPAD-MODE { APPLICATION, NUMERIC } to specify the numeric",
2612"keypad mode for VT terminal emulation.\n",
2613#endif /* OS2 */
2614
2615#ifndef NOCSETS
2616#ifdef OS2
2617"SET TERMINAL LOCAL-CHARACTER-SET <local-cs>",
2618"to specify the character set used by C-Kermit locally.  If you don't specify",
2619#ifdef OS2ONLY
2620"the local character-set, the current TERMINAL FONT is used, if you have",
2621"given a SET TERMINAL FONT command, otherwise the current code page is used.",
2622#else
2623"the local character-set, the current code page is used.",
2624#endif /* OS2ONLY */
2625"When the local and remote character sets differ, C-Kermit translates between",
2626"them during CONNECT.  By default, the remote character set is Latin1 and",
2627"the local one is your current code page.",
2628#ifdef NT
2629"In Windows NT, Unicode is used as the local character-set regardless of this",
2630"setting.",
2631#endif /* NT */
2632"See also SET TERMINAL REMOTE-CHARACTER-SET\n"
2633#endif /* OS2 */
2634#endif /* NOCSETS */
2635
2636#ifdef OS2
2637"SET TERMINAL LOCKING-SHIFT { OFF, ON } tells whether to send",
2638"Shift-In/Shift-Out (Ctrl-O and Ctrl-N) to switch between 7-bit and 8-bit",
2639"characters sent during terminal emulation over 7-bit connections.",
2640"OFF by default.\n",
2641#else
2642"SET TERMINAL LOCKING-SHIFT { OFF, ON } tells C-Kermit whether to use",
2643"Shift-In/Shift-Out (Ctrl-O and Ctrl-N) to switch between 7-bit and 8-bit",
2644"characters during CONNECT.  OFF by default.\n",
2645#endif /* OS2 */
2646"SET TERMINAL NEWLINE-MODE { OFF, ON } tells whether to send CRLF when you",
2647"type CR during CONNECT mode.\n",
2648#ifdef OS2
2649
2650"SET TERMINAL OUTPUT-PACING <milliseconds> tells how long to pause between",
2651"sending each character to the host during CONNECT mode.  Normally not needed",
2652"but sometimes required to work around TRANSMISSION BLOCKED conditions when",
2653"pasting into the terminal window.\n",
2654
2655#ifndef NOCSETS
2656#ifdef OS2
2657"SET TERMINAL REMOTE-CHARACTER-SET <remote-cs> [ { G0,G1,G2,G3 }... ]",
2658"to specify the character set used by the remote host, <remote-cs>.",
2659"When the local and remote character sets differ, C-Kermit translates between",
2660"them during CONNECT.  By default, the remote character set is Latin1 and",
2661"the local one is your current code page.  Optionally, you can also designate",
2662"the character set to the G0..G3 graphic tables.\n",
2663#endif /* OS2 */
2664#endif /* NOCSETS */
2665
2666"SET TERMINAL ROLL-MODE { INSERT, OVERWRITE } tells whether new data when",
2667"received from the host is entered into the scrollback buffer at the current",
2668"rollback position (OVERWRITE) or at the end of the buffer (INSERT).  The",
2669"default is INSERT.  Typing is allowed during rollbacks in either mode.\n",
2670
2671"SET TERMINAL SCREEN-UPDATE { FAST, SMOOTH } [ <milliseconds> ] chooses",
2672"the mechanism used for screen updating and the update frequency.",
2673"Defaults are FAST scrolling with updates every 100 milliseconds.\n",
2674
2675"SET TERMINAL SCROLLBACK <lines> sets size of CONNECT virtual screen buffer.",
2676"<lines> includes the active terminal screen.  The minimum is 256.  The",
2677"maximum is 2 million.  The default is 2000.\n",
2678
2679"SET TERMINAL SEND-DATA { ON, OFF } determines whether ASCII emulations such",
2680"as WYSE 30,50,60 or TVI 910+,925,950 may send their screen contents to the",
2681"host upon request.  Allowing the screen to be read by the host is considered",
2682"a significant security risk.  The default is OFF and should only be changed",
2683"after a security evaluation of host environment.\n",
2684
2685"SET TERMINAL SEND-END-OF-BLOCK { CRLF_ETX, US_CR } determines which set of",
2686"characters should be used as end of line and end of transmission indicators",
2687"when sending screen data to the host\n",
2688
2689"SET TERMINAL SGR-COLORS { ON, OFF }",
2690"ON (default) means allow host control of colors; OFF means ignore host",
2691"escape sequences to set color.\n",
2692
2693"SET TERMINAL STATUSLINE { ON, OFF }",
2694"ON (default) enables the Kermit status line in the terminal screen.",
2695"OFF removes it, making the line available for use by the host.\n",
2696
2697"SET TERMINAL TRANSMIT-TIMEOUT <seconds> specifies the maximum amount of time",
2698"C-Kermit waits before returning to the prompt if your keystrokes can't be",
2699"transmitted for some reason, such as a flow-control deadlock.\n",
2700
2701"SET TERMINAL VIDEO-CHANGE { DISABLED, ENABLED }",
2702"Tells whether Kermit should change video modes automatically in response",
2703#ifdef NT
2704"to escape sequences from the other computer.  ENABLED by default (except",
2705"on Windows 95).\n",
2706#else /* NT */
2707"to escape sequences from the other computer.  ENABLED by default.\n",
2708#endif /* NT */
2709
2710#ifdef NT
2711"SET TERMINAL WIDTH <cols> tells how many columns define the terminal size.\n",
2712"Default is 80.  You can also use 132.  Other widths can be chosen but are",
2713"usually not supported by host software.\n",
2714#else
2715"SET TERMINAL WIDTH <cols> tells how many columns define the terminal size.\n",
2716"Default is 80.  In Windowed OS/2 2.x sessions, this value may not be changed",
2717"In Windowed OS/2 WARP 3.x sessions, this value may range from 20 to 255.",
2718"In Full screen sessions, values of 40, 80, and 132 are valid.  Not all",
2719"combinations of height and width are supported on all adapters.\n",
2720#endif /* NT */
2721"SET TERMINAL WRAP { OFF, ON } to tell whether the terminal emulator should",
2722"automatically wrap long lines on your screen.\n",
2723#else
2724
2725"SET TERMINAL WIDTH <number> tells C-Kermit how many columns (characters) are",
2726"on your CONNECT-mode screen.\n",
2727
2728#endif /* OS2 */
2729"Type SHOW TERMINAL to see current terminal settings.",
2730"" };
2731#endif /* NOLOCAL */
2732
2733#ifdef NETCONN
2734static char *hxyhost[] = {
2735"TCP/IP Syntax: SET HOST hostname-or-address [ service ]\n",
2736"Establish a connection to the specified network host on the currently",
2737"selected network type.  For TCP/IP connections, the default service is",
2738"TELNET; specify a different TCP port number or service name to choose a",
2739"different service.  TCP/IP Examples:\n",
2740"  SET HOST kermit.columbia.edu",
2741"  SET HOST 128.59.39.2",
2742"  SET HOST madlab.sprl.umich.edu 3000\n",
2743#ifdef SUPERLAT
2744"\nSUPERLAT Syntax: SET HOST {service or node/port} [ password ]\n",
2745"Establish a connection to the specified network service or node and port",
2746"on the LAT network.  Passwords may be specified if required by the",
2747"desired service.  SUPERLAT Examples:\n",
2748"  SET HOST KERVAX",
2749"  SET HOST KERVAX/234",
2750"  SET HOST KERVAX password",
2751#endif /* SUPERLAT */
2752"Also see SET NETWORK, TELNET.",
2753"" };
2754
2755#ifdef TNCODE
2756static char *hxytel[] = {
2757"Syntax: SET TELNET parameter value\n",
2758"For TCP/IP TELNET connections, which are in NVT (ASCII) mode by default:\n",
2759"SET TELNET BINARY-MODE { ACCEPTED, REFUSED, REQUESTED }",
2760"  ACCEPT or REFUSE binary-mode bids, or actively REQUEST binary mode.",
2761"  ACCEPTED by default.",
2762"SET TELNET BUG BINARY-ME-MEANS-U-TOO { ON, OFF }",
2763"  Set this to ON to try to overcome TELNET binary-mode misnegotiations by",
2764"  C-Kermit's TELNET partner.",
2765"SET TELNET ECHO { LOCAL, REMOTE }",
2766"  C-Kermit's initial echoing state for TELNET connections, LOCAL by default.",
2767"  After the connection is made, TELNET negotiations determine the echoing.",
2768#ifdef CK_ENVIRONMENT
2769"SET TELNET ENVIRONMENT variable value",
2770"  C-Kermit supports the TELNET NEW-ENVIRONMENT protocol negotiation RFC-1572",
2771"  variable may be any of the \"well known\" variables \"USER\", \"JOB\",",
2772"  \"ACCT\", \"PRINTER\", \"SYSTEMTYPE\", or \"DISPLAY\".  The format of the",
2773"  value to be used for each variable is system dependent as determined by",
2774"  the remote system.  (See RFC-1572 for further details.)",
2775#endif /* CK_ENVIRONMENT */
2776"SET TELNET { NVT, BINARY-MODE } NEWLINE-MODE { OFF, ON, RAW }",
2777"  Determines how carriage returns are handled on TELNET connections.",
2778"  There are separate settings for NVT (ASCII) mode and binary mode.",
2779"  ON (default for NVT mode) means CRLF represents CR.",
2780"  OFF means CR followed by NUL represents CR.",
2781"  RAW (default for BINARY mode) means CR stands for itself.",
2782"SET TELNET TERMINAL-TYPE name",
2783"  The terminal type to send to the remote TELNET host.  If none is given,",
2784#ifdef OS2
2785"  your current SET TERMINAL TYPE value is sent, e.g. VT220.\n",
2786#else
2787"  your local terminal type is sent.\n",
2788#endif /* OS2 */
2789"Type SHOW NETWORK to see the current values of these parameters.",
2790"" };
2791#endif /* TNCODE */
2792
2793static char *hxynet[] = {
2794"Syntax: SET NETWORK { network-type, DIRECTORY [ file [ file [ ... ] ] ] }\n",
2795"Select the type of network to be used with SET HOST connections:\n",
2796#ifdef TCPSOCKET
2797"  SET NETWORK TCP/IP",
2798#endif /* TCPSOCKET */
2799#ifdef ANYX25
2800"  SET NETWORK X.25",
2801#endif /* ANYX25 */
2802#ifdef DECNET
2803"  SET NETWORK DECNET",
2804#endif /* DECNET */
2805#ifdef NPIPE
2806"  SET NETWORK NAMED-PIPE <pipename>",
2807#endif /* NPIPE */
2808#ifdef CK_NETBIOS
2809"  SET NETWORK NETBIOS",
2810#endif /* CK_NETBIOS */
2811#ifdef SUPERLAT
2812"  SET NETWORK SUPERLAT",
2813#endif /* SUPERLAT */
2814"\nIf only one network type is listed above, that is the default network for",
2815"SET HOST commands.  Also see SET HOST, TELNET.\n",
2816"SET NETWORK DIRECTORY specifies the name(s) of zero or more network",
2817"directory files, similar to dialing directories (HELP DIAL for details).",
2818"The general format of a network directory entry is:\n",
2819"  name network-type address [ network-specific-info ] [ ; comment ]\n",
2820"For TCP/IP, the format is:\n",
2821"  name tcp/ip ip-hostname-or-address [ socket ] [ ; comment ]\n",
2822"You can have multiple network directories and you can have multiple entries",
2823"with the same name.  SET HOST <name> and TELNET <name> commands look up the",
2824"given <name> in the directory and, if found, fill in the additional items",
2825"from the entry, and then try all matching entries until one succeeds.",
2826""};
2827
2828#ifndef NOTCPOPTS
2829#ifdef SOL_SOCKET
2830static char *hxytcp[] = {
2831"SET TCP KEEPALIVE { ON, OFF }",
2832"  Setting this ON might help to detect broken connections more quickly.",
2833"  (default is ON.)\n",
2834"SET TCP LINGER { ON [timeout], OFF }",
2835"  Setting this ON ensures that a connection doesn't close before",
2836"  all outstanding data has been transferred and acknowledged.",
2837"  timeout measured in 10th of a millisecond.",
2838"  (default is ON with a timeout of 0.)\n",
2839"SET TCP NODELAY { ON, OFF }",
2840"  ON means send short TCP packets immediately rather than waiting",
2841"  to accumulate a bunch of them before transmitting (Nagle Algorithm).",
2842"  (default is OFF.)\n",
2843"SET TCP RECVBUF <number>",
2844"SET TCP SENDBUF <number>",
2845"  TCP receive and send buffer sizes.  (default is -1, use system defaults.)\n",
2846"These items are designed to let you tune TCP networking performance on a",
2847"per-connection basis by adjusting items that you normally would not have",
2848"access to.  You should use these commands only if you feel that the TCP/IP",
2849"protocol stack that Kermit is using is giving you inadequate performance, and",
2850"then only if you understand the concepts (see, for example, the Comer TCP/IP",
2851"books), and then at your own risk.  These settings are displayed by SHOW",
2852"NETWORK.  Not all options are necessarily available in all Kermit versions;",
2853"it depends on the underlying TCP/IP services.",
2854""};
2855#endif /* SOL_SOCKET */
2856#endif /* NOTCPOPTS */
2857#endif /* NETCONN */
2858 
2859#ifndef NOSPL
2860static char *hxymacr[] = {
2861"Syntax: SET MACRO parameter value\n",
2862"Controls the behavior of macros.\n",
2863"SET MACRO ECHO { ON, OFF } tells whether commands executed from a macro",
2864"definition should be displayed on the screen.\n",
2865"SET MACRO ERROR { ON, OFF } tells whether a macro should be automatically",
2866"terminated upon a command error.  This setting is local to the current",
2867"macro, and inherited by subordinate macros.",
2868"" };
2869#endif /* NOSPL */
2870
2871static char *hmxyprm[] = {
2872"Syntax: SET PROMPT [ text ]\n",
2873#ifdef MAC
2874"Prompt text for this program, normally 'Mac-Kermit>'.  May contain backslash",
2875#else
2876"Prompt text for this program, normally 'C-Kermit>'.  May contain backslash",
2877#endif /* MAC */
2878"codes for special effects.  Surround by { } to preserve leading or trailing",
2879#ifdef MAC
2880"spaces.  If text omitted, prompt reverts to Mac-Kermit>.  Prompt can include",
2881#else
2882"spaces.  If text omitted, prompt reverts to C-Kermit>.  Prompt can include",
2883#endif /* MAC */
2884"variables like \\v(dir) or \\v(time) to show current directory or time.",
2885"" };
2886
2887static char *hxywind[] = {
2888"Syntax: SET WINDOW-SIZE number\n",
2889"Specify number of window slots for sliding windows, the number of packets",
2890"that can be transmitted before pausing for acknowledgement.  The default",
2891#ifdef XYZ_INTERNAL
2892"for Kermit protocol is one, the maximum is 32; for ZMODEM, the default",
2893"is no windowing (0).  For ZMODEM, the window size is really the packet",
2894"length, and is used only when non-windowed (streaming) transfers fail; the",
2895"ZMODEM window size should be a largish number, like 1024, and it should be",
2896"a multiple of 64.",
2897#else
2898"is one, the maximum is 32.  Increased window size may result in reduced",
2899"maximum packet length.  Use sliding windows for improved efficiency on",
2900"connections with long delays.  A full duplex connection is required, as well",
2901"as a cooperating Kermit on the other end.",
2902#endif /* XYZ_INTERNAL */
2903"" };
2904
2905static char *hxyrpt[] = {
2906"Syntax: SET REPEAT { COUNTS { ON, OFF }, PREFIX <code> }\n",
2907"SET REPEAT COUNTS turns the repeat-count compression mechanism ON and OFF.",
2908" The default is ON.",
2909"SET REPEAT PREFIX <code> sets the repeat-count prefix character to the",
2910" given code.  The default is 126 (tilde).",
2911"" };
2912
2913static char *hxyrcv[] = {
2914"Syntax: SET RECEIVE parameter value\n",
2915"Specify parameters for inbound packets:\n",
2916"CONTROL-PREFIX number",
2917" ASCII value of prefix character used for quoting control characters in",
2918" packets that C-Kermit receives, normally 35 (number sign).  Don't change",
2919" this unless something is wrong with the other Kermit program.",
2920"END-OF-PACKET number",
2921" ASCII value of control character that terminates incoming packets,",
2922" normally 13 (carriage return).",
2923"PACKET-LENGTH number",
2924" Maximum length packet the other Kermit should send.",
2925"PADDING number",
2926" Number of prepacket padding characters to ask for (normally 0).",
2927"PAD-CHARACTER number",
2928" ASCII value of control character to use for padding (normally 0).",
2929"PATHNAMES ON or OFF",
2930" If a recognizable path (directory, device, etc) specification appears in",
2931" an incoming filename, leave it ON and try to use it, or strip it OFF before",
2932#ifdef CK_MKDIR
2933" trying to create the output file.  When ON (the default), then if any of",
2934" the directories in the path don't exist, C-Kermit tries to create them.",
2935#else
2936" trying to create the output file.  The default is to leave it ON.",
2937#endif /* CK_MKDIR */
2938"PAUSE number",
2939" Milliseconds to pause in between packets, normally 0.",
2940"START-OF-PACKET number",
2941" ASCII value of character that marks start of inbound packet.",
2942"TIMEOUT number",
2943" Number of seconds the other Kermit should wait for a packet before sending",
2944" a NAK or retransmitting.",
2945"" };
2946
2947static char *hxysnd[] = {
2948"Syntax: SET SEND parameter value\n",
2949"Specify parameters for outbound packets.  This command should be used only",
2950"to override the normal negotiated parameters and is rarely needed:\n",
2951"CONTROL-PREFIX number",
2952" ASCII value of prefix character used for quoting control characters in",
2953" packets that C-Kermit sends, normally 35 (number sign).",
2954"END-OF-PACKET number",
2955" ASCII value of control character to terminate an outbound packet,",
2956" normally 13 (carriage return).",
2957"PACKET-LENGTH number",
2958" Maximum length packet to send, even if other Kermit asks for longer ones.",
2959"PADDING number",
2960" Number of prepacket padding characters to send.",
2961"PAD-CHARACTER number",
2962" ASCII value of control character to use for padding.",
2963"PATHNAMES ON or OFF",
2964" When FILE NAMES is set to LITERAL, leave the path (device, directory, etc)",
2965" portion ON or OFF the file name when sending it.  Applies to the actual",
2966" filename, not the \"as-name\".  The default is ON.",
2967"PAUSE number",
2968" Milliseconds to pause in between packets, normally 0.",
2969"START-OF-PACKET number",
2970" ASCII value of character to mark start of outbound packet.",
2971"TIMEOUT number",
2972" Number of seconds to wait for a packet before sending NAK or",
2973#ifdef CK_TIMERS
2974" retransmitting.  Include the word DYNAMIC after the number in the",
2975" SET SEND TIMEOUT command to have Kermit compute the timeouts dynamically",
2976" throughout the transfer based on the packet rate.  Include the word FIXED",
2977" to use the \"number\" given throughout the transfer.  DYNAMIC is the",
2978" default.  After DYNAMIC you may include minimum and maximum values.",
2979#else
2980" retransmitting.",
2981#endif /* CK_TIMERS */
2982"" };
2983
2984static char *hxyxfer[] = {
2985"Synonym: SET XFER\n",
2986#ifdef XFRCAN
2987"Syntax: SET TRANSFER CANCELLATION { OFF, ON [ <code> [ <number> ] ] }\n",
2988"OFF disables remote-mode packet-mode cancellation from the keyboard.",
2989"ON enables it.  The optional <code> is the control character to use for",
2990"cancellation; the optional <number> is how many consecutive occurrences",
2991"of the given control character are required for cancellation.",
2992#endif /* XFRCAN */
2993#ifndef NOSPL
2994"\nSyntax: SET TRANSFER CRC-CALCULATION { OFF, ON }\n",
2995"Tells whether C-Kermit should accumulate a Cyclic Redundancy Check for each",
2996"file transfer.  Normally ON, in which case the CRC value is available in the",
2997"\\v(crc16) variable after the transfer.  Adds a little bit of overhead.  Use",
2998"SET TRANSFER CRC OFF to disable.",
2999#endif /* NOSPL */
3000#ifndef NOCSETS
3001"\nSyntax: SET TRANSFER CHARACTER-SET name\n",
3002"Select the character set used to represent textual data in Kermit packets.",
3003"Text characters are translated to/from the FILE CHARACTER-SET.  Choices:\n",
3004" TRANSPARENT (no translation, the default)",
3005" ASCII",
3006" LATIN1 (ISO 8859-1 Latin Alphabet 1)",
3007#ifndef NOLATIN2
3008" LATIN2 (ISO 8859-2 Latin Alphabet 2)",
3009#endif /* NOLATIN2 */
3010#ifdef CYRILLIC
3011" CYRILLIC-ISO (ISO 8859-5 Latin/Cyrillic)",
3012#endif /* CYRILLIC */
3013#ifdef HEBREW
3014" HEBREW-ISO (ISO 8859-8 Latin/Hebrew)",
3015#endif /* HEBREW */
3016#ifdef KANJI
3017" JAPANESE-EUC (JIS X 0208 Kanji + Roman and Katakana)\n",
3018#endif /* KANJI */
3019#endif /* NOCSETS */
3020"\nSyntax: SET TRANSFER LOCKING-SHIFT { OFF, ON, FORCED }\n",
3021"Tell whether locking-shift protocol should be used during file transfer",
3022"to achieve 8-bit transparency on a 7-bit connection.  ON means to request",
3023"its use if PARITY is not NONE and to use it if the other Kermit agrees,",
3024"OFF means not to use it, FORCED means to use it even if the other Kermit",
3025"does not agree.",
3026"\nSyntax: SET TRANSFER MODE { AUTOMATIC, MANUAL }\n",
3027"Automatic (the default) means C-Kermit should automatically go into binary",
3028"file-transfer mode and use literal filenames if the other Kermit says it has",
3029"a compatible file system, e.g. UNIX-to-UNIX, but not UNIX-to-DOS.",
3030#ifdef CK_XYZ
3031"\nSyntax: SET TRANSFER PROTOCOL { KERMIT, XMODEM, ... }\n",
3032"Synonym for SET PROTOCOL (q.v.).",
3033#endif /* CK_XYZ */
3034"\nSyntax: SET TRANSFER SLOW-START { OFF, ON }\n",
3035"ON (the default) tells C-Kermit, when sending files, to gradually build up",
3036"the packet length to the maximum negotiated length.  OFF means start sending",
3037"the maximum length right away.",
3038"" };
3039
3040/*  D O H S E T  --  Give help for SET command  */
3041 
3042int
3043dohset(xx) int xx; {
3044    int x;
3045
3046    if (xx == -3) return(hmsga(hmhset));
3047    if (xx < 0) return(xx);
3048    if ((x = cmcfm()) < 0) return(x);
3049    switch (xx) {
3050 
3051case XYATTR:
3052    return(hmsga(hsetat));
3053
3054case XYBACK:
3055    return(hmsga(hsetbkg));
3056
3057#ifdef OS2
3058case XYBELL:
3059    return(hmsg("SET BELL { AUDIBLE [ { BEEP, SYSTEM-SOUNDS } ], VISIBLE, NONE }\n\
3060specifies how incoming Ctrl-G (bell) characters are handled in CONNECT mode\n\
3061and how command warnings are presented in command mode.  AUDIBLE means\n\
3062either a beep or a system-sound is generated; VISIBLE means the screen is\n\
3063flashed momentarily.\n"));
3064
3065case XYPRTY:
3066    return(hmsg("SET PRIORITY { REGULAR, FOREGROUND-SERVER, TIME-CRITICAL }\n\
3067specifies at which priority level the communication and screen update threads\n\
3068should operate at.  The default value is FOREGROUND-SERVER.\n"));
3069#endif /* OS2 */
3070
3071#ifdef DYNAMIC
3072case XYBUF:
3073    return(hmsga(hsetbuf));
3074#endif /* DYNAMIC */
3075
3076#ifndef NOLOCAL
3077case XYCARR:
3078    return(hmsga(hsetcar));
3079#endif /* NOLOCAL */
3080
3081#ifndef NOSPL
3082case XYCASE:
3083    return(hmsg("Syntax: SET CASE { ON, OFF }\n\
3084Tells whether alphabetic case is significant in string comparisons\n\
3085done by INPUT, IF, and other commands.  This setting is local to the\n\
3086current macro or command file, and inherited by subordinates."));
3087
3088#endif /* NOSPL */
3089
3090case XYCMD:
3091    return(hmsga(hsetcmd));
3092
3093case XYIFD:
3094    return(hmsg("Syntax: SET INCOMPLETE { DISCARD, KEEP }\n\
3095Discard or Keep incompletely received files, default is KEEP."));
3096
3097#ifndef NOSPL
3098case XYINPU:
3099    return(hmsga(hxyinp));
3100#endif /* NOSPL */
3101
3102case XYCHKT:
3103    return(hmsga(hmxychkt));
3104 
3105#ifndef NOSPL
3106case XYCOUN:
3107    return(hmsg("Syntax:  SET COUNT number\n\
3108Example: SET COUNT 5\n\
3109Set up a loop counter, for use with IF COUNT.  Local to current macro\n\
3110or command file, inherited by subordinate macros and command files."));
3111#endif /* NOSPL */
3112
3113#ifndef NOLOCAL
3114case XYDEBU:
3115#ifdef DEBUG   
3116    return(hmsg("Syntax: SET DEBUG { SESSION, ON, OFF }\n\
3117SESSION means display control and 8-bit characters symbolically during\n\
3118CONNECT mode.  ON means log debugging information to file debug.log."));
3119#else
3120    return(hmsg("Syntax: SET DEBUG { SESSION, OFF }\n\
3121SESSION means display control and 8-bit characters symbolically during\n\
3122CONNECT mode."));
3123#endif /* DEBUG */
3124#else
3125#ifdef DEBUG
3126case XYDEBU:
3127    return(hmsg("Syntax: SET DEBUG { ON, OFF }\n\
3128ON means log debugging information to file debug.log."));
3129#endif /* DEBUG */
3130#endif /* NOLOCAL */
3131
3132case XYDFLT:
3133    return(hmsg("Syntax: SET DEFAULT directory\n\
3134Change directory.  Equivalent to CD command."));
3135
3136case XYDELA:
3137    return(hmsg("Syntax: SET DELAY number\n\
3138Number of seconds to wait before sending first packet after SEND command."));
3139 
3140#ifndef NODIAL
3141case XYDIAL:
3142    return(hmsga(hmxydial));
3143#endif /* NODIAL */
3144
3145#ifdef UNIX
3146case XYSUSP:
3147    return(hmsg("Syntax: SET SUSPEND { OFF, ON }\n\n\
3148Disables SUSPEND command, suspend signals, and <esc-char>Z during CONNECT."));
3149#endif
3150
3151#ifndef NOSCRIPT
3152case XYSCRI:
3153    return(hmsg("Syntax: SET SCRIPT ECHO { OFF, ON }\n\n\
3154Disables/Enables echoing of SCRIPT command operation."));
3155#endif /* NOSCRIPT */
3156
3157case XYTAKE:
3158    return(hmsga(hxytak));
3159
3160#ifndef NOLOCAL
3161case XYTERM:
3162    return(hmsga(hxyterm));
3163
3164case XYDUPL:
3165    return(hmsg("Syntax: SET DUPLEX { FULL, HALF }\n\n\
3166During CONNECT: FULL means remote host echoes, HALF means C-Kermit\n\
3167does its own echoing."));
3168
3169case XYLCLE:
3170    return(hmsg("Syntax: SET LOCAL-ECHO { OFF, ON }\n\n\
3171During CONNECT: OFF means remote host echoes, ON means C-Kermit\n\
3172does its own echoing.  Synonym for SET DUPLEX { FULL, HALF }."));
3173
3174case XYESC:
3175#ifdef OS2
3176    return(hmsg("Syntax: SET ESCAPE number\n\n\
3177Decimal ASCII value for escape character during CONNECT, normally 29\n\
3178(Control-]).  Type the escape character followed by C to get back to the\n\
3179C-Kermit prompt or followed by ? to see other options."));
3180#else
3181    return(hmsg("Syntax: SET ESCAPE number\n\n\
3182Decimal ASCII value for escape character during CONNECT, normally 28\n\
3183(Control-\\).  Type the escape character followed by C to get back to the\n\
3184C-Kermit prompt or followed by ? to see other options."));
3185#endif /* OS2 */
3186#endif /* NOLOCAL */
3187 
3188#ifdef OS2
3189case XYPRTR:
3190    return(hmsga(hxyprtr));
3191#endif /* OS2 */
3192
3193case XYEXIT:
3194    return(hmsga(hxyexit));
3195 
3196case XYFILE:
3197    return(hmsga(hmxyf));
3198 
3199case XYFLOW:
3200    return(hmsga(hmxyflo));
3201 
3202case XYHAND:
3203   return(hmsga(hmxyhsh));
3204
3205#ifdef NETCONN
3206case XYHOST:
3207return(hmsga(hxyhost));
3208case XYNET:
3209return(hmsga(hxynet));
3210
3211#ifndef NOTCPOPTS
3212#ifdef SOL_SOCKET
3213case XYTCP:
3214return(hmsga(hxytcp));
3215#endif /* SOL_SOCKET */
3216#endif /* NOTCPOPTS */
3217
3218#ifdef ANYX25
3219case XYX25:
3220    return(hmsga(hxyx25));
3221
3222case XYPAD:
3223    return(hmsg("Syntax: SET PAD name value\n\
3224Set a PAD X.3 parameter with a desired value."));
3225#endif /* ANYX25 */
3226#endif /* NETCONN */
3227
3228#ifndef NOSPL
3229case XYOUTP:
3230    return(hmsg("Syntax: SET OUTPUT PACING <number>\n\
3231How many milliseconds to pause after sending each OUTPUT character."));
3232#endif /* NOSPL */
3233
3234#ifndef NOSETKEY
3235case XYKEY:                             /* SET KEY */
3236    return(hmsga(hmhskey));
3237#endif /* NOSETKEY */
3238
3239#ifndef NOCSETS
3240case XYLANG:
3241    return(hmsg("Syntax: SET LANGUAGE name\n\
3242Selects language-specific translation rules for text-mode file transfers.\n\
3243Used with SET FILE CHARACTER-SET and SET TRANSFER CHARACTER-SET when one\n\
3244of these is ASCII."));
3245#endif /* NOCSETS */
3246
3247case XYLINE:
3248    printf("\nSyntax: SET LINE devicename\n\
3249or:     SET PORT devicename\n\n\
3250Select communication device to use.  Normally %s.\n",dftty);
3251    if (!dfloc) {
3252        printf("\
3253If you SET LINE to other than %s, then Kermit\n",dftty);
3254        printf("\
3255will be in 'local' mode; SET LINE alone will reset Kermit to remote mode.\n\
3256To use the modem to dial out, first SET MODEM TYPE (e.g., to HAYES), then");
3257        printf("\
3258\nSET LINE xxx, next issue the DIAL command, and finally CONNECT.\n\n");
3259    }
3260    return(0);
3261 
3262#ifndef NOSPL
3263case XYMACR:
3264    return(hmsga(hxymacr));
3265#endif /* NOSPL */
3266
3267#ifndef NODIAL
3268case XYMODM:
3269    return(hmsga(hxymodm));
3270#endif /* NODIAL */
3271 
3272case XYPARI:
3273    return(hmsg("Syntax: SET PARITY name\n\n\
3274Parity to use during terminal connection and file transfer: EVEN, ODD, MARK,\n\
3275SPACE, or NONE.  Normally NONE."));
3276 
3277case XYPROM:
3278    return(hmsga(hmxyprm));
3279 
3280case XYQUIE:
3281    return(hmsg("Syntax: SET QUIET {ON, OFF}\n\n\
3282Normally OFF.  ON disables most information messages during interactive\n\
3283operation."));
3284
3285#ifdef CK_SPEED
3286case XYQCTL:
3287    return(hmsga(hmxyqctl));
3288#endif /* CK_SPEED */
3289
3290case XYRETR:
3291    return(hmsg("Syntax: SET RETRY number\n\n\
3292How many times to retransmit a particular packet before giving up."));
3293
3294#ifndef NOLOCAL
3295#ifdef UNIX
3296case XYSESS:
3297    return(hmsg("Syntax: SET SESSION-LOG { BINARY, TEXT }\n\n\
3298If BINARY, record all CONNECT characters in session log.  If TEXT, strip\n\
3299out carriage returns."));
3300#else
3301#ifdef OSK
3302case XYSESS:
3303    return(hmsg("Syntax: SET SESSION-LOG { BINARY, TEXT }\n\n\
3304If BINARY, record all CONNECT characters in session log.  If TEXT, strip\n\
3305out linefeeds."));
3306#endif /* OSK */
3307#endif /* UNIX */
3308
3309case XYSPEE:
3310    return(hmsg("Syntax: SET SPEED number\n\n\
3311Communication line speed for external tty line specified in most recent\n\
3312SET LINE command, in bits per second.  Type SET SPEED ? for a list of\n\
3313possible speeds."));
3314#endif /* NOLOCAL */
3315
3316case XYRECV:
3317    return(hmsga(hxyrcv));
3318case XYSEND:
3319    return(hmsga(hxysnd));
3320case XYREPT:
3321    return(hmsga(hxyrpt));
3322
3323#ifndef NOSERVER
3324case XYSERV:
3325    return(hmsga(hsetsrv));
3326#endif /* NOSERVER */
3327
3328#ifdef TNCODE
3329case XYTEL:
3330    return(hmsga(hxytel));
3331#endif /* TNCODE */
3332
3333#ifndef NOXMIT
3334case XYXMIT:
3335    return(hmsga(hsetxmit));
3336#endif /* NOXMIT */
3337
3338#ifndef NOCSETS
3339case XYUNCS:
3340    return(hmsg("Syntax: SET UNKNOWN-CHAR-SET action\n\n\
3341DISCARD (default) means reject any arriving files encoded in unknown\n\
3342character sets.  KEEP means to accept them anyway."));
3343#endif /* NOCSETS */
3344
3345#ifdef UNIX
3346case XYWILD:
3347    return(hmsg("Syntax: SET WILDCARD-EXPANSION { KERMIT, SHELL }\n\n\
3348KERMIT (the default) means C-Kermit expands filename wildcards in SEND\n\
3349and MSEND commands and incoming GET commands.  SHELL means your shell does \
3350it."));
3351#endif /* UNIX */
3352
3353case XYWIND:
3354    return(hmsga(hxywind));
3355
3356case XYXFER:
3357    return(hmsga(hxyxfer));
3358
3359#ifdef OS2MOUSE
3360case XYMOUSE:
3361    return(hmsga(hxymouse));
3362#endif /* OS2MOUSE */
3363
3364case XYALRM:
3365    return(hmsg("Syntax: SET ALARM [ <seconds> ]\n\n\
3366Number of seconds from now after which IF ALARM will succeed.\n\
33670 means no alarm."));
3368
3369case XYPROTO:
3370#ifndef CK_XYZ
3371    return(hmsg("Syntax: SET PROTOCOL KERMIT\n\n\
3372Chooses the protocol to be used for transferring files.  KERMIT is the\n\
3373only choice in this version of C-Kermit."));
3374#else
3375#ifdef XYZ_INTERNAL
3376    return(hmsga(hxyixyz));
3377#else
3378    return(hmsga(hxyxyz));
3379#endif /* XYZ_INTERNAL */
3380#endif /* CK_XYZ */
3381
3382#ifdef CK_SPEED
3383case XYPREFIX:
3384    return(hmsg("Syntax: SET PREFIXING { ALL, CAUTIOUS, MINIMAL, NONE }\n\n\
3385Selects the degree of control-character prefixing.  Also see HELP SET CONTROL."
3386));
3387#endif /* CK_SPEED */
3388
3389#ifdef OS2
3390case XYLOGIN:
3391    return(hmsg("Syntax: SET LOGIN { USERID, PASSWORD, PROMPT } <text>\n\n\
3392Provides access information for use by login scripts."));
3393#endif /* OS2 */
3394
3395#ifndef NOSPL
3396case XYTMPDIR:
3397    return(hmsg("Syntax: SET TEMP-DIRECTORY [ <directory-name> ]\n\n\
3398Overrides automatic assignment of \\v(tmpdir) variable."));
3399#endif /* NOSPL */
3400
3401case XYTITLE:
3402    return(hmsg("Syntax: SET TITLE <text>\n\
3403Sets window title to text instead of using current host/port name."));
3404
3405default:
3406    printf("Not available - \"%s\"\n",cmdbuf);
3407    return(0);
3408    }
3409}
3410
3411 
3412/*  D O H R M T  --  Give help about REMOTE command  */
3413 
3414static char *hrset[] = {
3415"Syntax:  REMOTE SET parameter value",
3416"Example: REMOTE SET FILE TYPE BINARY\n",
3417"Ask the remote Kermit server to set the named parameter to the given value.",
3418"Equivalent to typing the corresponding SET command directly to the other",
3419"Kermit if it were in interactive mode.", "" };
3420
3421int
3422dohrmt(xx) int xx; {
3423    int x;
3424    if (xx == -3) return(hmsga(hmhrmt));
3425    if (xx < 0) return(xx);
3426    if ((x = cmcfm()) < 0) return(x);
3427    switch (xx) {
3428
3429case XZCPY:
3430    return(hmsg("Syntax: REMOTE COPY source destination\n\n\
3431Ask the remote Kermit server to copy the source file to destination."));
3432
3433case XZCWD:
3434    return(hmsg("Syntax: REMOTE CD [ name ]\n\n\
3435Ask remote Kermit server to change its working directory or device.\n\
3436If the device or directory name is omitted, restore the default."));
3437 
3438case XZDEL:
3439    return(hmsg("Syntax: REMOTE DELETE filespec\n\n\
3440Ask the remote Kermit server to delete the named file(s)."));
3441 
3442case XZDIR:
3443    return(hmsg("Syntax: REMOTE DIRECTORY [ filespec ]\n\n\
3444Ask the remote Kermit server to provide a directory listing of the named\n\
3445file(s) or if no file specification is given, of all files in the current\n\
3446directory."));
3447 
3448case XZHLP:
3449    return(hmsg("Syntax: REMOTE HELP\n\n\
3450Ask the remote Kermit server to list the services it provides."));
3451 
3452case XZHOS:
3453    return(hmsg("Syntax: REMOTE HOST command\n\n\
3454Send a command to the remote host computer in its own command language\n\
3455through the remote Kermit server."));
3456 
3457#ifndef NOFRILLS
3458case XZKER:
3459    return(hmsg("Syntax: REMOTE KERMIT command\n\n\
3460Send a command to the remote Kermit server in its own command language."));
3461
3462case XZLGI:
3463    return(hmsg("Syntax: REMOTE LOGIN user password [ account ]\n\n\
3464Log in to a remote Kermit server that requires you login."));
3465
3466case XZLGO:
3467    return(hmsg("Syntax: REMOTE LOGOUT\n\n\
3468Log out from a remote Kermit server to which you have previously logged in."));
3469
3470case XZPRI:
3471    return(hmsg("Syntax: REMOTE PRINT filespec [ options ]\n\n\
3472Send the specified file(s) to the remote Kermit and ask it to have the\n\
3473file printed on the remote system's printer, using any specified options."));
3474#endif /* NOFRILLS */
3475
3476case XZREN:
3477    return(hmsg("Syntax: REMOTE RENAME filespec newname\n\n\
3478Ask the remote Kermit server to rename the file."));
3479
3480case XZSET:
3481    return(hmsga(hrset));
3482
3483case XZSPA:
3484    return(hmsg("Syntax: REMOTE SPACE [ name ]\n\n\
3485Ask the remote Kermit server to tell you about its disk space on the current\n\
3486disk or directory, or in the one that you name."));
3487 
3488#ifndef NOFRILLS
3489case XZTYP:
3490    return(hmsg("Syntax: REMOTE TYPE file\n\n\
3491Ask the remote Kermit server to type the named file(s) on your screen."));
3492 
3493case XZWHO:
3494    return(hmsg("Syntax: REMOTE WHO [ name ]\n\n\
3495Ask the remote Kermit server to list who's logged in, or to give information\n\
3496about the named user."));
3497#endif /* NOFRILLS */
3498
3499#ifndef NOSPL
3500case XZQUE:
3501    return(hmsg(
3502"Syntax: REMOTE QUERY { KERMIT, SYSTEM, USER } variable-name\n\n\
3503Ask the remote Kermit server to send the value of the named variable of the\n\
3504given type, and make it available in the \\v(query) variable."));
3505
3506case XZASG:
3507    return(hmsg(
3508"Syntax: REMOTE ASSIGN variable-name [ value ]\n\n\
3509Assign the given value to the named global variable on the server."));
3510
3511#endif /* NOSPL */
3512default:
3513    if ((x = cmcfm()) < 0) return(x);
3514    printf("not working yet - %s\n",cmdbuf);
3515    return(-2);
3516    }
3517}
3518#endif /* NOHELP */
3519#endif /* NOICP */
Note: See TracBrowser for help on using the repository browser.