home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume16 / ecu3 / part17 < prev    next >
Internet Message Format  |  1991-01-06  |  53KB

  1. From: wht@n4hgf.uucp (Warren Tucker)
  2. Newsgroups: comp.sources.misc
  3. Subject: v16i041:  ECU async comm package rev 3.0, Part17/35
  4. Message-ID: <1991Jan6.052313.28141@sparky.IMD.Sterling.COM>
  5. Date: 6 Jan 91 05:23:13 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: 7ffd4472 ad779f51 d3c754e6 3ce3996c
  8.  
  9. Submitted-by: wht@n4hgf.uucp (Warren Tucker)
  10. Posting-number: Volume 16, Issue 41
  11. Archive-name: ecu3/part17
  12.  
  13. ---- Cut Here and feed the following to sh ----
  14. #!/bin/sh
  15. # This is part 17 of ecu3
  16. if touch 2>&1 | fgrep 'amc' > /dev/null
  17.  then TOUCH=touch
  18.  else TOUCH=true
  19. fi
  20. # ============= help/Makefile ==============
  21. if test ! -d 'help'; then
  22.     echo 'x - creating directory help'
  23.     mkdir 'help'
  24. fi
  25. echo 'x - extracting help/Makefile (Text)'
  26. sed 's/^X//' << 'SHAR_EOF' > 'help/Makefile' &&
  27. X#  CHK=0xFF6D
  28. X# Makefile for helpgen (ecu help system)
  29. X#
  30. X#+:EDITS:*/
  31. X#:05-07-1990-21:21-wht@n4hgf-omit fcrc usage in release makes
  32. X#:01-03-1990-15:30-wht-quit using -Ox --- Oi screws up too much
  33. X#:11-23-1989-02:37-wht-start support for UNIX V/386
  34. X#:10-11-1989-18:46-wht-needed more work to get makes to work away from my system
  35. X#:07-03-1989-22:58-wht------ x2.00 -----
  36. X#:05-08-1989-15:35-wht-creation
  37. X
  38. XSHELL = /bin/sh
  39. X.SUFFIXES: .o .c .h  
  40. X
  41. XCOMFLAGS = -s
  42. XCFLAGS  = -c `sysdep =M_UNIX -O -DLINT_ARGS =M_XENIX -Ox -DLINT_ARGS =pyr -O` $(COMFLAGS)
  43. XLDFLAGS = # -m helpgen.map
  44. X
  45. X.c.o:;    cc $(CFLAGS) $*.c 
  46. X
  47. XSRC    = \
  48. X    helpgen.c\
  49. X    util.c
  50. X
  51. XOBJ    = \
  52. X    helpgen.o\
  53. X    util.o
  54. X
  55. Xall: helpgen ecuhelp.data # ecuhelp.doc ecuhelp.txt
  56. X
  57. Xhelpgen.fls: $(SRC)
  58. X    ls $(SRC) >helpgen.fls
  59. X
  60. Xhelpgen: $(OBJ)
  61. X    cc $(COMFLAGS) $(OBJ) $(LDFLAGS) -o helpgen 
  62. X
  63. Xecuhelp.data: ecuhelp.src helpgen
  64. X    ./helpgen -b
  65. X
  66. Xecuhelp.doc: ecuhelp.src helpgen
  67. X    ./helpgen -d
  68. X
  69. Xecuhelp.txt: ecuhelp.data helpgen
  70. X    ./helpgen -n
  71. X
  72. Xlint: lint_args.h
  73. X
  74. Xlint_args.h: helpgen.fls
  75. X    echo > lint_args.h
  76. X    csh ../zgcc helpgen.fls lint_args.h $(CFLAGS)
  77. X
  78. X#
  79. X# MAKE DEPEND: regenerate .c:.h, .ol:.c, .ol:.asm dependencies automatically
  80. X#
  81. Xdepend: Makefile
  82. X
  83. XMakefile: $(SRC)
  84. X        rm -f depend.tmp
  85. X        if test '$(SRC)' ;\
  86. X        then (grep '^#include' $(SRC) \
  87. X        | sed    -e 's?:[^<]*<\([^>]*\)>.*?: /usr/include/\1?'\
  88. X            -e 's?:[^"]*"\([^"]*\)".*?: \1?'\
  89. X            -e 's?\(.*\)\.c?\1.o?'\
  90. X         >> depend.tmp) ;\
  91. X        fi
  92. X
  93. X        echo '/^# DO NOT DELETE THIS LINE' >exdep.tmp
  94. X        echo '.+1,$$d' >>exdep.tmp
  95. X        echo 'r depend.tmp' >> exdep.tmp
  96. X        echo 'w' >> exdep.tmp
  97. X        cp Makefile Makefile.new
  98. X        ex Makefile.new < exdep.tmp
  99. X        rm exdep.tmp depend.tmp
  100. X        echo '#    DEPENDENCIES MUST END AT END OF    FILE' >>Makefile.new
  101. X        echo '#    IF YOU PUT STUFF HERE IT WILL GO AWAY'>>Makefile.new
  102. X        echo '#    see make depend    above'>>Makefile.new
  103. X        mv Makefile Makefile.bak
  104. X        mv Makefile.new Makefile
  105. X
  106. X# DO NOT DELETE THIS LINE
  107. Xhelpgen.o: /usr/include/stdio.h
  108. Xhelpgen.o: /usr/include/ctype.h
  109. Xhelpgen.o: ../ecucmd.h
  110. Xhelpgen.o: ../esd.h
  111. Xhelpgen.o: ../stdio_lint.h
  112. X#    DEPENDENCIES MUST END AT END OF    FILE
  113. X#    IF YOU PUT STUFF HERE IT WILL GO AWAY
  114. X#    see make depend    above
  115. SHAR_EOF
  116. $TOUCH -am 0813184890 'help/Makefile' &&
  117. chmod 0644 help/Makefile ||
  118. echo 'restore of help/Makefile failed'
  119. Wc_c="`wc -c < 'help/Makefile'`"
  120. test 2124 -eq "$Wc_c" ||
  121.     echo 'help/Makefile: original size 2124, current size' "$Wc_c"
  122. # ============= help/ecuhelp.src ==============
  123. echo 'x - extracting help/ecuhelp.src (Text)'
  124. sed 's/^X//' << 'SHAR_EOF' > 'help/ecuhelp.src' &&
  125. X# ecu help source file
  126. X#+:EDITS:
  127. X#:11-03-1989-16:21-wht------ unet2 -----
  128. X#:06-17-1988-11:10-wht-add 'exit' command
  129. X#:06-13-1988-15:38-wht-creation
  130. X#--------------------------------------------------------------------
  131. X%ax
  132. XUsage: ax [<param>]
  133. X
  134. X<param> may be a single ASCII character, a standard ASCII identifier
  135. X(such as ETX), or a two-character control character identifier (such as
  136. X^C, typed as a caret followed by a C).
  137. X
  138. XIf no parameter is supplied, a table of control characters is printed
  139. Xcontaining decimal, octal, hex, ASCII identifiers and two-character
  140. Xcontrol character identifier.
  141. X#--------------------------------------------------------------------
  142. X%xa
  143. XUsage: xa [<hex-val>]
  144. X
  145. X<hex-val> is a hexadecimal value between 0 and FF; the parity (sign) bit
  146. Xis stripped and the equivalent ASCII character value is displayed.
  147. X
  148. XIf no parameter is supplied, a table of control characters is printed
  149. Xcontaining decimal, octal, hex, ASCII identifiers and two-character
  150. Xcontrol character identifier.
  151. X#--------------------------------------------------------------------
  152. X%oa
  153. XUsage: oa [<octal-val>]
  154. X
  155. X<octal-val> is a octal value between 0 and 0377; the parity (sign) bit
  156. Xis stripped and the equivalent ASCII character value is displayed.
  157. X
  158. XIf no parameter is supplied, a table of control characters is printed
  159. Xcontaining decimal, octal, hex, ASCII identifiers and two-character
  160. Xcontrol character identifier.
  161. X#--------------------------------------------------------------------
  162. X%da
  163. XUsage: da [<decimal-val>]
  164. X
  165. X<decimal-val> is a decimal value between 0 and 0377; the parity (sign)
  166. Xbit is stripped and the equivalent ASCII character value is displayed.
  167. X
  168. XIf no parameter is supplied, a table of control characters is printed
  169. Xcontaining decimal, octal, hex, ASCII identifiers and two-character
  170. Xcontrol character identifier.
  171. X#--------------------------------------------------------------------
  172. X%baud
  173. XUsage: baud [<baud-rate>]
  174. X
  175. X<baud-rate>, if specified, must be taken from the values 110, 300, 600,
  176. X1200, 2400, 4800, 9600, 19200 and 38400.  On some systems, 19200 and
  177. X38400 may not be supported.  If baud rate 110 is selected, 2 stop bits
  178. Xare automatically specified; other baud rates set 1 stop bit.  If
  179. X<baud-rate> is not supplied, the current baud rate is displayed.
  180. X
  181. XThe setting may be automatically changed as the result of a 'dial'
  182. Xcommand.  See also the 'dial' and 'parity' command descriptions.
  183. X#--------------------------------------------------------------------
  184. X%bn
  185. XUsage: bn [ 0 | 1 | 2 ]
  186. X
  187. X"bell notify": This command is only available under XENIX.  If no
  188. Xparameter is supplied, the current setting is displayed.  Specifying 0
  189. Xdisables the facility; 1 causes an audible alarm to be sounded on all of
  190. Xthe XENIX virtual consoles upon receipt of a bell (0x07) character from
  191. Xthe remote system; 2 causes an audible alarm to be sent to all consoles
  192. Xupon receipt of ANY characters from the remote system.  A non-zero value
  193. Xalso causes an audible alarm to be sent to all console upon the
  194. Xsuccessful completion of a 'redial' command which must retry more than
  195. Xone redial attempt or upon completion of a file transfer operation.
  196. X
  197. XDifferent alarms are sent depending upon the the type of event causing
  198. Xthe alarms.
  199. X#--------------------------------------------------------------------
  200. X%break
  201. XUsage: break
  202. X
  203. XThis command sends a break signal to the remote system.
  204. X#--------------------------------------------------------------------
  205. X%cd
  206. XUsage: cd [<dir-path>]
  207. X
  208. XThis command allows you to change the working directory of the ecu
  209. Xprocess.  If <dir-path> is supplied, the previous working directory is
  210. Xdisplayed, and <dir-path> is made the new working directory.  A history
  211. Xof previous directory changes is maintained.  Entering the 'cd' command
  212. Xshows the numbered history list and allows you to select a new directory
  213. Xby entering the number.  Other commands allow deletion of directories
  214. Xfrom the list or saving the list to file ~/.ecu/phone.  This file is
  215. Xautomatically read at ecu startup, providing a convenient list of
  216. Xdirectories available for quick selection.
  217. X#--------------------------------------------------------------------
  218. X%dial
  219. XUsage: dial [<dial-param>]
  220. X
  221. X<dial-param> may take one of two forms, a telephone number to dial or a
  222. Xlogical name which can be found in the user phone directory (in file
  223. X~/.ecu/phone).
  224. X
  225. XIf a telephone number is supplied, the phone number is dialed; you must
  226. Xfirst have set the desired baud rate and parity using the 'baud' and
  227. X'parity' commands.  If a logical name is entered, the phone directory is
  228. Xsearched; if the entry is found, the baud rate and parity is
  229. Xautomatically set and the number dialed.
  230. X
  231. XIf <dial-param> is not supplied, then a screen-oriented self-documenting
  232. Xdirectory manager is executed; you may scan the the directory to select
  233. Xa number to dial, as well as add, remove and edit entries.  See also
  234. X'baud' and 'parity'.
  235. X#--------------------------------------------------------------------
  236. X%do
  237. XUsage: do <procname> [<arg> ... ]
  238. X
  239. XPerform ecu procedure.  Ecu searches for <procname>.ep in the current
  240. Xdirectory.  If the file is not found, the program looks for the file in
  241. Xthe ~/.ecu directory.  One or more arguments may be passed to the
  242. Xprocedure.
  243. X#--------------------------------------------------------------------
  244. X%duplex
  245. XUsage: duplex [ Full | Half ]
  246. X
  247. XThis command specifies whether or not ecu is to locally echo characters
  248. Xtyped by you at the keyboard.  The overwhelming majority of remote
  249. Xsystems provide the echo function, in which case full duplex must be
  250. Xused.  For the rare occasions when the remote system does not echo your
  251. Xkeyboard input, setting half duplex will allow you to see what you are
  252. Xtyping.
  253. X
  254. XWhen communicating with another terminal in a "teletype conver- sation",
  255. Xsetting half duplex is generally required.  In such cases, use of the
  256. X'nl', 'nlin' and 'nlout' commands may also be required.
  257. X
  258. XThe default setting for duplex is full.
  259. X#--------------------------------------------------------------------
  260. X#%esc
  261. X#Usage esc <hex-constant>
  262. X#"command escape ": This command is used only on non-XENIX systems.
  263. X#It specifies the equivalent character for the HOME key used
  264. X#by XENIX versions of ecu to enter the commands being described
  265. X#by this help function.  The default setting for this command escape
  266. X#s '%'.  To change the value, you must enter the hexadecimal value
  267. X#of the desired character; it must be in the range 01 through 7F.
  268. X#You may use the 'ax' command to aid in converting an ASCII
  269. X#character to the appropriate hexadecimal value.
  270. X#--------------------------------------------------------------------
  271. X%fi
  272. XUsage: fi [<filename>]
  273. X
  274. X"file insert": This command causes file characters to be inserted into
  275. Xthe transmit data stream as though they had been entered at the
  276. Xkeyboard.  If <filename> is not entered on the command line, a prompt
  277. Xfor the filename is made.  Once the filename has been entered and file
  278. Xhas been opened, you are asked whether the file should be transmitted at
  279. Xfull speed, by "echo pacing" or by a single line at a time.  You may
  280. Xalso append an 'f', 'e' or 's' argument to the command line.  If your
  281. Xremote can tolerate it, full speed transmission is the fastest.
  282. XPressing the interrupt key (DEL) stops a full speed transmission.  By
  283. Xspecifying echo pacing, it is possible to increase the likelihood of
  284. Xproper receipt.  Pressing the interrupt key (DEL) stops an echo paced
  285. Xtransmission.  As a last resort, if echo pacing is not working for you,
  286. X(i.e., you are using the command in an environment where the remote does
  287. Xnot echo your characters), use single line at a time transmission.  You
  288. Xmust press the space key to initiate sending each line.  Pressing 'ESC'
  289. Xor 's' stops the transfer.
  290. X#--------------------------------------------------------------------
  291. X%fkey
  292. XUsage: fkey [<keyset_name>]
  293. X
  294. XThis command allows the mapping of function keys F1-F12, PgUp, PgDn, End
  295. Xand Ins and the cursor up, down, left and right keys to emit a desired
  296. Xsequence of characters when a function key is pressed.  <keyset_name>
  297. Xspecifies which key set in ~/.ecu/keys is to be selected: Sample entry
  298. Xin ~/.ecu/keys:
  299. X
  300. Xhayes
  301. X    F1:escape:+ + +
  302. X    F2:autoans:A T S 0 = 1 cr
  303. X    F3:dial:A T D T
  304. Xbbs
  305. X    F1:cancel:^K
  306. X    F2:yes:y cr
  307. X
  308. XIf a keyset_name matches a logical dial directory name, it is loaded
  309. Xwhen the number is dialed.
  310. X#--------------------------------------------------------------------
  311. X%hangup
  312. XUsage: hangup
  313. X
  314. XThis causes DTR to be momentarily interrupted, terminating any
  315. Xoutstanding connection.  Your DCE (modem) must be able to drop carrier
  316. Xupon loss of DTR.
  317. X#--------------------------------------------------------------------
  318. X%help
  319. XUsage: help [<cmd-name>]
  320. X
  321. XIssuing this command with no argument displays a list of commands
  322. Xfollowed by a request for a command for further information.
  323. X#--------------------------------------------------------------------
  324. X%llp
  325. XUsage: llp
  326. X
  327. XThis command is a shorthand version of 'log /dev/lp'.
  328. X/dev/lp must not be under the control of a print spooler.
  329. X#--------------------------------------------------------------------
  330. X%loff
  331. XUsage: loff
  332. X
  333. XThis command is shorthand for 'log off'.  If session logging
  334. Xis active, it is turned off.
  335. X#--------------------------------------------------------------------
  336. X%log
  337. XUsage: log [-s] [-r] [ | off | filename ]
  338. X       -s "scratch" previous file contents; otherwise append
  339. X       -r "raw" logging; otherwise non-printable characters
  340. X          other than tab and newline are omitted from the log
  341. X
  342. XThis command controls session logging; issuing the command with no
  343. Xargument causes the status of session logging to be displayed.  The
  344. Xspecial argument 'off' causes active logging to be terminated.  Other
  345. Xargument values cause logging to start using the argument as a filename.
  346. XIssuing a 'log filename' command when logging is already active causes
  347. Xthe previous file to be closed and the new file to be opened.  Switches
  348. Xare meaningful only when used in conjunction with a filename to start
  349. Xlogging.
  350. X#--------------------------------------------------------------------
  351. X%nl
  352. XUsage: nl
  353. X
  354. XDisplay the current setting of CR/LF mapping.  For more information,
  355. Xrefer to the 'nlin' and 'nlout' command descriptions.
  356. X#--------------------------------------------------------------------
  357. X%nlin
  358. XUsage: nlin [<y-n>]
  359. X
  360. XThis command controls whether or not a newline (NL/LF) character is sent
  361. Xto the screen upon receipt of a carriage return (CR) from the remote
  362. Xsystem.  Most remote computers supply a NL after CR.  When communicating
  363. Xwith another terminal in a "teletype conversation", this is generally
  364. Xnot the case (see also the 'duplex' command).
  365. X
  366. XIssuing the command without <y-n> causes the current setting to be
  367. Xdisplayed.  The format of <y-n> is flexible: 'y' or '1' enables
  368. Xappending NL to CR, 'n' or '0' causes the feature to be disabled.
  369. X#--------------------------------------------------------------------
  370. X%nlout
  371. XUsage: nlout [<y-n>]
  372. X
  373. XThis command controls whether or not a newline (NL/LF) character is sent
  374. Xto the remote system upon transmission of a carriage return (CR) entered
  375. Xby the keyboard.  Most remote computers do not require (indeed
  376. X"dislike") a NL after CR.  When communicating with another terminal in a
  377. X"teletype conversation", this is generally not the case (see also the
  378. X'duplex' command).
  379. X
  380. XIssuing the command without <y-n> causes the current setting to be
  381. Xdisplayed.  The format of <y-n> is flexible: 'y' or '1' enables
  382. Xappending NL to CR, 'n' or '0' causes the feature to be disabled.
  383. X#--------------------------------------------------------------------
  384. X%parity
  385. XUsage: parity [ None | Even | Odd ]
  386. X
  387. XThis command controls the parity of characters transmitted by the
  388. Xkeyboard.  Issuing the command with no parameter displays the current
  389. Xsetting.  When the parameter is supplied, only the first character is
  390. Xrequired.  Even or odd parity implies seven data bits; no parity implies
  391. Xeight data bits.  Parity of incoming characters is not checked.
  392. X
  393. XThe setting may be automatically changed as the result of a 'dial'
  394. Xcommand.  See also the 'baud' and 'dial' command descriptions.
  395. X#--------------------------------------------------------------------
  396. X%pid
  397. XUsage: pid
  398. X
  399. XThis command displays the process id of the ecu transmitter process, the
  400. Xecu receiver process and the process ids of ecu's parent and group.
  401. X#--------------------------------------------------------------------
  402. X%ptrace
  403. XUsage: ptrace [ 0 | 1 | on | off]
  404. X
  405. XThis command controls whether or not procedure execution is to be
  406. Xtraced.
  407. X#--------------------------------------------------------------------
  408. X%pwd
  409. XUsage: pwd
  410. X
  411. XThis command prints the current working directory of the ecu process.
  412. X#--------------------------------------------------------------------
  413. X%rk
  414. XUsage: rk
  415. X
  416. XThis command searches the PATH list for 'ckermit' (Columbia University
  417. XC-Kermit) and invokes it to receive files.  See the ecu documentation
  418. Xfor modifications necessary to ckermit for ecu operation.  The file
  419. X~/.kermrc must be set up to have any desired initialization paraeters
  420. Xyou desire.  Refer to C-Kermit documentation for more information.
  421. X#--------------------------------------------------------------------
  422. X%rs
  423. XUsage: rs
  424. X
  425. XThis command invokes a SEAlink receive protocol.
  426. X#--------------------------------------------------------------------
  427. X%redial
  428. XUsage: redial [<retry-count> [<pause-interval>]]
  429. X
  430. XThis command redials a number previously dialed with the 'dial' command.
  431. XModem status is tested and multiple retries may be made.  <retry-count>
  432. Xspecifies how many retries are to be made.  <pause-interval> specifies
  433. Xhow many seconds the program pauses after a failure to connect.  You
  434. Xmust specify <retry-count> in order to specify <pause-interval>.  The
  435. Xdefault value for <retry-count> is 10, for <pause-interval> is 60.
  436. X
  437. XYou should know that in some jurisdictions, it is ILLEGAL to dial the
  438. Xsame telephone number more than a specified number of times during some
  439. Xinterval of time.  In any case, specifying <pause-interval> less than 15
  440. Xseconds is silently changed to 15 seconds.
  441. X#--------------------------------------------------------------------
  442. X%rev
  443. XUsage: rev
  444. X
  445. XThis command displays ecu's revision, the transmitter process id and the
  446. Xdate and time ecu was made.
  447. X#--------------------------------------------------------------------
  448. X%rx
  449. XUsage: rx
  450. X
  451. XThis command invokes a modified version of Chuck Forsberg's rz program
  452. X(version 1.31) to receive files from the remote system using XMODEM/CRC.
  453. X
  454. XAfter entering the command, you are prompted as to whether or not file
  455. XCR/LF characters are to be converted to newlines.  If you are
  456. Xtransferring text files from a system which contain CR/LF line
  457. Xterminators, you must answer yes to this question.  You should answer no
  458. Xwhen transferring binary files, such as executables, .arc files and the
  459. Xlike.  File transfer progress is presented on a visual display.  To
  460. Xabort the transfer, press your interrupt key (usually DEL unless reset
  461. Xwith stty(C)).
  462. X#--------------------------------------------------------------------
  463. X%ry
  464. XUsage: ry
  465. X
  466. XThis command invokes a modified version of Chuck Forsberg's rz program
  467. X(version 1.31) to receive files from the remote system using YMODEM
  468. Xbatch with CRC-16 error correction.  The YMODEM is "true YMODEM", not
  469. XXMODEM-1k.  File transfer progress is presented on a visual display.  To
  470. Xabort the transfer, press your interrupt key (usually DEL unless reset
  471. Xwith stty(C)).
  472. X#--------------------------------------------------------------------
  473. X%rz
  474. XUsage: rz
  475. X
  476. XThis command invokes a modified version of Chuck Forsberg's rz program
  477. X(version 1.44) to receive files from the remote system using
  478. XZMODEM/CRC32.  File transfer progress is presented on a visual display.
  479. XTo abort the transfer, press your interrupt key (usually DEL unless
  480. Xreset with stty(C)).
  481. X#--------------------------------------------------------------------
  482. X%sk
  483. XUsage: sk [<file-list>]
  484. X
  485. XThis command searches the PATH list for 'ckermit' (Columbia University
  486. XC-Kermit) and invokes it to send files.  The file ~/.kermrc must be set
  487. Xup to have any desired initialization paraeters you desire.  See the ecu
  488. Xdocumentation for modifications necessary to ckermit for ecu operation.
  489. X
  490. XAfter entering the command, you are prompted as to whether or not file
  491. Xnewline characters are to be converted to CR/LF.  If you are
  492. Xtransferring text files to a system which requires CR/LF line
  493. Xterminators, you must answer yes to this question.  You should answer no
  494. Xwhen transferring binary files, such as executables, .arc files and the
  495. Xlike.  You are prompted to enter a list of files to send, which may
  496. Xcontain one or more wildcard specifications.
  497. X
  498. XThe file ~/.kermrc must be set up to have any desired initialization
  499. Xparameters you desire.  Refer to C-Kermit documentation for more
  500. Xinformation.
  501. X#--------------------------------------------------------------------
  502. X%ss
  503. XUsage: ss [<file-list>]
  504. X
  505. XThis command invokes a SEAlink file transmission protocol.
  506. X#--------------------------------------------------------------------
  507. X%stat
  508. XUsage: stat
  509. X
  510. XThis command displays statistics about ecu usage.
  511. X
  512. XExample display when not connected to a remote system:
  513. XDate/time: 06-14-1988 11:40:35 (UTC 15:40)
  514. XTotal chars transmitted: 178
  515. XTotal chars received:    3681
  516. X
  517. XDate/time: 06-14-1988 14:41:24 (UTC 18:41)
  518. XConnected to CompuHost (555-1234) at 14:40:57
  519. XParameters: 2400-N-1 Connect time: 00:01:27
  520. XTotal chars transmitted: 234 (since CONNECT 142)
  521. XTotal chars received:    2278 (since CONNECT 1478)
  522. X#--------------------------------------------------------------------
  523. X%sx
  524. XUsage: sx [<file-name>]
  525. X
  526. XThis command invokes a modified version of Chuck Forsberg's sz program
  527. X(version 1.44) to send a file to the remote system using XMODEM/CRC.
  528. X
  529. XAfter entering the command, you are prompted as to whether or not file
  530. XCR/LF characters are to be converted to newlines.  If you are
  531. Xtransferring text files from a system which contain CR/LF line termi-
  532. Xnators, you must answer yes to this question.  You should answer no when
  533. Xtransferring binary files, such as executables, .arc files and the like.
  534. X
  535. XYou are prompted to enter a filename to send.  File transfer progress is
  536. Xpresented on a visual display.  To abort the transfer, press your
  537. Xinterrupt key (usually DEL unless reset with stty(C)).
  538. X#--------------------------------------------------------------------
  539. X%sy
  540. XUsage: sy [<file-list>]
  541. X
  542. XThis command invokes a modified version of Chuck Forsberg's sz program
  543. X(version 1.44) to send file(s) to the remote system using YMODEM/CRC.
  544. X
  545. XYou are prompted to enter filename(s) to send, which may consist of one
  546. Xor more wildcard specifications.  File transfer progress is presented on
  547. Xa visual display.  To abort the transfer, press your interrupt key
  548. X(usually DEL unless reset with stty(C)).
  549. X#--------------------------------------------------------------------
  550. X%sz
  551. XUsage: sz [<file-list>]
  552. X
  553. XThis command invokes a modified version of Chuck Forsberg's sz program
  554. X(version 1.44) to send file(s) to the remote system using ZMODEM/CRC32.
  555. X
  556. XYou are prompted to enter filename(s) to send, which may consist of one
  557. Xor more wildcard specifications.  File transfer progress is presented on
  558. Xa visual display.  To abort the transfer, press your interrupt key
  559. X(usually DEL unless reset with stty(C)).
  560. X
  561. XNote: if you specify sending only newer files and the remote receiver
  562. Xdoes not support the feature, it may skip (reject) all your files.
  563. XRetry the transfer specifying 'N' to 'Transfer only newer files'.
  564. X#--------------------------------------------------------------------
  565. X%time
  566. XUsage: time
  567. X
  568. XThis command displays the local date and time as well as the current UTC.
  569. X#--------------------------------------------------------------------
  570. X%tty
  571. XUsage: tty
  572. X
  573. XThis command displays the current console tty name.
  574. X#--------------------------------------------------------------------
  575. X%exit
  576. XUsage: exit
  577. X
  578. XThis command terminates ecu promptly.  If your modem does not drop
  579. Xcarrier upon loss of Data Terminal Ready (DTR), you must use the
  580. X'hangup' command prior to issuing the 'exit' command.  It is strongly
  581. Xrecommended that you configure your modem to hang up the phone line when
  582. XDTR drops.  A shorthand version of this command exists: '.' is
  583. Xequivalent to 'exit'.
  584. X#--------------------------------------------------------------------
  585. X%xon
  586. XUsage: xon [<arg>]
  587. Xwhere <arg> is on    input and output flow control
  588. X               off   no flow control
  589. X               in    input flow control
  590. X               out   output flow control
  591. X
  592. XThis command enables or disables xon/xoff flow control.  If the
  593. Xargument is omitted, the current flow control state is displayed.
  594. X#--------------------------------------------------------------------
  595. X%!
  596. XUsage: !
  597. X       !<command>
  598. X
  599. XThe '!' command is a shell escape.  The environment variable SHELL is
  600. Xread to determine what shell program to execute (e.g., /bin/sh, etc).
  601. XIf '!' is entered by itself, an interactive shell is started; press ^D
  602. Xto exit back to ecu.  If <command> is supplied, it is executed by the
  603. Xshell with an immediate return to ecu.
  604. X
  605. XSimilarly,
  606. X  '$' causes the communications line to be stdin and stdout
  607. X      for the spawned shell
  608. X  '-' is similar to '>', except the command is executed directly
  609. X      without going through a shell.
  610. X#--------------------------------------------------------------------
  611. X%$
  612. XUsage: $
  613. X       $<command>
  614. X
  615. XThe '$' command is a shell escape causing the communications line to be
  616. Xthe stand input and output.  The environment variable SHELL is read to
  617. Xdetermine what shell program to execute (e.g., /bin/sh, etc).  If '$' is
  618. Xentered by itself, an interactive shell is started; a ^D received from
  619. Xthe communications line causes the shell to terminate and control to be
  620. Xpassed back to ecu.  If <command> is supplied, it is executed by the
  621. Xshell with an immediate return to ecu.
  622. X#--------------------------------------------------------------------
  623. X%-
  624. XUsage: -<command>
  625. X
  626. XThe '-' command causes <command> to be executed directly without
  627. Xpassing through a shell (no wildcard expansion or other shell
  628. Xprocessing occurs).  Standard input, output and error all are
  629. Xopened to the console.  In addition, all other files (including
  630. Xthe communications line) opened by ecu remain open.
  631. X#--------------------------------------------------------------------
  632. X%?
  633. XUsage: ?
  634. X
  635. XThis is an alias for the help command.
  636. X#--------------------------------------------------------------------
  637. X%clrx
  638. XUsage: clrx
  639. X
  640. XThe 'clrx' command simulates receipt of an XON by ECU.  It is useful
  641. Xin the rare circumstances that an XOFF is received by ECU from a 
  642. Xremote system and no later XON is received.
  643. X#--------------------------------------------------------------------
  644. X%pcmd
  645. XUsage: pcmd <procedure command>
  646. X
  647. XThe 'pcmd' command allows a procedure command to be issued from the
  648. Xinteractive command prompt.  It is primarily intended for debugging
  649. Xprocedure commands, but it is available for any use.
  650. X#--------------------------------------------------------------------
  651. X%plog
  652. XUsage: plog [<filename> | off | ]
  653. X
  654. XThe 'plog' command turns on or off procedure logging.  If the
  655. Xargument to the command is 'off', logging is turned off, otherwise
  656. Xlogging is started on the specified file.  If no argument is specified,
  657. Xthe status of procedure logging is displayed.
  658. X#--------------------------------------------------------------------
  659. X%rtscts
  660. XUsage: rtscts [ y | n | ]
  661. X
  662. XThis experimental command turns on or off the driver RTS and CTS
  663. Xflow control.  As of this writing, the driver does not properly
  664. Xhandle RTS/CTS flow control.
  665. X#--------------------------------------------------------------------
  666. X%sdname
  667. XUsage: sdname [<filename> | ]
  668. X
  669. XThis command sets or displays the current screen dump filename.
  670. XUntil the command is issued, screen dump data is placed in
  671. X~/.ecu/screen.dump.
  672. X#--------------------------------------------------------------------
  673. X%sgr
  674. XUsage: sgr mode cmd
  675. X
  676. XThis experimental command is used to test the timed read primitive
  677. Xused by ECU.  The command <cmd> is sent to the line and a timed
  678. Xread is performed.  The data returned is displayed in hexadecimal
  679. Xformat on the console. Refer to source module ecuxenix.c, function
  680. Xsend_get_response() for details.
  681. X#--------------------------------------------------------------------
  682. X%ts
  683. XUsage: ts
  684. X
  685. XThis experimental command displays raw termio structure information
  686. Xfor the console and the tty.  It is primarily used in debugging ECU.
  687. X#--------------------------------------------------------------------
  688. X%xlog
  689. XUsage: xlog [y | n]
  690. X
  691. XThis experimental command controls exhaustive logging by the X, Y, and
  692. XZMODEM file transfer protocols to files named /tmp/szNNNNN.log or
  693. X/tmp/rzNNNNN.log where NNNNN is the process id of the transfer process.
  694. SHAR_EOF
  695. $TOUCH -am 0521014190 'help/ecuhelp.src' &&
  696. chmod 0644 help/ecuhelp.src ||
  697. echo 'restore of help/ecuhelp.src failed'
  698. Wc_c="`wc -c < 'help/ecuhelp.src'`"
  699. test 24593 -eq "$Wc_c" ||
  700.     echo 'help/ecuhelp.src: original size 24593, current size' "$Wc_c"
  701. # ============= help/helpgen.c ==============
  702. echo 'x - extracting help/helpgen.c (Text)'
  703. sed 's/^X//' << 'SHAR_EOF' > 'help/helpgen.c' &&
  704. X/*+-------------------------------------------------------------------------
  705. X    helpgen.c -- ecu command help file maker
  706. X    wht%n4hgf@gatech.edu
  707. X
  708. X  Defined functions:
  709. X    build_ecudoc()
  710. X    build_ecuhelp()
  711. X    main(argc,argv,envp)
  712. X    search_cmd_list(cmd)
  713. X    show_cmds()
  714. X    test_help()
  715. X    to_lower(ch)
  716. X    to_upper(ch)
  717. X    usage()
  718. X
  719. X--------------------------------------------------------------------------*/
  720. X/*+:EDITS:*/
  721. X/*:08-14-1990-20:40-wht@n4hgf-ecu3.00-flush old edit history */
  722. X
  723. X#include <stdio.h>
  724. X#include <ctype.h>
  725. X
  726. X#if defined(M_SYS5)
  727. X#if !defined(LINT_ARGS)
  728. X#define LINT_ARGS
  729. X#endif
  730. X#endif
  731. X# include "lint_args.h"
  732. X
  733. X#define DECLARE_P_CMD
  734. X#define HELPGEN
  735. X#include "../ecucmd.h"
  736. X
  737. X#include "../esd.h"
  738. X#include "../stdio_lint.h"
  739. X
  740. X#define PSRC    "ecuhelp.src"
  741. X#define PDAT    "ecuhelp.data"
  742. X#define PDOC    "ecuhelp.doc"
  743. X#define PTXT    "ecuhelp.txt"
  744. X#define PFITXT    "../doc/ecufi.txt"
  745. X#define PFSTXT    "../doc/ecufs.txt"
  746. X
  747. Xlong start_pos[TOKEN_QUAN];
  748. Xint token_line[TOKEN_QUAN];
  749. XFILE    *fpsrc;        /* help source file */
  750. XFILE    *fpdat;        /* help data file */
  751. XFILE    *fpdoc;        /* help doc file */
  752. XFILE    *fptxt;        /* help nroff file */
  753. XP_CMD    *pcmd;
  754. Xint src_line = 0;
  755. Xchar buf[128];
  756. X
  757. X/*+-------------------------------------------------------------------------
  758. X    usage()
  759. X--------------------------------------------------------------------------*/
  760. Xusage()
  761. X{
  762. X    fprintf(stderr,"usage: helpgen [-b] [-d] [-s] [-t]\n");
  763. X    fprintf(stderr," -b build %s from %s\n",PDAT,PSRC);
  764. X    fprintf(stderr," -d build %s from %s\n",PDOC,PDAT);
  765. X    fprintf(stderr," -n build nroff %s from %s\n",PTXT,PDAT);
  766. X    fprintf(stderr," -s show list of commands\n");
  767. X    fprintf(stderr," -t test help\n");
  768. X    fprintf(stderr,"At least one switch must be issued.  They are executed\n");
  769. X    fprintf(stderr,"in the order shown on the usage line.\n");
  770. X    exit(1);
  771. X}    /* end of usage */
  772. X
  773. X/*+-------------------------------------------------------------------------
  774. X    search_cmd_list(cmd)
  775. X--------------------------------------------------------------------------*/
  776. XP_CMD *
  777. Xsearch_cmd_list(cmd)
  778. Xregister char *cmd;
  779. X{
  780. Xregister P_CMD    *cmd_list = icmd_cmds;
  781. X
  782. X    while(cmd_list->token != -1)
  783. X    {
  784. X        if(strcmp(cmd_list->cmd,cmd) == 0)
  785. X            break;
  786. X        cmd_list++;
  787. X    }
  788. X    if(cmd_list->token == -1)
  789. X        return((P_CMD *)0);
  790. X    else
  791. X        return(cmd_list);
  792. X
  793. X}    /* end of search_cmd_list */
  794. X
  795. X/*+-------------------------------------------------------------------------
  796. X    show_cmds()
  797. Xcommands with null descriptions are "undocumented"
  798. X--------------------------------------------------------------------------*/
  799. Xvoid
  800. Xshow_cmds()
  801. X{
  802. Xregister int itmp;
  803. Xregister P_CMD *pcmd = icmd_cmds;
  804. Xregister int longest_cmd = 0;
  805. Xregister int longest_descr = 0;
  806. Xregister int cmd_count = 0;
  807. Xregister int nl_flag = 0;
  808. Xchar s80[80];
  809. XP_CMD *longest_cmd_p = 0;
  810. XP_CMD *longest_descr_p = 0;
  811. X
  812. X    while(pcmd->token != -1)
  813. X    {
  814. X        if(!*pcmd->descr)
  815. X        {
  816. X            pcmd++;
  817. X            continue;
  818. X        }
  819. X        itmp = strlen(pcmd->cmd);
  820. X        if(itmp > longest_cmd)
  821. X        {
  822. X            longest_cmd = itmp;
  823. X            longest_cmd_p = pcmd;
  824. X        }
  825. X        itmp = strlen(pcmd->descr);
  826. X        if(itmp > longest_descr)
  827. X        {
  828. X            longest_descr = itmp;
  829. X            longest_descr_p = pcmd;
  830. X        }
  831. X        pcmd++;
  832. X    }
  833. X    pcmd = icmd_cmds;
  834. X    while(pcmd->token != -1)
  835. X    {
  836. X        if((!pcmd->min) || (!*pcmd->descr))
  837. X        {
  838. X            pcmd++;
  839. X            continue;
  840. X        }
  841. X        strcpy(s80,pcmd->cmd);
  842. X        pad_zstr_to_len(s80,longest_cmd + 2);
  843. X        for(itmp = 0; itmp < pcmd->min; itmp++)
  844. X            s80[itmp] = to_upper(s80[itmp]);
  845. X        fputs(s80,stderr);
  846. X
  847. X        strcpy(s80,pcmd->descr);
  848. X        pad_zstr_to_len(s80,longest_descr + 1);
  849. X        fputs(s80,stderr);
  850. X
  851. X        if(nl_flag)
  852. X            fputs("\r\n",stderr);
  853. X        else
  854. X            fputs("| ",stderr);
  855. X        nl_flag = (nl_flag) ? 0 : 1;
  856. X
  857. X        pcmd++;
  858. X    }
  859. X    if(nl_flag)
  860. X        fputs("\r\n",stderr);
  861. X
  862. X    itmp = longest_cmd + longest_descr + 5;
  863. X    sprintf(s80,"recwidth = %d\r\n",itmp);
  864. X    fprintf(stderr,s80);
  865. X    pcmd = longest_cmd_p;
  866. X    sprintf(s80,"longest cmd: %s: %s\r\n",pcmd->cmd,pcmd->descr);
  867. X    fprintf(stderr,s80);
  868. X    pcmd = longest_descr_p;
  869. X    sprintf(s80,"longest dsc: %s: %s\r\n",pcmd->cmd,pcmd->descr);
  870. X    fprintf(stderr,s80);
  871. X
  872. X}    /* end of show_cmds */
  873. X
  874. X/*+-------------------------------------------------------------------------
  875. X    build_ecuhelp()
  876. X--------------------------------------------------------------------------*/
  877. Xvoid
  878. Xbuild_ecuhelp()
  879. X{
  880. Xregister int itmp;
  881. Xregister char *cptr;
  882. X
  883. X    printf("\nBuilding %s\n",PDAT);
  884. X
  885. X/* use proc cmd entry for flag */
  886. X    pcmd = icmd_cmds;
  887. X    while(pcmd->token != -1)
  888. X    {
  889. X        pcmd->proc = (PFI)0;
  890. X        pcmd++;
  891. X    }
  892. X
  893. X    for(itmp = 0; itmp < TOKEN_QUAN; itmp++)
  894. X    {
  895. X        start_pos[itmp] = 0L;
  896. X        token_line[itmp] = 0;
  897. X    }
  898. X
  899. X    if((fpsrc = fopen(PSRC,"r")) == NULL)
  900. X    {
  901. X        perror(PSRC);
  902. X        exit(1);
  903. X    }
  904. X
  905. X    if((fpdat = fopen(PDAT,"w")) == NULL)
  906. X    {
  907. X        perror(PDAT);
  908. X        exit(1);
  909. X    }
  910. X
  911. X    fwrite((char *)start_pos,sizeof(long),    /* write null table */
  912. X            TOKEN_QUAN,fpdat);
  913. X
  914. X    while(fgets(buf,sizeof(buf),fpsrc) != NULL)
  915. X    {
  916. X        src_line++;
  917. X        itmp = strlen(buf);
  918. X        buf[--itmp] = 0;                        /* kill trailing nl */
  919. X        if((buf[0] == '#') || (buf[0] == '/'))    /* ignore comments */
  920. X            continue;
  921. X        if(buf[0] == '%')        /* command indication */
  922. X        {
  923. XSEARCH_CMD_LIST:
  924. X            if(!(pcmd = search_cmd_list(&buf[1])))
  925. X            {
  926. X                printf("line %d: '%s' not in command table\n",
  927. X                        src_line,&buf[1]);
  928. X                while(fgets(buf,sizeof(buf),fpsrc) != NULL)
  929. X                {
  930. X                    src_line++;
  931. X                    itmp = strlen(buf);
  932. X                    buf[--itmp] = 0;                    /* kill trailing nl */
  933. X                    if(buf[0] == '%')        /* command indication */
  934. X                        goto SEARCH_CMD_LIST;
  935. X                }
  936. X                break;
  937. X            }
  938. X            if(start_pos[pcmd->token])
  939. X            {
  940. X                printf("line %d: '%s' already found on line %d\n",
  941. X                        src_line,&buf[1],token_line[pcmd->token]);
  942. X                exit(1);
  943. X            }
  944. X            fputs("\n",fpdat);    /* terminate previous command description */
  945. X            start_pos[pcmd->token] = ftell(fpdat);
  946. X            token_line[pcmd->token] = src_line;
  947. X            fputs("   ",fpdat);
  948. X            cptr = &buf[1];    /* command text */
  949. X            itmp = 0;
  950. X            pcmd->proc = (PFI)1;    /* indicate we save command info */
  951. X            while(*cptr)        /* show cmd and min chars required */
  952. X            {
  953. X                if(itmp < pcmd->min)
  954. X                    fputc(to_upper(*cptr++),fpdat);
  955. X                else
  956. X                    fputc(to_lower(*cptr++),fpdat);
  957. X                itmp++;
  958. X            }
  959. X            if(*pcmd->descr)        /* if description present */
  960. X                fprintf(fpdat," : %s\n \n",pcmd->descr);
  961. X            else
  962. X                fputs("\n \n",fpdat);
  963. X            continue;
  964. X        }
  965. X        fprintf(fpdat," %s\n",buf);
  966. X    }
  967. X
  968. X    fseek(fpdat,0L,0);    /* back to position table */
  969. X    fwrite((char *)start_pos,sizeof(long),    /* write actual table */
  970. X        TOKEN_QUAN,fpdat);
  971. X    fclose(fpsrc);
  972. X    fputs("\n",fpdat);    /* terminate last command */
  973. X    fclose(fpdat);
  974. X
  975. X/* say which commands weren't in the help source */
  976. X    pcmd = icmd_cmds;
  977. X    while(pcmd->token != -1)
  978. X    {
  979. X        if(pcmd->min && !pcmd->proc)
  980. X            fprintf(stderr,"'%s' not in help source\n",pcmd->cmd);
  981. X        pcmd++;
  982. X    }
  983. X
  984. X
  985. X}    /* end of build_ecuhelp */
  986. X
  987. X/*+-------------------------------------------------------------------------
  988. X    build_ecudoc()
  989. X--------------------------------------------------------------------------*/
  990. Xvoid
  991. Xbuild_ecudoc()
  992. X{
  993. Xregister int itmp;
  994. Xregister char *cptr;
  995. X
  996. X    printf("\nBuilding %s\n",PDOC);
  997. X    if((fpdat = fopen(PDAT,"r")) == NULL)
  998. X    {
  999. X        perror(PDAT);
  1000. X        exit(1);
  1001. X    }
  1002. X    if((fpdoc = fopen(PDOC,"w")) == NULL)
  1003. X    {
  1004. X        perror(PDOC);
  1005. X        exit(1);
  1006. X    }
  1007. X    fprintf(fpdoc,
  1008. X        "\n     ECU  Command  Help  Documentation  (PRELIMINARY)\n\n");
  1009. X    fprintf(fpdoc,
  1010. X        "Commands are accessed by pressing the HOME key followed by one\n");
  1011. X    fprintf(fpdoc,
  1012. X        "of the following commands (capitalized portions are sufficient\n");
  1013. X    fprintf(fpdoc,
  1014. X        "to invoke the command):\n");
  1015. X    fprintf(fpdoc,"\n");
  1016. X    fprintf(fpdoc,
  1017. X"---------------------------------------------------------------------\n");
  1018. X    fread((char *)start_pos,sizeof(long),TOKEN_QUAN,fpdat);
  1019. X    pcmd = icmd_cmds;
  1020. X    while(pcmd->token != -1)
  1021. X    {
  1022. X        if(!pcmd->token)
  1023. X        {
  1024. X            pcmd++;
  1025. X            continue;
  1026. X        }
  1027. X        if(pcmd->min && !start_pos[pcmd->token])
  1028. X        {
  1029. X            printf("no help available for '%s'\n",pcmd->cmd);
  1030. X            pcmd++;
  1031. X            continue;
  1032. X        }
  1033. X        fseek(fpdat,start_pos[pcmd->token],0);
  1034. X        while(fgets(buf,sizeof(buf),fpdat) != NULL)
  1035. X        {
  1036. X            itmp = strlen(buf);
  1037. X            buf[--itmp] = 0;
  1038. X            if(itmp == 0)
  1039. X                break;
  1040. X            fprintf(fpdoc,"%s\n",buf);
  1041. X        }
  1042. X        fprintf(fpdoc,
  1043. X"---------------------------------------------------------------------\n");
  1044. X        pcmd++;
  1045. X    }
  1046. X    fclose(fpdat);
  1047. X    fclose(fpdoc);
  1048. X}    /* end of build_ecudoc */
  1049. X
  1050. X/*+-------------------------------------------------------------------------
  1051. X    build_ecutxt()
  1052. X--------------------------------------------------------------------------*/
  1053. Xvoid
  1054. Xbuild_ecutxt()
  1055. X{
  1056. Xregister int itmp;
  1057. Xregister char *cptr;
  1058. X
  1059. X    printf("\nBuilding %s\n",PTXT);
  1060. X    if((fpdat = fopen(PDAT,"r")) == NULL)
  1061. X    {
  1062. X        perror(PDAT);
  1063. X        exit(1);
  1064. X    }
  1065. X    if((fptxt = fopen(PTXT,"w")) == NULL)
  1066. X    {
  1067. X        perror(PTXT);
  1068. X        exit(1);
  1069. X    }
  1070. X
  1071. X    fread((char *)start_pos,sizeof(long),TOKEN_QUAN,fpdat);
  1072. X    pcmd = icmd_cmds;
  1073. X    while(pcmd->token != -1)
  1074. X    {
  1075. X        if(!pcmd->token)
  1076. X        {
  1077. X            pcmd++;
  1078. X            continue;
  1079. X        }
  1080. X        if(pcmd->min && !start_pos[pcmd->token])
  1081. X        {
  1082. X            printf("no help available for '%s'\n",pcmd->cmd);
  1083. X            pcmd++;
  1084. X            continue;
  1085. X        }
  1086. X        fseek(fpdat,start_pos[pcmd->token],0);
  1087. X        if(fgets(buf,sizeof(buf),fpdat) != NULL)
  1088. X        itmp = strlen(buf);
  1089. X        buf[--itmp] = 0;
  1090. X        cptr = buf;
  1091. X        while(*cptr)
  1092. X            if(*cptr == ' ')
  1093. X                cptr++;
  1094. X            else
  1095. X                break;
  1096. X        fprintf(fptxt,".*s 2 \"%s\"\n.(b L",cptr);
  1097. X        while(fgets(buf,sizeof(buf),fpdat) != NULL)
  1098. X        {
  1099. X            itmp = strlen(buf);
  1100. X            buf[--itmp] = 0;
  1101. X            if(itmp == 0)
  1102. X                break;
  1103. X            fprintf(fptxt,"%s\n",buf);
  1104. X        }
  1105. X        fprintf(fptxt,"\n.)b\n\n");
  1106. X        pcmd++;
  1107. X    }
  1108. X    fclose(fpdat);
  1109. X    fclose(fptxt);
  1110. X}    /* end of build_ecutxt */
  1111. X
  1112. X/*+-------------------------------------------------------------------------
  1113. X    test_help()
  1114. X--------------------------------------------------------------------------*/
  1115. Xvoid
  1116. Xtest_help()
  1117. X{
  1118. Xregister int itmp;
  1119. Xregister char *cptr;
  1120. X
  1121. X/* test code */
  1122. X    printf("\nNow to test\n");
  1123. X    if((fpdat = fopen(PDAT,"r")) == NULL)
  1124. X    {
  1125. X        perror(PDAT);
  1126. X        exit(1);
  1127. X    }
  1128. X    fread((char *)start_pos,sizeof(long),TOKEN_QUAN,fpdat);
  1129. X    while(1)
  1130. X    {
  1131. X        printf("\ncommand: ");
  1132. X        fgets(buf,sizeof(buf),stdin);
  1133. X        itmp = strlen(buf);
  1134. X        buf[--itmp] = 0;
  1135. X        if(itmp == 0)
  1136. X            break;
  1137. X        if(!(pcmd = search_cmd_list(buf)))
  1138. X        {
  1139. X            printf("'%s' not found in ecu cmd table\n",buf);
  1140. X            continue;
  1141. X        }
  1142. X        if(pcmd->min && !start_pos[pcmd->token])
  1143. X        {
  1144. X            printf("no help available for '%s'\n",buf);
  1145. X            continue;
  1146. X        }
  1147. X        fseek(fpdat,start_pos[pcmd->token],0);
  1148. X        while(fgets(buf,sizeof(buf),fpdat) != NULL)
  1149. X        {
  1150. X            itmp = strlen(buf);
  1151. X            buf[--itmp] = 0;
  1152. X            if(itmp == 0)
  1153. X                break;
  1154. X            printf("%s\n",buf);
  1155. X        }
  1156. X    }
  1157. X}    /* end of test_help */
  1158. X
  1159. X/*+-------------------------------------------------------------------------
  1160. X    main(argc,argv,envp)
  1161. X--------------------------------------------------------------------------*/
  1162. Xmain(argc,argv,envp)
  1163. Xint argc;
  1164. Xchar **argv;
  1165. Xchar **envp;
  1166. X{
  1167. Xregister int itmp;
  1168. Xregister char *cptr;
  1169. Xint iargv;
  1170. Xint b_flag = 0;
  1171. Xint s_flag = 0;
  1172. Xint t_flag = 0;
  1173. Xint f_flag = 0;
  1174. Xint d_flag = 0;
  1175. Xint n_flag = 0;
  1176. X
  1177. X    setbuf(stdout,NULL);
  1178. X    setbuf(stderr,NULL);
  1179. X
  1180. X    if(argc < 1)
  1181. X        usage();
  1182. X    for(iargv = 1; iargv < argc; iargv++)
  1183. X    {
  1184. X        if(argv[iargv][0] == '-')
  1185. X        {
  1186. X            switch(itmp = (argv[iargv][1]))
  1187. X            {
  1188. X                case 'b': b_flag = 1; break;
  1189. X                case 's': s_flag = 1; break;
  1190. X                case 't': t_flag = 1; break;
  1191. X                case 'd': d_flag = 1; break;
  1192. X                case 'n': n_flag = 1; break;
  1193. X                default:
  1194. X                    usage();
  1195. X                    break;
  1196. X            }
  1197. X        }
  1198. X        else
  1199. X            usage();
  1200. X    }
  1201. X    if(!b_flag && !s_flag && !t_flag && !d_flag && !n_flag && !f_flag)
  1202. X        usage();
  1203. X
  1204. X    if(b_flag)
  1205. X        build_ecuhelp();
  1206. X    if(d_flag)
  1207. X        build_ecudoc();
  1208. X    if(n_flag)
  1209. X        build_ecutxt();
  1210. X    if(s_flag)
  1211. X        show_cmds();
  1212. X    if(t_flag)
  1213. X        test_help();
  1214. X
  1215. X    exit(0);
  1216. X}    /* end of main */
  1217. X/* end of helpgen.c */
  1218. X/* vi: set tabstop=4 shiftwidth=4: */
  1219. SHAR_EOF
  1220. $TOUCH -am 0814204290 'help/helpgen.c' &&
  1221. chmod 0644 help/helpgen.c ||
  1222. echo 'restore of help/helpgen.c failed'
  1223. Wc_c="`wc -c < 'help/helpgen.c'`"
  1224. test 11307 -eq "$Wc_c" ||
  1225.     echo 'help/helpgen.c: original size 11307, current size' "$Wc_c"
  1226. # ============= help/lint_args.h ==============
  1227. echo 'x - extracting help/lint_args.h (Text)'
  1228. sed 's/^X//' << 'SHAR_EOF' > 'help/lint_args.h' &&
  1229. X/*+-----------------------------------------------------------------------
  1230. X    lint_args.h
  1231. X------------------------------------------------------------------------*/
  1232. X/*+:EDITS:*/
  1233. X/*:08-14-1990-20:40-wht@n4hgf-ecu3.00-flush old edit history */
  1234. X
  1235. X#ifndef BUILDING_LINT_ARGS
  1236. X#ifdef LINT_ARGS
  1237. X
  1238. X/* helpgen.c */
  1239. Xint cmd_baud(void );
  1240. Xint cmd_break(void );
  1241. Xint cmd_cd(void );
  1242. Xint cmd_clrx(void );
  1243. Xint cmd_cls(void );
  1244. Xint cmd_color(void );
  1245. Xint cmd_continue(void );
  1246. Xint cmd_cursor(void );
  1247. Xint cmd_delline(void );
  1248. Xint cmd_dial(void );
  1249. Xint cmd_do(void );
  1250. Xint cmd_duplex(void );
  1251. Xint cmd_echo(void );
  1252. Xint cmd_eeol(void );
  1253. Xint cmd_else(void );
  1254. Xint cmd_exit(void );
  1255. Xint cmd_expresp(void );
  1256. Xint cmd_fchmod(void );
  1257. Xint cmd_fclose(void );
  1258. Xint cmd_fdel(void );
  1259. Xint cmd_fgetc(void );
  1260. Xint cmd_fgets(void );
  1261. Xint cmd_fkey(void );
  1262. Xint cmd_flush(void );
  1263. Xint cmd_fopen(void );
  1264. Xint cmd_fputc(void );
  1265. Xint cmd_fputs(void );
  1266. Xint cmd_fread(void );
  1267. Xint cmd_fseek(void );
  1268. Xint cmd_fwrite(void );
  1269. Xint cmd_getf(void );
  1270. Xint cmd_goto(void );
  1271. Xint cmd_gotob(void );
  1272. Xint cmd_hangup(void );
  1273. Xint cmd_hexdump(void );
  1274. Xint cmd_home(void );
  1275. Xint cmd_icolor(void );
  1276. Xint cmd_ifi(void );
  1277. Xint cmd_ifs(void );
  1278. Xint cmd_insline(void );
  1279. Xint cmd_lbreak(void );
  1280. Xint cmd_lgets(void );
  1281. Xint cmd_logevent(void );
  1282. Xint cmd_lookfor(void );
  1283. Xint cmd_mkvar(void );
  1284. Xint cmd_nap(void );
  1285. Xint cmd_parity(void );
  1286. Xint cmd_pclose(void );
  1287. Xint cmd_plog(void );
  1288. Xint cmd_popen(void );
  1289. Xint cmd_prompt(void );
  1290. Xint cmd_ptrace(void );
  1291. Xint cmd_putf(void );
  1292. Xint cmd_return(void );
  1293. Xint cmd_rk(void );
  1294. Xint cmd_rname(void );
  1295. Xint cmd_rs(void );
  1296. Xint cmd_rx(void );
  1297. Xint cmd_ry(void );
  1298. Xint cmd_rz(void );
  1299. Xint cmd_scrdump(void );
  1300. Xint cmd_send(void );
  1301. Xint cmd_set(void );
  1302. Xint cmd_sk(void );
  1303. Xint cmd_ss(void );
  1304. Xint cmd_sx(void );
  1305. Xint cmd_sy(void );
  1306. Xint cmd_system(void );
  1307. Xint cmd_sz(void );
  1308. Xint cmd_vidcolor(void );
  1309. Xint cmd_vidnorm(void );
  1310. Xint cmd_vidrev(void );
  1311. Xint cmd_whilei(void );
  1312. Xint cmd_whiles(void );
  1313. Xint cmd_xon(void );
  1314. Xint main(int ,char **,char **);
  1315. Xint usage(void );
  1316. Xstruct p_cmd *search_cmd_list(char *);
  1317. Xvoid build_ecudoc(void );
  1318. Xvoid build_ecuhelp(void );
  1319. Xvoid build_ecutxt(void );
  1320. Xvoid show_cmds(void );
  1321. Xvoid test_help(void );
  1322. X/* util.c */
  1323. Xchar to_lower(char );
  1324. Xchar to_upper(char );
  1325. Xvoid pad_zstr_to_len(char *,int );
  1326. X
  1327. X#else        /* compiler doesn't know about prototyping */
  1328. X
  1329. X/* helpgen.c */
  1330. Xstruct p_cmd *search_cmd_list();
  1331. Xvoid build_ecudoc();
  1332. Xvoid build_ecuhelp();
  1333. Xvoid build_ecutxt();
  1334. Xvoid show_cmds();
  1335. Xvoid test_help();
  1336. X/* util.c */
  1337. Xchar to_lower();
  1338. Xchar to_upper();
  1339. Xvoid pad_zstr_to_len();
  1340. X
  1341. X#endif /* LINT_ARGS */
  1342. X#endif /* BUILDING_LINT_ARGS */
  1343. X
  1344. X/* end of lint_args.h */
  1345. SHAR_EOF
  1346. $TOUCH -am 0919224990 'help/lint_args.h' &&
  1347. chmod 0644 help/lint_args.h ||
  1348. echo 'restore of help/lint_args.h failed'
  1349. Wc_c="`wc -c < 'help/lint_args.h'`"
  1350. test 2592 -eq "$Wc_c" ||
  1351.     echo 'help/lint_args.h: original size 2592, current size' "$Wc_c"
  1352. # ============= help/util.c ==============
  1353. echo 'x - extracting help/util.c (Text)'
  1354. sed 's/^X//' << 'SHAR_EOF' > 'help/util.c' &&
  1355. X/*+-------------------------------------------------------------------------
  1356. X    util.c
  1357. X    wht%n4hgf@gatech.edu
  1358. X--------------------------------------------------------------------------*/
  1359. X/*+:EDITS:*/
  1360. X/*:08-14-1990-20:40-wht@n4hgf-ecu3.00-flush old edit history */
  1361. X
  1362. X# include "lint_args.h"
  1363. X
  1364. X/*+-------------------------------------------------------------------------
  1365. X    all touuper/tolower not created equally, so this works!
  1366. X--------------------------------------------------------------------------*/
  1367. Xchar to_upper(ch)
  1368. Xregister char    ch;
  1369. X{ return( ((ch >= 'a') && (ch <= 'z')) ? ch - 0x20 : ch);
  1370. X}   /* end of to_upper() */
  1371. X
  1372. Xchar to_lower(ch)
  1373. Xregister char    ch;
  1374. X{ return( ((ch >= 'A') && (ch <= 'Z')) ? ch + 0x20 : ch);
  1375. X}   /* end of to_lower() */
  1376. X
  1377. X
  1378. X/*+-----------------------------------------------------------------------
  1379. X    pad_zstr_to_len(zstr,len)
  1380. X
  1381. X  pads with spaces to specified length, unless already longer than
  1382. X  len in which case the string is truncated to 'len' characters.
  1383. X------------------------------------------------------------------------*/
  1384. Xvoid
  1385. Xpad_zstr_to_len(zstr,len)
  1386. Xchar    *zstr;
  1387. Xint        len;
  1388. X{
  1389. Xregister int    izstr;
  1390. X
  1391. X    izstr = strlen(zstr);
  1392. X    if(izstr >= len)
  1393. X        zstr[len] = 0;
  1394. X    else
  1395. X    {
  1396. X        while(izstr < len)
  1397. X            zstr[izstr++] = 0x20;
  1398. X        zstr[izstr] = 0;
  1399. X    }
  1400. X}    /* end of pad_zstr_to_len */
  1401. X
  1402. SHAR_EOF
  1403. $TOUCH -am 0814204290 'help/util.c' &&
  1404. chmod 0644 help/util.c ||
  1405. echo 'restore of help/util.c failed'
  1406. Wc_c="`wc -c < 'help/util.c'`"
  1407. test 1304 -eq "$Wc_c" ||
  1408.     echo 'help/util.c: original size 1304, current size' "$Wc_c"
  1409. # ============= ecufriend/Makefile ==============
  1410. if test ! -d 'ecufriend'; then
  1411.     echo 'x - creating directory ecufriend'
  1412.     mkdir 'ecufriend'
  1413. fi
  1414. echo 'x - extracting ecufriend/Makefile (Text)'
  1415. sed 's/^X//' << 'SHAR_EOF' > 'ecufriend/Makefile' &&
  1416. X#  CHK=0x8D0A
  1417. X#----------------------------------------------------------------
  1418. X# Makefile for sample ecufriend
  1419. X# wht%n4hgf@gatech.edu
  1420. X#----------------------------------------------------------------
  1421. X#+:EDITS:*/
  1422. X#:05-07-1990-21:21-wht@n4hgf-omit fcrc usage in release makes
  1423. X#:01-03-1990-15:30-wht-quit using -Ox --- Oi screws up too much
  1424. X#:11-23-1989-02:37-wht-start support for UNIX V/386
  1425. X#:11-19-1989-18:06-wht-creation
  1426. X
  1427. Xecufriend: ecufriend.c
  1428. X    cc -O `sysdep =M_I286 -M2e =M_I386` ecufriend.c -o $@
  1429. SHAR_EOF
  1430. $TOUCH -am 0813184890 'ecufriend/Makefile' &&
  1431. chmod 0644 ecufriend/Makefile ||
  1432. echo 'restore of ecufriend/Makefile failed'
  1433. Wc_c="`wc -c < 'ecufriend/Makefile'`"
  1434. test 502 -eq "$Wc_c" ||
  1435.     echo 'ecufriend/Makefile: original size 502, current size' "$Wc_c"
  1436. # ============= ecufriend/ecufriend.c ==============
  1437. echo 'x - extracting ecufriend/ecufriend.c (Text)'
  1438. sed 's/^X//' << 'SHAR_EOF' > 'ecufriend/ecufriend.c' &&
  1439. X#define DUMP_SCREEN
  1440. X/*+-------------------------------------------------------------------------
  1441. X    ecufriend.c -- example of using ecu shared memory access
  1442. X    wht%n4hgf@gatech.edu
  1443. X
  1444. XExecute by ecu procedure command:  system -s 'ecufriend '+%itos(%shmid)
  1445. XTo manually execute for perusal, do an ipcs command to find the
  1446. Xshared memory id or HOME pc echo 'shmid='+%itos(%shmid)
  1447. XThen HOME >ecufriend # where # is replaced by the shmid
  1448. X--------------------------------------------------------------------------*/
  1449. X/*+:EDITS:*/
  1450. X/*:08-14-1990-20:40-wht@n4hgf-ecu3.00-flush old edit history */
  1451. X
  1452. X#include <stdio.h>
  1453. X#include <signal.h>
  1454. X#include <termio.h>
  1455. X#include <sys/errno.h>
  1456. X#include <sys/types.h>
  1457. X#include <sys/stat.h>
  1458. X#include <time.h>
  1459. X#include <sys/ipc.h>
  1460. X#include <sys/msg.h>
  1461. X#include <sys/shm.h>
  1462. X#include "../ecushm.h"
  1463. X
  1464. XECU_SDS FAR *shm;        /* shared segment pointer */
  1465. Xint shmid;                /* sharged segment id */
  1466. X
  1467. X/*+-------------------------------------------------------------------------
  1468. X    main(argc,argv,envp)
  1469. X--------------------------------------------------------------------------*/
  1470. Xmain(argc,argv,envp)
  1471. Xint argc;
  1472. Xchar **argv;
  1473. Xchar **envp;
  1474. X{
  1475. Xregister itmp;
  1476. X#ifdef DUMP_SCREEN
  1477. Xint row,col;
  1478. Xunsigned char sch;
  1479. X#endif
  1480. X
  1481. X    if(argc < 2)
  1482. X    {
  1483. X        printf("usage: ecufriend <ecu-shmid>\n");
  1484. X            exit(255);
  1485. X    }
  1486. X    shmid = atoi(argv[1]);
  1487. X
  1488. X    if((shm = (ECU_SDS FAR *)shmat(shmid,(char FAR *)0,SHM_RDONLY))
  1489. X            == (ECU_SDS FAR *)-1)
  1490. X    {
  1491. X        perror("shmat");
  1492. X        exit(1);
  1493. X    }
  1494. X
  1495. X    printf("ecu shm address = %08lx shmid=%d revision=%08lx\n",
  1496. X        shm,shmid,shm->shm_revision);
  1497. X
  1498. X    if(shm->shm_revision != SHM_REV)
  1499. X    {
  1500. X        printf("incompatible shared memory revision (compiled with %08lx)\n",
  1501. X            SHM_REV);
  1502. X        exit(1);
  1503. X    }
  1504. X
  1505. X    printf("xmit chars=%lu rcvd chars=%lu\n",
  1506. X        shm->xmit_chars,shm->rcvd_chars);
  1507. X    printf("The receive cursor position is at column %d row %d\n",
  1508. X        shm->cursor_y,shm->cursor_x);
  1509. X
  1510. X    printf("If this program was not executed by a shell that closed it,\n");
  1511. X    printf("then fd %d is available to us to write and read from the line.\n",
  1512. X        shm->Liofd);
  1513. X
  1514. X    if(isatty(shm->Liofd))
  1515. X        printf("It is available.\n");
  1516. X    else
  1517. X        printf("It is not available. Even so, we could re-open %s here\n",
  1518. X            shm->Lline);
  1519. X
  1520. X    if(shm->Lmodem_off_hook)
  1521. X        printf("Hmmm.. we seem to be connected to %s at %s\n",
  1522. X            shm->Ldescr,shm->Ltelno);
  1523. X
  1524. X#ifdef DUMP_SCREEN
  1525. X    printf("screen dump\n");
  1526. X    printf("-----------\n");
  1527. X    for(row = 0; row < 43; row++)
  1528. X    {
  1529. X        for(col = 0; col < 79; col++)
  1530. X        {
  1531. X            sch = shm->screen[row][col];
  1532. X            if((sch < 0x20) && (sch > 0x7E))
  1533. X                putc('.',stdout);
  1534. X            else
  1535. X                putc(sch,stdout);
  1536. X        }
  1537. X        putc('\n',stdout);
  1538. X    }
  1539. X#endif
  1540. X
  1541. X    exit(0);
  1542. X}    /* end of main */
  1543. X
  1544. X/* vi: set tabstop=4 shiftwidth=4: */
  1545. X/* end of ecufriend.c */
  1546. SHAR_EOF
  1547. $TOUCH -am 0814204290 'ecufriend/ecufriend.c' &&
  1548. chmod 0644 ecufriend/ecufriend.c ||
  1549. echo 'restore of ecufriend/ecufriend.c failed'
  1550. Wc_c="`wc -c < 'ecufriend/ecufriend.c'`"
  1551. test 2665 -eq "$Wc_c" ||
  1552.     echo 'ecufriend/ecufriend.c: original size 2665, current size' "$Wc_c"
  1553. # ============= ecuungetty/Makefile ==============
  1554. if test ! -d 'ecuungetty'; then
  1555.     echo 'x - creating directory ecuungetty'
  1556.     mkdir 'ecuungetty'
  1557. fi
  1558. echo 'x - extracting ecuungetty/Makefile (Text)'
  1559. sed 's/^X//' << 'SHAR_EOF' > 'ecuungetty/Makefile' &&
  1560. X#  CHK=0xC221
  1561. X#+---------------------------------------------------------------
  1562. X# makefile for ecuungetty
  1563. X# must be root to run make install
  1564. X# this make file should be run only by the master ecu Makefile,
  1565. X# or else you must define LCRYPT as needed herein
  1566. X#----------------------------------------------------------------
  1567. X#+:EDITS:*/
  1568. X#:10-20-1990-14:30-wht@n4hgf-fix bugs found by tbetz@upaya
  1569. X#:07-07-1990-02:06-wht@n4hgf-use ECULIBDIR
  1570. X#:05-07-1990-21:21-wht@n4hgf-omit fcrc usage in release makes
  1571. X#:01-03-1990-15:30-wht-quit using -Ox --- Oi screws up too much
  1572. X#:11-23-1989-02:37-wht-start support for UNIX V/386
  1573. X#:11-02-1989-16:00-wht-unet2 release
  1574. X
  1575. XCFLAGS = `sysdep =M_I386 -O =M_I286 -O -M2le`
  1576. X
  1577. XOBJ = \
  1578. X    ../ecuuclc.o\
  1579. X    ../ecuLCK.o\
  1580. X    ../utmpstat.o\
  1581. X    ../bamboozle.o\
  1582. X    ecuungetty.o
  1583. X
  1584. X#overriden by master make file
  1585. XECULIBDIR = /usr/lib/ecu
  1586. X#ECULIBDIR = /usr/local/lib/ecu
  1587. X
  1588. Xall: ecuungetty
  1589. X
  1590. Xecuungetty: $(OBJ)
  1591. X    cc $(CFLAGS) $(OBJ) -o ecuungetty $(LCRYPT) -lx
  1592. X
  1593. Xinstall: ecuungetty
  1594. X    -mkdir $(ECULIBDIR)
  1595. X    -chmod 755 $(ECULIBDIR)
  1596. X    cp ecuungetty $(ECULIBDIR)
  1597. X    chown root $(ECULIBDIR)/ecuungetty
  1598. X    chmod 4711 $(ECULIBDIR)/ecuungetty
  1599. X
  1600. X../bamboozle.o: ../bamboozle.c
  1601. X    cd ..;make bamboozle.o
  1602. X
  1603. X../utmpstat.o: ../utmpstat.c
  1604. X    cd ..;make utmpstat.o
  1605. X
  1606. X../ecuuclc.o: ../ecuuclc.c
  1607. X    cd ..;make ecuuclc.o
  1608. X
  1609. X../ecuLCK.o: ../ecuLCK.c
  1610. X    cd ..;make ecuLCK.o
  1611. X
  1612. SHAR_EOF
  1613. $TOUCH -am 1020143090 'ecuungetty/Makefile' &&
  1614. chmod 0644 ecuungetty/Makefile ||
  1615. echo 'restore of ecuungetty/Makefile failed'
  1616. Wc_c="`wc -c < 'ecuungetty/Makefile'`"
  1617. test 1331 -eq "$Wc_c" ||
  1618.     echo 'ecuungetty/Makefile: original size 1331, current size' "$Wc_c"
  1619. true || echo 'restore of ecuungetty/ecuungetty.c failed'
  1620. echo End of part 17, continue with part 18
  1621. exit 0
  1622. --------------------------------------------------------------------
  1623. Warren Tucker, TuckerWare emory!n4hgf!wht or wht@n4hgf.Mt-Park.GA.US
  1624. Hacker Extraordinaire  d' async PADs,  pods,  proteins and protocols
  1625.  
  1626. exit 0 # Just in case...
  1627. -- 
  1628. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1629. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1630. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1631. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1632.