home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / old / ckermit60 / ckuus2.c < prev    next >
C/C++ Source or Header  |  2020-01-01  |  131KB  |  3,520 lines

  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.  
  28. extern xx_strp xxstring;
  29. extern char *ccntab[];
  30.  
  31. #ifndef NOICP
  32. #ifdef DCMDBUF
  33. extern char *cmdbuf;
  34. #else
  35. extern char cmdbuf[];
  36. #endif /* DCMDBUF */
  37. #endif /* NOICP */
  38.  
  39. #ifdef DEBUG
  40. extern char debfil[];
  41. #endif /* DEBUG */
  42. #ifdef TLOG
  43. extern char trafil[];
  44. #endif
  45.  
  46. extern char *xarg0;
  47. extern int nrmt, nprm, dfloc, local, parity, escape;
  48. extern int turn, flow;
  49. extern int binary, warn, quiet, keep;
  50. extern int success;
  51. #ifdef OS2
  52. extern int tt_rows[], tt_cols[];
  53. #else /* OS2 */
  54. extern int tt_rows, tt_cols;
  55. #endif /* OS2 */
  56. extern int cmd_rows, cmd_cols;
  57.  
  58. extern long speed;
  59. extern char *dftty, *versio, *ckxsys;
  60. extern struct keytab prmtab[];
  61. extern struct keytab remcmd[];
  62.  
  63. /* Command-Line help (Unix command-line arguments) */
  64.  
  65. #ifndef NOCMDL
  66. static
  67. char *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.  
  157. VOID
  158. usage() {
  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.  
  175. static 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 
  249. char *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
  263. char *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. "  \
  463. Press 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.  
  493. static 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
  506. static 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
  519. static 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.  
  538. static char *hmxxbye = "Syntax: BYE\n\
  539. Shut down and log out a remote Kermit server";
  540.  
  541. static 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
  562. static 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
  578. static 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.  
  603. static char *hmxxget = "Syntax: GET filespec\n\
  604. Tell the remote Kermit server to send the named file or files.\n\
  605. If the filespec is omitted, then you are prompted for the remote and\n\
  606. local filenames separately.";
  607.  
  608. #ifdef OS2ONLY
  609. static 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.  
  625. static 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
  644. static char *hmxxlogi[] = { "\
  645. Syntax: 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.  
  670. static 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.  
  687. static char *hmxxsen = "\
  688. Syntax: SEND (or S) filespec [name]\n\n\
  689. Send the file or files specified by filespec.\n\
  690. filespec may contain wildcard characters '*' or '?'.  If no wildcards,\n\
  691. then '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
  695. static char *hmxxrsen = "\
  696. Syntax: RESEND filespec [name]\n\n\
  697. Resend the file or files, whose previous transfer was interrupted.\n\
  698. Picks up from where previous transfer left off, IF the receiver was told\n\
  699. to SET FILE INCOMPLETE KEEP.  Only works for binary-mode transfers.\n\
  700. Requires the other Kermit to have RESEND capability.";
  701.  
  702. static char *hmxxrget = "\
  703. Syntax: REGET filespec\n\n\
  704. Ask a server to RESEND a file to C-Kermit.";
  705.  
  706. static char *hmxxpsen = "\
  707. Syntax: PSEND filespec position [name]\n\n\
  708. Just like SEND, except sends the file starting at the given byte position.";
  709. #endif /* NORESEND */
  710.  
  711. #ifndef NOMSEND
  712. static char *hmssmse = "\
  713. Syntax: MSEND filespec [ filespec [ ... ] ]\n\n\
  714. Send the files specified by the filespecs.  One or more filespecs may be\n\
  715. listed, separated by spaces.  Any or all filespecs may contain wildcards\n\
  716. and they may be in different directories.  An alternate name cannot be given.";
  717.  
  718. static char *hmssadd = "\
  719. Syntax: ADD filespec [ <mode> [ <as-name> ] ]\n\n\
  720. Add the file or files to the current SEND list.  Use SHOW SEND-LIST and\n\
  721. CLEAR SEND-LIST to display and clear the list, use SEND by itself to send it.";
  722. #endif /* NOMSEND */
  723.  
  724. #ifndef NOSERVER
  725. static char *hmxxser = "Syntax: SERVER\n\n\
  726. Enter server mode on the currently selected line.  All further commands\n\
  727. will be taken in packet form from the other Kermit program.  Use FINISH\n\
  728. or BYE to get C-Kermit out of server mode.";
  729. #endif /* NOSERVER */
  730.  
  731. static char *hmhset[] = { "\
  732. The 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
  739. static 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.  
  761. static 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
  770. static 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
  785. static 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.  
  875. static 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.  
  995. static 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.  
  1008. static 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 \
  1012. bytes.\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.  
  1113. static 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
  1122. static char *hsetsrv[] = {"\
  1123. SET 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.  
  1144. static char *hmhrmt[] = { "\
  1145. The 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
  1153. static 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.  
  1188. static 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
  1196. static char *ifxhlp[] = { "\
  1197. Syntax: 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.  
  1205. static char *forhlp[] = { "\
  1206. Syntax: 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.  
  1211. static char *whihlp[] = { "\
  1212. Syntax: 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.  
  1218. static 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.  
  1229. static 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.  
  1238. static 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.  
  1247. static 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.  
  1255. static 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.  
  1262. static 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.  
  1284. static 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.  
  1298. static 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.  
  1304. static 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
  1312. static 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.  
  1321. static 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
  1335. static 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.  
  1346. static 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
  1366. static 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.  
  1377. static 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
  1385. extern int nopush;
  1386. static 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
  1396. static 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
  1409. static 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
  1422. static 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.  
  1434. static 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
  1452. static 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.  
  1461. static 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.  
  1475. static 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.  
  1525. int
  1526. dohlp(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.  
  1536. case 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
  1545. case XXASS:                /* assign */
  1546.     return(hmsga(hxxass));
  1547.  
  1548. case XXASK:                /* ask */
  1549.     return(hmsga(hxxask));
  1550.  
  1551. case XXASKQ:
  1552.     return(hmsga(hxxaskq));
  1553.  
  1554. case XXAPC:
  1555.     return(hmsg("Syntax: APC text\n\
  1556. Echoes the text in the form of a VT220/320/420 Application Program Command.\n\
  1557. Use the APC command to send commands to MS-DOS Kermit 3.13 or later."));
  1558. #endif /* NOSPL */
  1559.  
  1560. #ifndef NOFRILLS
  1561. case XXBUG:
  1562.     return(hmsg("Describes how to get technical support."));
  1563. #endif /* NOFRILLS */
  1564.  
  1565. #ifndef NOSPL
  1566. case XXBEEP:
  1567. #ifdef OS2
  1568.     return(hmsg("Syntax: BEEP [ { ERROR, INFORMATION, WARNING } ]\n\
  1569. Generates 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\
  1571. Default is INFORMATION."));
  1572. #else /* OS2 */
  1573.     return(hmsg("Syntax: BEEP\n\
  1574. Sends a BEL character to your terminal."));
  1575. #endif /* OS2 */
  1576. #endif /* NOSPL */
  1577.  
  1578. case XXBYE:                /* BYE */
  1579.     return(hmsg(hmxxbye));
  1580.  
  1581. case XXCHK:                /* check */
  1582.     return(hmsg("\
  1583. Syntax: CHECK name\n\
  1584. Checks to see if the named feature is included in this version of C-Kermit.\n\
  1585. To list the features you can check, type \"check ?\"."));
  1586.  
  1587. #ifndef NOFRILLS
  1588. case XXCLE:                /* clear */
  1589. #ifdef OS2
  1590.     return(hmsg("\
  1591. Syntax: CLEAR [ { COMMAND-SCREEN, DEVICE, DEVICE-AND-INPUT, INPUT,\n\
  1592.                   SCROLLBACK, SEND-LIST, TERMINAL-SCREEN } ]\n\
  1593. COMMAND-SCREEN clears the current command screen\n\
  1594. DEVICE clears the current port or network input buffer\n\
  1595. DEVICE-AND-INPUT, the default, clears both the device and the INPUT buffer\n\
  1596. INPUT clears the INPUT command buffer\n\
  1597. SCROLLBACK empties the scrollback buffer including the current screen\n\
  1598. SEND-LIST clears the current SEND list (see ADD)\n\
  1599. TERMINAL-SCREEN clears the current screen a places it into the scrollback\n\
  1600.     buffer."));
  1601. #else /* not OS2 */    
  1602.     return(hmsg("\
  1603. Syntax: CLEAR [ { DEVICE, INPUT, DEVICE-AND-INPUT, DIAL-STATUS, SEND-LIST }\
  1604.  ]\n\
  1605. Clears the communications device input buffer, the INPUT command buffer,\n\
  1606. or both.  CLEAR SEND-LIST clears the SEND list (see ADD).  CLEAR DIAL-STATUS\n\
  1607. clears the \\v(dialstatus) variable.  The default is DEVICE-AND-INPUT."));
  1608. #endif /* OS2 */
  1609. #endif /* NOFRILLS */
  1610.  
  1611. case XXCLO:                /* close */
  1612.     return(hmsga(hmxxclo));
  1613.  
  1614. case XXCOM:                /* comment */
  1615. #ifndef STRATUS /* Can't use # for comments in Stratus VOS */
  1616.     return(hmsg("\
  1617. Syntax: COMMENT text\n\
  1618. Example: COMMENT - this is a comment.\n\n\
  1619. Introduces a comment.  Beginning of command line only.  Commands may also\n\
  1620. have trailing comments, introduced by ; or #."));
  1621. #else
  1622.     return(hmsg("\
  1623. Syntax: COMMENT text\n\
  1624. Example: COMMENT - this is a comment.\n\n\
  1625. Introduces a comment.  Beginning of command line only.  Commands may also\n\
  1626. have trailing comments, introduced by ; (semicolon)."));
  1627. #endif /* STRATUS */
  1628.  
  1629. #ifndef NOLOCAL
  1630. case 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
  1638. case XXCPY:
  1639.     return(hmsg("Syntax: COPY source destination\n\n\
  1640. Copy the file 'source' to 'destination'."));
  1641. #endif /* NOFRILLS */
  1642.  
  1643. case XXCWD:                /* cd / cwd */
  1644. #ifdef vms
  1645.     return(hmsg("Syntax: CD [ directory or device:directory ]\n\
  1646. Change 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\
  1653. Change Directory.  If directoryname is not specified, changes to directory\n\
  1654. specified by HOME environment variable, if any."));
  1655. #else
  1656.     return(hmsg("Syntax: CD [ directoryname ]\n\
  1657. Change Directory.  \n\
  1658. If directory name omitted, changes to your home directory."));
  1659. #endif /* OS2 */
  1660. #endif /* datageneral */
  1661. #endif /* vms */
  1662.  
  1663. #ifndef NOSPL
  1664. case XXDCL:
  1665.     return(hmsg("Syntax:  DECLARE arrayname[size]\n\
  1666. Example: DECLARE \\&a[20]\n\n\
  1667. Declares an array of the given size.  Array elements can be used just like\n\
  1668. any other variables."));
  1669.  
  1670. case XXDEF:                /* DEFINE */
  1671.     return(hmsga(hxxdef));
  1672.  
  1673. case XXUNDEF:                /* UNDEFINE */
  1674.     return(hmsg("Syntax:  UNDEFINE variable-name\n\
  1675. Undefines a macro or variable."));
  1676. #endif /* NOSPL */
  1677.  
  1678. #ifndef NOFRILLS
  1679. case XXDEL:                /* delete */
  1680.     return(hmsg("Syntax: DELETE filespec\n\n\
  1681. Delete a local file or files.  RM is a synonym for DELETE."));
  1682. #endif /* NOFRILLS */
  1683.  
  1684. #ifndef NODIAL
  1685. case XXDIAL:                /* DIAL, etc... */
  1686.     return(hmsga(hxxdial));
  1687.  
  1688. case XXPDIA:                /* PDIAL */
  1689.     return(hmsg("Syntax: PDIAL phonenumber\n\n\
  1690. Partially dial a phone number.  Like DIAL but does not wait for carrier\n\
  1691. or CONNECT message."));
  1692.  
  1693. case XXRED:
  1694.     return(hmsg("Redial the number given in the most recent DIAL commnd."));
  1695.  
  1696. case XXANSW:                /* ANSWER */
  1697.     return(hmsga(hxxansw));
  1698.  
  1699. case XXLOOK:                /* LOOKUP number in directory */
  1700.     return(hmsga(hxxlook));
  1701. #endif /* NODIAL */
  1702.  
  1703. case XXDIR:                /* directory */
  1704.     return(hmsg("Syntax: DIRECTORY [ filespec ]\n\
  1705. Display a directory listing of local files."));
  1706.  
  1707. #ifndef NOSERVER
  1708. #ifndef NOFRILLS
  1709. case XXDIS:
  1710.     return(hmsg("Syntax: DISABLE command\n\n\
  1711. Security for the C-Kermit server.  Prevent the client Kermit program from\n\
  1712. executing the named REMOTE command, such as CD, DELETE, RECEIVE, etc."));
  1713. #endif /* NOFRILLS */
  1714. #endif /* NOSERVER */
  1715.  
  1716. #ifndef NOSPL
  1717. case XXDO:                /* do */
  1718.     return(hmsg("Syntax: [ DO ] macroname [ arguments ]\n\n\
  1719. Execute a macro that was defined by the DEFINE command.  The word DO\n\
  1720. can be omitted.  Trailing argument words, if any, are automatically\n\
  1721. assigned to the macro argument variables \\%1, \\%2, etc."));
  1722. #endif /* NOSPL */
  1723.  
  1724. #ifndef NOSPL
  1725. case XXDEC:
  1726.     return(hmsga(hxxdec));
  1727. #endif /* NOSPL */
  1728.  
  1729. case XXECH:                /* echo */
  1730.     return(hmsg("Syntax: ECHO text\n\
  1731. Display the text on the screen, followed by a line terminator.  The ECHO\n\
  1732. text may contain backslash codes.  Example: ECHO \\7Wake up!\\7")); 
  1733.  
  1734. case XXXECH:                /* xecho */
  1735.     return(hmsg("Syntax: XECHO text\n\
  1736. Just like ECHO but does not add a line terminator to the text.  See ECHO."));
  1737.  
  1738. #ifndef NOSERVER
  1739. #ifndef NOFRILLS
  1740. case XXENA:
  1741.     return(hmsg("Syntax: ENABLE capability\n\n\
  1742. For use with server mode.  Allow the client Kermit program access to the\n\
  1743. named capability, such as CD, DELETE, RECEIVE, etc.  Opposite of DISABLE."));
  1744. #endif /* NOFRILLS */
  1745. #endif /* NOSERVER */
  1746.  
  1747. #ifndef NOSPL
  1748. case XXEND:                /* end */
  1749.     return(hmsg("Syntax: END [ number [ message ] ]\n\
  1750. Exit from the current macro or TAKE file, back to wherever invoked from.\n\
  1751. Number is return code.  Message, if given, is printed."));
  1752.  
  1753. case XXEVAL:                /* evaluate */
  1754.     return(hmsga(hmxxeval));
  1755. #endif /* NOSPL */
  1756.  
  1757. #ifndef NOFRILLS
  1758. case XXERR:                /* e-packet */
  1759.     return(hmsg("Syntax: E-PACKET\n\
  1760. Send an Error packet to the other Kermit."));
  1761. #endif /* NOFRILLS */
  1762.  
  1763. case XXEXI:                /* exit */
  1764. case XXQUI:
  1765.     return(hmsg("Syntax: QUIT (or EXIT) [ number ]\n\
  1766. Exit from the Kermit program, closing all open files and devices, optionally\n\
  1767. setting the program's return code to the given number."));
  1768.  
  1769. case XXFIN:
  1770.     return(hmsg("Syntax: FINISH\n\
  1771. Tell the remote Kermit server to shut down without logging out."));
  1772.  
  1773. #ifndef NOSPL
  1774. case XXFOR:
  1775.     return(hmsga(forhlp));
  1776. #endif /* NOSPL */
  1777.  
  1778. case XXGET:
  1779.     return(hmsg(hmxxget));
  1780.  
  1781. #ifndef NOSPL
  1782. #ifndef NOFRILLS
  1783.   case XXGOK:
  1784.     return(hmsg("Syntax: GETOK prompt\n\
  1785. Print the prompt, make user type 'yes', 'no', or 'ok', and set SUCCESS or\n\
  1786. FAILURE accordingly."));
  1787. #endif /* NOFRILLS */
  1788. #endif /* NOSPL */
  1789.  
  1790. #ifndef NOSPL
  1791. case XXGOTO:
  1792.     return(hmsg("Syntax: GOTO label\n\
  1793. In a TAKE file or macro, go to the given label.  A label is a word on the\n\
  1794. left margin that starts with a colon (:).  Example:\n\n\
  1795. :oofa\n\
  1796. echo Hello!\n\
  1797. goto oofa"));
  1798. #endif /* NOSPL */
  1799.  
  1800. case XXHAN:
  1801.     return(hmsg("Syntax: HANGUP\n\
  1802. Hang up the phone or network connection."));    
  1803.  
  1804. case 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.  
  1816. case XXINT:
  1817.     return(hmsg("Give a brief introduction to C-Kermit."));    
  1818.  
  1819. #ifndef NOSPL
  1820. case XXIF:
  1821.     return(hmsga(ifhlp));
  1822.  
  1823. case XXINC:
  1824.     return(hmsga(hxxinc));
  1825.  
  1826. case XXINP:
  1827.    return(hmsga(hxxinp));
  1828. #endif /* NOSPL */
  1829.  
  1830. #ifdef CK_MINPUT
  1831. case XXMINP:
  1832.     return(hmsga(hmxxminp));
  1833. #endif /* CK_MINPUT */
  1834.  
  1835. #ifndef NOSPL
  1836. case XXREI:
  1837.     return(hmsg("Syntax: REINPUT n string\n\n\
  1838. Look for the string in the text that has recently been INPUT, set SUCCESS\n\
  1839. or FAILURE accordingly.  Timeout, n, must be specified but is ignored."));
  1840. #endif /* NOSPL */
  1841.  
  1842. #ifndef NOFRILLS
  1843. case XXREN:
  1844.     return(hmsg("Syntax: RENAME oldname newname\n\n\
  1845. Change the name of file 'oldname' to 'newname'."));
  1846. #endif /* NOFRILLS */
  1847.  
  1848. #ifndef NOSPL
  1849. case XXLBL:
  1850.     return(hmsg("\
  1851. Introduce a label, like :loop, for use with GOTO in TAKE files or macros.\n\
  1852. See GOTO."));
  1853. #endif /* NOSPL */
  1854.  
  1855. case XXLOG:
  1856.     return(hmsga(hmxxlg));
  1857.  
  1858. #ifndef NOSCRIPT
  1859. case XXLOGI:
  1860.     return(hmsga(hmxxlogi));
  1861. #endif
  1862.  
  1863. #ifndef NOFRILLS
  1864. case XXMAI:
  1865.     return(hmsg("Syntax: MAIL filename address\n\n\
  1866. Send the file to the remote Kermit, which must be in RECEIVE or SERVER mode,\n\
  1867. and request that the remote host deliver the file as electronic mail to the\n\
  1868. given address.  Example: MAIL BUG.TXT KERMIT@CUVMA"));
  1869. #endif /* NOFRILLS */
  1870.  
  1871. #ifndef NOMSEND
  1872. case XXMSE:
  1873.     return(hmsg(hmssmse));
  1874.  
  1875. case XXADD:
  1876.     return(hmsg(hmssadd));
  1877.  
  1878. case XXMMOVE:
  1879.     return(hmsg("MMOVE is exactly like MSEND, except each file that is\n\
  1880. sent successfully is deleted after it is sent."));
  1881. #endif /* NOMSEND */
  1882.  
  1883. #ifndef NOSPL
  1884. case XXOPE:
  1885.     return(hmsga(openhlp));
  1886. #endif /* NOSPL */
  1887.  
  1888. case XXNEW:
  1889.     return(hmsg(
  1890. " Print news of new features since publication of \"Using C-Kermit\"."));
  1891.  
  1892. #ifndef NOSPL
  1893. case XXOUT:
  1894.     return(hmsg("Syntax: OUTPUT text\n\n\
  1895. Send the text out the currently selected line, as if you had typed it\n\
  1896. during CONNECT mode.  The text may contain backslash codes.  Example:\n\n\
  1897.   OUTPUT help\\13"));
  1898. #endif /* NOSPL */
  1899.  
  1900. #ifdef ANYX25
  1901. case XXPAD:
  1902.     return(hmsga(hxxpad));
  1903. #endif /* ANYX25 */
  1904.  
  1905. #ifndef NOSPL
  1906. case XXPAU:
  1907.     return(hmsga(hxxpau));
  1908.  
  1909. case XXMSL:
  1910.     return(hmsga(hxxmsl));
  1911. #endif /* NOSPL */
  1912.  
  1913. #ifdef TCPSOCKET
  1914. case XXPNG:
  1915.     return(hmsg("Syntax: PING [ IP-hostname-or-number ]\n\n\
  1916. Check if given IP network host is reachable.  Default host is from most\n\
  1917. recent SET HOST or TELNET command.  Runs system PING program, if any."));
  1918.  
  1919. case XXFTP:
  1920.     return(hmsg("Syntax: FTP [ IP-hostname-or-number ]\n\n\
  1921. Make an FTP connection to the given IP host or, if no host specified, to the\n\
  1922. current host.  Uses the system's FTP program, if any.\n"));
  1923. #endif /* TCPSOCKET */
  1924.  
  1925. #ifndef NOFRILLS
  1926. case XXPRI:
  1927.     return(hmsg("Syntax: PRINT file [ options ]\n\n\
  1928. Print the local file on a local printer with the given options."));
  1929. #endif /* NOFRILLS */
  1930.  
  1931. case XXPWD:
  1932.     return(hmsg("Syntax: PWD\n\
  1933. Print the name of the current working directory."));
  1934.  
  1935. #ifndef NOSPL
  1936. case XXREA:
  1937.     return(hmsg("Syntax: READ variablename\n\
  1938. Read a line from the currently open READ or !READ file into the variable\n\
  1939. (see OPEN)."));
  1940. #endif /* NOSPL */
  1941.  
  1942. case XXREC:
  1943.     return(hmsga(hmxxrc));
  1944.  
  1945. case XXREM:
  1946.     y = cmkey(remcmd,nrmt,"Remote command","",xxstring);
  1947.     return(dohrmt(y));
  1948.  
  1949. #ifndef NOSPL
  1950. case XXRET:
  1951.     return(hmsg("Syntax: RETURN [ value ]\n\
  1952. Return from a macro.  An optional return value can be given for use with\n\
  1953. with \\fexecute(macro), which allows macros to be used like functions."));
  1954. #endif /* NOSPL */
  1955. case XXSEN:
  1956.     return(hmsg(hmxxsen));
  1957. case XXMOVE:
  1958.     return(hmsg("MOVE is exactly like SEND, except each file that is\n\
  1959. sent successfully is deleted after it is sent."));
  1960. #ifndef NORESEND
  1961. case XXRSEN:
  1962.     return(hmsg(hmxxrsen));
  1963. case XXREGET:
  1964.     return(hmsg(hmxxrget));
  1965. case XXPSEN:
  1966.     return(hmsg(hmxxpsen));
  1967. #endif /* NORESEND */
  1968.  
  1969. #ifndef NOSERVER
  1970. case XXSER:
  1971.     return(hmsg(hmxxser));
  1972. #endif /* NOSERVER */
  1973.  
  1974. #ifndef NOJC
  1975. case XXSUS:
  1976.     return(hmsg("Syntax: SUSPEND or Z\n\
  1977. Suspend Kermit.  Continue Kermit with the appropriate system command,\n\
  1978. such as fg."));
  1979. #endif /* NOJC */
  1980.  
  1981. case XXSET:
  1982.     y = cmkey(prmtab,nprm,"Parameter","",xxstring);
  1983.     debug(F101,"HELP SET y","",y);
  1984.     return(dohset(y));
  1985.  
  1986. #ifndef NOPUSH
  1987. case 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
  1995. case XXFUN:
  1996.     return(hmsg("Syntax: REDIRECT command\n\
  1997. Run the given local command with its standard input and output redirected\n\
  1998. to the current SET LINE or SET HOST communications path.\n\
  1999. Synonym: < (Left angle bracket)."));
  2000. #endif /* CK_REDIR */
  2001.  
  2002. #ifdef CK_REXX
  2003. case XXREXX:
  2004.     return(hmsg("Syntax: REXX text\n\
  2005. The text is a Rexx command to be executed. The \\v(rexx) variable is set to\n\
  2006. the Rexx command's return value.\n\
  2007. To execute a rexx program file, use:  REXX call <filename>\n\
  2008. Rexx programs may call C-Kermit functions by placing the C-Kermit command in\n\
  2009. single quotes.  For instance:  'set parity none'."));
  2010. #endif /* CK_REXX */
  2011. #endif /* NOPUSH */
  2012.  
  2013. #ifndef NOSHOW
  2014. case XXSHO:
  2015.     return(hmsg("\
  2016. Display current values of various items (SET parameters, variables, etc).\n\
  2017. Type SHOW ? for a list of categories."));
  2018. #endif /* NOSHOW */
  2019.  
  2020. case XXSPA:
  2021. #ifdef datageneral
  2022.     return(hmsg("\
  2023. Display disk usage in current device, directory,\n\
  2024. or return space for a specified device, directory."));
  2025. #else
  2026.     return(hmsg("Syntax: SPACE\n\
  2027. Display disk usage in current device and/or directory"));
  2028. #endif
  2029.  
  2030. case XXSTA:
  2031.     return(hmsg("Syntax: STATISTICS\n\
  2032. Display statistics about most recent file transfer"));
  2033.  
  2034. #ifndef NOSPL
  2035. case XXSTO:
  2036.     return(hmsg("Syntax: STOP [ number [ message ] ]\n\
  2037. Stop executing the current macro or TAKE file and return immediately to\n\
  2038. the C-Kermit prompt.  Number is a return code.  Message printed if given."));
  2039. #endif /* NOSPL */
  2040.  
  2041. case XXTAK:
  2042.     return(hmsg("Syntax: TAKE filename\n\
  2043. Take Kermit commands from the named file.  Kermit command files may\n\
  2044. themselves contain TAKE commands, up to a reasonable depth of nesting."));
  2045.  
  2046. #ifdef TCPSOCKET
  2047. case XXTEL:
  2048.     return(hmsg("Syntax: TELNET [ host [ service ] ]\n\
  2049. Equivalent to SET NETWORK TCP/IP, SET HOST host [ service ], followed by\n\
  2050. CONNECT.  If host is omitted, previous connection (if any) is resumed."));
  2051. #ifdef RLOGCODE
  2052. case XXRLOG:
  2053.     return(hmsg("Syntax: RLOGIN [ host [ username ] ]\n\
  2054. Makes an interactive connection to the host using RLOGIN protocol.\n\
  2055. If host is omitted, previous connection (if any) is resumed."));
  2056. #endif /* RLOGCODE */
  2057. #endif /* TCPSOCKET */
  2058.  
  2059. #ifndef NOXMIT
  2060. case XXTRA:
  2061.     return(hmsga(hxxxmit));
  2062. #endif /* NOXMIT */
  2063.  
  2064. #ifndef NOFRILLS
  2065. case XXTYP:
  2066.     return(hmsg("Syntax: TYPE file\n\
  2067. Display a file on the screen.  Pauses if you type Ctrl-S, resumes if you\n\
  2068. type Ctrl-Q, returns immediately to C-Kermit prompt if you type Ctrl-C."
  2069. ));
  2070. #endif /* NOFRILLS */
  2071.  
  2072. #ifdef OS2ONLY
  2073. case XXUPD:
  2074.     return(hmsga(hmxxupd));
  2075. #endif /* OS2ONLY */
  2076.  
  2077. #ifndef NOSPL
  2078. case XXWHI:
  2079.     return(hmsga(whihlp));
  2080.  
  2081. case XXSWIT:
  2082.     return(hmsga(swihlp));
  2083. #endif /* NOSPL */
  2084.  
  2085. #ifndef NOCSETS
  2086. case XXXLA:
  2087.     return(hmsga(hxxxla));
  2088. #endif /* NOCSETS */
  2089.  
  2090. case XXVER:
  2091.     return(hmsg("Syntax: VERSION\nDisplays the program version number."));
  2092.  
  2093. #ifndef NOSPL
  2094. case XXWAI:
  2095.     return(hmsga(hxxwai));
  2096. #endif /* NOSPL */
  2097.  
  2098. #ifndef NOFRILLS
  2099. case XXWHO:
  2100.     return(hmsg("Syntax: WHO [ user ]\nDisplays info about the user."));
  2101.  
  2102. case XXWRI:
  2103.     return(hmsga(hxxwri));
  2104.  
  2105. case XXWRL:
  2106.     return(hmsg(
  2107. "WRITE-LINE (WRITELN) is just like WRITE, but includes a line terminator\n\
  2108. at the end of text.  See WRITE."));
  2109. #endif /* NOFRILLS */
  2110.  
  2111. #ifndef NOSPL
  2112. case XXIFX:
  2113.     return(hmsga(ifxhlp));
  2114.  
  2115. case XXGETC:                /* GETC */
  2116.     return(hmsga(hxxgetc));
  2117.  
  2118. case XXFWD:                /* FORWARD */
  2119.     return(hmsg(
  2120. "Like GOTO, but searches only forward for the label.  See GOTO."));
  2121.  
  2122. case XXLOCAL:                /* LOCAL */
  2123.     return(hmsg(
  2124. "Declares a variable to be local to the current macro or command file."));
  2125. #endif /* NOSPL */
  2126.  
  2127. case XXVIEW:
  2128.     return(hmsg(
  2129. "View the terminal emulation screen even when there is no connection.\n"));
  2130.  
  2131. case XXASC:
  2132.     return(hmsg("Synonym for SET FILE TYPE TEXT.\n"));
  2133.  
  2134. case XXBIN:
  2135.     return(hmsg("Synonym for SET FILE TYPE BINARY.\n"));
  2136.  
  2137. case XXDATE:
  2138.     return(hmsg("Prints the current date and time.\n"));
  2139.  
  2140. case XXRETR:
  2141.     return(hmsg(
  2142. "Just like GET but asks the server to delete each file that has been\n\
  2143. sent successfully.\n"));
  2144.  
  2145. case XXEIGHT:
  2146.     return(hmsg(
  2147. "Equivalent to SET PARITY NONE, SET COMMAND BYTE 8, SET TERMINAL BYTE 8.\n"));
  2148.  
  2149. case XXSAVE:
  2150.     return(hmsg("Syntax: SAVE KEYMAP <file>\n\
  2151. Saves current keymap definitions to file, \"keymap.ini\" by default.")); 
  2152. #endif /* NOHELP */
  2153.  
  2154. default:
  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.  
  2164. int
  2165. hmsg(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.  
  2174. int                    /* Print an array of lines, */
  2175. hmsga(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.  
  2188. int                    /* Print an array of lines, */
  2189. hmsga(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
  2225. static 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.  
  2244. static 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
  2250. static 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.  
  2258. static 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 \
  2267. colors.\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
  2303. static 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.  
  2311. static 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
  2329. static 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.  
  2351. static 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
  2363. static 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.  
  2399. static 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
  2734. static 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
  2756. static 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.  
  2793. static 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
  2830. static 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
  2860. static 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.  
  2871. static 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.  
  2887. static 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.  
  2905. static 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.  
  2913. static 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.  
  2947. static 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.  
  2984. static 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.  
  3042. int
  3043. dohset(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.  
  3051. case XYATTR:
  3052.     return(hmsga(hsetat));
  3053.  
  3054. case XYBACK:
  3055.     return(hmsga(hsetbkg));
  3056.  
  3057. #ifdef OS2
  3058. case XYBELL:
  3059.     return(hmsg("SET BELL { AUDIBLE [ { BEEP, SYSTEM-SOUNDS } ], VISIBLE, NONE }\n\
  3060. specifies how incoming Ctrl-G (bell) characters are handled in CONNECT mode\n\
  3061. and how command warnings are presented in command mode.  AUDIBLE means\n\
  3062. either a beep or a system-sound is generated; VISIBLE means the screen is\n\
  3063. flashed momentarily.\n"));
  3064.  
  3065. case XYPRTY:
  3066.     return(hmsg("SET PRIORITY { REGULAR, FOREGROUND-SERVER, TIME-CRITICAL }\n\
  3067. specifies at which priority level the communication and screen update threads\n\
  3068. should operate at.  The default value is FOREGROUND-SERVER.\n"));
  3069. #endif /* OS2 */
  3070.  
  3071. #ifdef DYNAMIC
  3072. case XYBUF:
  3073.     return(hmsga(hsetbuf));
  3074. #endif /* DYNAMIC */
  3075.  
  3076. #ifndef NOLOCAL
  3077. case XYCARR:
  3078.     return(hmsga(hsetcar));
  3079. #endif /* NOLOCAL */
  3080.  
  3081. #ifndef NOSPL
  3082. case XYCASE:
  3083.     return(hmsg("Syntax: SET CASE { ON, OFF }\n\
  3084. Tells whether alphabetic case is significant in string comparisons\n\
  3085. done by INPUT, IF, and other commands.  This setting is local to the\n\
  3086. current macro or command file, and inherited by subordinates."));
  3087.  
  3088. #endif /* NOSPL */
  3089.  
  3090. case XYCMD:
  3091.     return(hmsga(hsetcmd));
  3092.  
  3093. case XYIFD:
  3094.     return(hmsg("Syntax: SET INCOMPLETE { DISCARD, KEEP }\n\
  3095. Discard or Keep incompletely received files, default is KEEP."));
  3096.  
  3097. #ifndef NOSPL
  3098. case XYINPU:
  3099.     return(hmsga(hxyinp));
  3100. #endif /* NOSPL */
  3101.  
  3102. case XYCHKT:
  3103.     return(hmsga(hmxychkt));
  3104.  
  3105. #ifndef NOSPL
  3106. case XYCOUN:
  3107.     return(hmsg("Syntax:  SET COUNT number\n\
  3108. Example: SET COUNT 5\n\
  3109. Set up a loop counter, for use with IF COUNT.  Local to current macro\n\
  3110. or command file, inherited by subordinate macros and command files."));
  3111. #endif /* NOSPL */
  3112.  
  3113. #ifndef NOLOCAL
  3114. case XYDEBU:
  3115. #ifdef DEBUG    
  3116.     return(hmsg("Syntax: SET DEBUG { SESSION, ON, OFF }\n\
  3117. SESSION means display control and 8-bit characters symbolically during\n\
  3118. CONNECT mode.  ON means log debugging information to file debug.log."));
  3119. #else
  3120.     return(hmsg("Syntax: SET DEBUG { SESSION, OFF }\n\
  3121. SESSION means display control and 8-bit characters symbolically during\n\
  3122. CONNECT mode."));
  3123. #endif /* DEBUG */
  3124. #else
  3125. #ifdef DEBUG
  3126. case XYDEBU:
  3127.     return(hmsg("Syntax: SET DEBUG { ON, OFF }\n\
  3128. ON means log debugging information to file debug.log."));
  3129. #endif /* DEBUG */
  3130. #endif /* NOLOCAL */
  3131.  
  3132. case XYDFLT:
  3133.     return(hmsg("Syntax: SET DEFAULT directory\n\
  3134. Change directory.  Equivalent to CD command."));
  3135.  
  3136. case XYDELA: 
  3137.     return(hmsg("Syntax: SET DELAY number\n\
  3138. Number of seconds to wait before sending first packet after SEND command."));
  3139.  
  3140. #ifndef NODIAL
  3141. case XYDIAL:
  3142.     return(hmsga(hmxydial));
  3143. #endif /* NODIAL */
  3144.  
  3145. #ifdef UNIX
  3146. case XYSUSP:
  3147.     return(hmsg("Syntax: SET SUSPEND { OFF, ON }\n\n\
  3148. Disables SUSPEND command, suspend signals, and <esc-char>Z during CONNECT."));
  3149. #endif
  3150.  
  3151. #ifndef NOSCRIPT
  3152. case XYSCRI:
  3153.     return(hmsg("Syntax: SET SCRIPT ECHO { OFF, ON }\n\n\
  3154. Disables/Enables echoing of SCRIPT command operation."));
  3155. #endif /* NOSCRIPT */
  3156.  
  3157. case XYTAKE:
  3158.     return(hmsga(hxytak));
  3159.  
  3160. #ifndef NOLOCAL
  3161. case XYTERM:
  3162.     return(hmsga(hxyterm));
  3163.  
  3164. case XYDUPL:
  3165.     return(hmsg("Syntax: SET DUPLEX { FULL, HALF }\n\n\
  3166. During CONNECT: FULL means remote host echoes, HALF means C-Kermit\n\
  3167. does its own echoing."));
  3168.  
  3169. case XYLCLE:
  3170.     return(hmsg("Syntax: SET LOCAL-ECHO { OFF, ON }\n\n\
  3171. During CONNECT: OFF means remote host echoes, ON means C-Kermit\n\
  3172. does its own echoing.  Synonym for SET DUPLEX { FULL, HALF }."));
  3173.  
  3174. case XYESC:
  3175. #ifdef OS2
  3176.     return(hmsg("Syntax: SET ESCAPE number\n\n\
  3177. Decimal 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\
  3179. C-Kermit prompt or followed by ? to see other options."));
  3180. #else
  3181.     return(hmsg("Syntax: SET ESCAPE number\n\n\
  3182. Decimal 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\
  3184. C-Kermit prompt or followed by ? to see other options."));
  3185. #endif /* OS2 */
  3186. #endif /* NOLOCAL */
  3187.  
  3188. #ifdef OS2
  3189. case XYPRTR:
  3190.     return(hmsga(hxyprtr));
  3191. #endif /* OS2 */
  3192.  
  3193. case XYEXIT:
  3194.     return(hmsga(hxyexit));
  3195.  
  3196. case XYFILE:
  3197.     return(hmsga(hmxyf));
  3198.  
  3199. case XYFLOW:
  3200.     return(hmsga(hmxyflo));
  3201.  
  3202. case XYHAND:
  3203.    return(hmsga(hmxyhsh));
  3204.  
  3205. #ifdef NETCONN
  3206. case XYHOST:
  3207. return(hmsga(hxyhost));
  3208. case XYNET:
  3209. return(hmsga(hxynet));
  3210.  
  3211. #ifndef NOTCPOPTS
  3212. #ifdef SOL_SOCKET
  3213. case XYTCP:
  3214. return(hmsga(hxytcp));
  3215. #endif /* SOL_SOCKET */
  3216. #endif /* NOTCPOPTS */
  3217.  
  3218. #ifdef ANYX25
  3219. case XYX25:
  3220.     return(hmsga(hxyx25));
  3221.  
  3222. case XYPAD:
  3223.     return(hmsg("Syntax: SET PAD name value\n\
  3224. Set a PAD X.3 parameter with a desired value."));
  3225. #endif /* ANYX25 */ 
  3226. #endif /* NETCONN */
  3227.  
  3228. #ifndef NOSPL
  3229. case XYOUTP:
  3230.     return(hmsg("Syntax: SET OUTPUT PACING <number>\n\
  3231. How many milliseconds to pause after sending each OUTPUT character."));
  3232. #endif /* NOSPL */
  3233.  
  3234. #ifndef NOSETKEY
  3235. case XYKEY:                /* SET KEY */
  3236.     return(hmsga(hmhskey));
  3237. #endif /* NOSETKEY */
  3238.  
  3239. #ifndef NOCSETS
  3240. case XYLANG:
  3241.     return(hmsg("Syntax: SET LANGUAGE name\n\
  3242. Selects language-specific translation rules for text-mode file transfers.\n\
  3243. Used with SET FILE CHARACTER-SET and SET TRANSFER CHARACTER-SET when one\n\
  3244. of these is ASCII."));
  3245. #endif /* NOCSETS */
  3246.  
  3247. case XYLINE:
  3248.     printf("\nSyntax: SET LINE devicename\n\
  3249. or:     SET PORT devicename\n\n\
  3250. Select communication device to use.  Normally %s.\n",dftty);
  3251.     if (!dfloc) {
  3252.     printf("\
  3253. If you SET LINE to other than %s, then Kermit\n",dftty);
  3254.     printf("\
  3255. will be in 'local' mode; SET LINE alone will reset Kermit to remote mode.\n\
  3256. To 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
  3263. case XYMACR:
  3264.     return(hmsga(hxymacr));
  3265. #endif /* NOSPL */
  3266.  
  3267. #ifndef NODIAL
  3268. case XYMODM:
  3269.     return(hmsga(hxymodm));
  3270. #endif /* NODIAL */
  3271.  
  3272. case XYPARI:
  3273.     return(hmsg("Syntax: SET PARITY name\n\n\
  3274. Parity to use during terminal connection and file transfer: EVEN, ODD, MARK,\n\
  3275. SPACE, or NONE.  Normally NONE."));
  3276.  
  3277. case XYPROM:
  3278.     return(hmsga(hmxyprm));
  3279.  
  3280. case XYQUIE:
  3281.     return(hmsg("Syntax: SET QUIET {ON, OFF}\n\n\
  3282. Normally OFF.  ON disables most information messages during interactive\n\
  3283. operation."));
  3284.  
  3285. #ifdef CK_SPEED
  3286. case XYQCTL:
  3287.     return(hmsga(hmxyqctl));
  3288. #endif /* CK_SPEED */
  3289.  
  3290. case XYRETR:
  3291.     return(hmsg("Syntax: SET RETRY number\n\n\
  3292. How many times to retransmit a particular packet before giving up."));
  3293.  
  3294. #ifndef NOLOCAL
  3295. #ifdef UNIX
  3296. case XYSESS:
  3297.     return(hmsg("Syntax: SET SESSION-LOG { BINARY, TEXT }\n\n\
  3298. If BINARY, record all CONNECT characters in session log.  If TEXT, strip\n\
  3299. out carriage returns."));
  3300. #else
  3301. #ifdef OSK
  3302. case XYSESS:
  3303.     return(hmsg("Syntax: SET SESSION-LOG { BINARY, TEXT }\n\n\
  3304. If BINARY, record all CONNECT characters in session log.  If TEXT, strip\n\
  3305. out linefeeds."));
  3306. #endif /* OSK */
  3307. #endif /* UNIX */
  3308.  
  3309. case XYSPEE:
  3310.     return(hmsg("Syntax: SET SPEED number\n\n\
  3311. Communication line speed for external tty line specified in most recent\n\
  3312. SET LINE command, in bits per second.  Type SET SPEED ? for a list of\n\
  3313. possible speeds."));
  3314. #endif /* NOLOCAL */
  3315.  
  3316. case XYRECV:
  3317.     return(hmsga(hxyrcv));
  3318. case XYSEND:
  3319.     return(hmsga(hxysnd));
  3320. case XYREPT:
  3321.     return(hmsga(hxyrpt));
  3322.  
  3323. #ifndef NOSERVER
  3324. case XYSERV:
  3325.     return(hmsga(hsetsrv));
  3326. #endif /* NOSERVER */
  3327.  
  3328. #ifdef TNCODE
  3329. case XYTEL:
  3330.     return(hmsga(hxytel));
  3331. #endif /* TNCODE */
  3332.  
  3333. #ifndef NOXMIT
  3334. case XYXMIT:
  3335.     return(hmsga(hsetxmit));
  3336. #endif /* NOXMIT */
  3337.  
  3338. #ifndef NOCSETS
  3339. case XYUNCS:
  3340.     return(hmsg("Syntax: SET UNKNOWN-CHAR-SET action\n\n\
  3341. DISCARD (default) means reject any arriving files encoded in unknown\n\
  3342. character sets.  KEEP means to accept them anyway."));
  3343. #endif /* NOCSETS */
  3344.  
  3345. #ifdef UNIX
  3346. case XYWILD:
  3347.     return(hmsg("Syntax: SET WILDCARD-EXPANSION { KERMIT, SHELL }\n\n\
  3348. KERMIT (the default) means C-Kermit expands filename wildcards in SEND\n\
  3349. and MSEND commands and incoming GET commands.  SHELL means your shell does \
  3350. it."));
  3351. #endif /* UNIX */
  3352.  
  3353. case XYWIND:
  3354.     return(hmsga(hxywind));
  3355.  
  3356. case XYXFER:
  3357.     return(hmsga(hxyxfer));
  3358.  
  3359. #ifdef OS2MOUSE
  3360. case XYMOUSE:
  3361.     return(hmsga(hxymouse));
  3362. #endif /* OS2MOUSE */
  3363.  
  3364. case XYALRM:
  3365.     return(hmsg("Syntax: SET ALARM [ <seconds> ]\n\n\
  3366. Number of seconds from now after which IF ALARM will succeed.\n\
  3367. 0 means no alarm."));
  3368.  
  3369. case XYPROTO:
  3370. #ifndef CK_XYZ
  3371.     return(hmsg("Syntax: SET PROTOCOL KERMIT\n\n\
  3372. Chooses the protocol to be used for transferring files.  KERMIT is the\n\
  3373. only 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
  3383. case XYPREFIX:
  3384.     return(hmsg("Syntax: SET PREFIXING { ALL, CAUTIOUS, MINIMAL, NONE }\n\n\
  3385. Selects the degree of control-character prefixing.  Also see HELP SET CONTROL."
  3386. ));
  3387. #endif /* CK_SPEED */
  3388.  
  3389. #ifdef OS2
  3390. case XYLOGIN:
  3391.     return(hmsg("Syntax: SET LOGIN { USERID, PASSWORD, PROMPT } <text>\n\n\
  3392. Provides access information for use by login scripts."));
  3393. #endif /* OS2 */
  3394.  
  3395. #ifndef NOSPL
  3396. case XYTMPDIR:
  3397.     return(hmsg("Syntax: SET TEMP-DIRECTORY [ <directory-name> ]\n\n\
  3398. Overrides automatic assignment of \\v(tmpdir) variable."));
  3399. #endif /* NOSPL */
  3400.  
  3401. case XYTITLE:
  3402.     return(hmsg("Syntax: SET TITLE <text>\n\
  3403. Sets window title to text instead of using current host/port name.")); 
  3404.  
  3405. default:
  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.  
  3414. static 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.  
  3421. int
  3422. dohrmt(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.  
  3429. case XZCPY:
  3430.     return(hmsg("Syntax: REMOTE COPY source destination\n\n\
  3431. Ask the remote Kermit server to copy the source file to destination."));
  3432.  
  3433. case XZCWD:
  3434.     return(hmsg("Syntax: REMOTE CD [ name ]\n\n\
  3435. Ask remote Kermit server to change its working directory or device.\n\
  3436. If the device or directory name is omitted, restore the default."));
  3437.  
  3438. case XZDEL:
  3439.     return(hmsg("Syntax: REMOTE DELETE filespec\n\n\
  3440. Ask the remote Kermit server to delete the named file(s)."));
  3441.  
  3442. case XZDIR:
  3443.     return(hmsg("Syntax: REMOTE DIRECTORY [ filespec ]\n\n\
  3444. Ask the remote Kermit server to provide a directory listing of the named\n\
  3445. file(s) or if no file specification is given, of all files in the current\n\
  3446. directory."));
  3447.  
  3448. case XZHLP:
  3449.     return(hmsg("Syntax: REMOTE HELP\n\n\
  3450. Ask the remote Kermit server to list the services it provides."));
  3451.  
  3452. case XZHOS:
  3453.     return(hmsg("Syntax: REMOTE HOST command\n\n\
  3454. Send a command to the remote host computer in its own command language\n\
  3455. through the remote Kermit server."));
  3456.  
  3457. #ifndef NOFRILLS
  3458. case XZKER:
  3459.     return(hmsg("Syntax: REMOTE KERMIT command\n\n\
  3460. Send a command to the remote Kermit server in its own command language."));
  3461.  
  3462. case XZLGI:
  3463.     return(hmsg("Syntax: REMOTE LOGIN user password [ account ]\n\n\
  3464. Log in to a remote Kermit server that requires you login."));
  3465.  
  3466. case XZLGO:
  3467.     return(hmsg("Syntax: REMOTE LOGOUT\n\n\
  3468. Log out from a remote Kermit server to which you have previously logged in."));
  3469.  
  3470. case XZPRI:
  3471.     return(hmsg("Syntax: REMOTE PRINT filespec [ options ]\n\n\
  3472. Send the specified file(s) to the remote Kermit and ask it to have the\n\
  3473. file printed on the remote system's printer, using any specified options."));
  3474. #endif /* NOFRILLS */
  3475.  
  3476. case XZREN:
  3477.     return(hmsg("Syntax: REMOTE RENAME filespec newname\n\n\
  3478. Ask the remote Kermit server to rename the file."));
  3479.  
  3480. case XZSET:
  3481.     return(hmsga(hrset));
  3482.  
  3483. case XZSPA:
  3484.     return(hmsg("Syntax: REMOTE SPACE [ name ]\n\n\
  3485. Ask the remote Kermit server to tell you about its disk space on the current\n\
  3486. disk or directory, or in the one that you name."));
  3487.  
  3488. #ifndef NOFRILLS
  3489. case XZTYP:
  3490.     return(hmsg("Syntax: REMOTE TYPE file\n\n\
  3491. Ask the remote Kermit server to type the named file(s) on your screen."));
  3492.  
  3493. case XZWHO:
  3494.     return(hmsg("Syntax: REMOTE WHO [ name ]\n\n\
  3495. Ask the remote Kermit server to list who's logged in, or to give information\n\
  3496. about the named user."));
  3497. #endif /* NOFRILLS */
  3498.  
  3499. #ifndef NOSPL
  3500. case XZQUE:
  3501.     return(hmsg(
  3502. "Syntax: REMOTE QUERY { KERMIT, SYSTEM, USER } variable-name\n\n\
  3503. Ask the remote Kermit server to send the value of the named variable of the\n\
  3504. given type, and make it available in the \\v(query) variable."));
  3505.  
  3506. case XZASG:
  3507.     return(hmsg(
  3508. "Syntax: REMOTE ASSIGN variable-name [ value ]\n\n\
  3509. Assign the given value to the named global variable on the server."));
  3510.  
  3511. #endif /* NOSPL */
  3512. default:
  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 */
  3520.