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

  1. From: wht@n4hgf.uucp (Warren Tucker)
  2. Newsgroups: comp.sources.misc
  3. Subject: v16i025:  ECU async comm package rev 3.0, Part01/35
  4. Message-ID: <1991Jan6.051644.27229@sparky.IMD.Sterling.COM>
  5. Date: 6 Jan 91 05:16:44 GMT
  6. Approved: kent@sparky.imd.sterling.com
  7. X-Checksum-Snefru: f26efa9d d14ddd47 d107eabe 89b3df78
  8.  
  9. Submitted-by: wht@n4hgf.uucp (Warren Tucker)
  10. Posting-number: Volume 16, Issue 25
  11. Archive-name: ecu3/part01
  12.  
  13. This is ECU revision 3.00.00.  ECU is a asynchronous
  14. communications program for SCO UNIX System V/386 or XENIX System
  15. V/286 or 386 on AT-class computer systems.  It incorporates
  16. typical interactive communications capabilities with a rich
  17. procedure language, an extended set of immediate (interactive)
  18. commands, and several file transfer protocols.  The operating
  19. system and development system is expected to be revision 2.3.1 or
  20. later for XENIX and 3.2.0 for UNIX.
  21.  
  22. Experimental support for non-ANSI consoles has been added.  Bugs
  23. are expected and reports will be greatly appreciated.  Your
  24. non-ANSI terminal must be fairly "smart", with insert/delete-line
  25. features, erase-to-end-of-line, etc..  See the manual.
  26.  
  27. Many thanks to those who helped me improve the program,
  28. especially tbetz@upaya, jmd@wa4cyb, jts@ki4xo, jsm@n4vu,
  29. cma@tridom, neal@clkwrka, mjb@mjbtn and rob@genrad.
  30.  
  31. The doc subdirectory has all of the .txt files used to produce
  32. ecu.man, the manual of sorts for the program.  A copy of it is
  33. reluctantly included (net.bandwidth) for those who do not have
  34. nroff.
  35.  
  36. There have been *MANY* changes to ECU since revision 2.8.  It is
  37. worth re-reading this file and *at least* the table of contents of
  38. the manual to see what's changed.  No effort has been spared to
  39. remain compatible with the previous version, but some changes
  40. were necessary.
  41.  
  42. Notably, your pre rev-3 ~/.ecu/phone file must have a special
  43. line added manually to the top of it: #ECUPHONE.  See
  44. models/phone for an example.
  45.  
  46. Bug reports, comments and suggestions are heartily requested.
  47. Also, I will start an ECU mailing list is there is any interest.
  48.  
  49. My address: Warren H. Tucker                         (404)587-5766
  50.             Tuckerware                     wht@n4hgf.Mt-Park.GA.US
  51.             150 West Lake Drive           {gatech,emory}!n4hgf!wht
  52.             Mountain Park, Ga. 30075 USA
  53.  
  54. ---- Cut Here and feed the following to sh ----
  55. #!/bin/sh
  56. # This is ecu3, a shell archive (shar 3.46)
  57. # made 12/26/1990 10:28 UTC by wht@n4hgf.Mt-Park.GA.US
  58. # Source directory /u1/src/ecu
  59. #
  60. # existing files WILL be overwritten
  61. #
  62. # This shar contains:
  63. # length  mode       name
  64. # ------ ---------- ------------------------------------------
  65. #   8303 -rw-r--r-- README
  66. #  13617 -rw-r--r-- ANCIENTHISTORY
  67. #    835 -rw-r--r-- ESOTERIC
  68. #  13973 -rw-r--r-- Make.ecu
  69. #   4060 -rw-r--r-- afterlint.c
  70. #   1470 -rw-r--r-- bamboozle.c
  71. #    413 -rw-r--r-- cmdtbl.c
  72. #   9953 -rw-r--r-- ecu.c
  73. #  20605 -rw-r--r-- ecuDCE.c
  74. #   3727 -rw-r--r-- ecuLCK.c
  75. #   8377 -rw-r--r-- ecuchdir.c
  76. #   3656 -rw-r--r-- ecudump.c
  77. #   6693 -rw-r--r-- ecufinsert.c
  78. #  12100 -rw-r--r-- ecufkey.c
  79. #  12087 -rw-r--r-- ecufork.c
  80. #   7552 -rw-r--r-- ecuicmaux.c
  81. #  12735 -rw-r--r-- ecuicmd.c
  82. #   7848 -rw-r--r-- ecuicmhelp.c
  83. #   3336 -rw-r--r-- ecuicmhist.c
  84. #  23928 -rw-r--r-- eculine.c
  85. #   4250 -rw-r--r-- eculock.c
  86. #    834 -rw-r--r-- ecunumrev.c
  87. #  48468 -rw-r--r-- ecuphone.c
  88. #   5521 -rw-r--r-- ecuphrase.c
  89. #  30050 -rw-r--r-- ecurcvr.c
  90. #   4434 -rw-r--r-- ecuscrdump.c
  91. #  14649 -rw-r--r-- ecusetup.c
  92. #   7052 -rw-r--r-- ecushm.c
  93. #  11775 -rw-r--r-- ecusighdl.c
  94. #  14554 -rw-r--r-- ecutcap.c
  95. #   4253 -rw-r--r-- ecutime.c
  96. #  23288 -rw-r--r-- ecutty.c
  97. #   5623 -rw-r--r-- ecuuclc.c
  98. #   2642 -rw-r--r-- ecuusage.c
  99. #  25588 -rw-r--r-- ecuutil.c
  100. #   9536 -rw-r--r-- ecuwinutil.c
  101. #  14176 -rw-r--r-- ecuxenix.c
  102. #  23483 -rw-r--r-- ecuxfer.c
  103. #  17780 -rw-r--r-- esdutil.c
  104. #   8287 -rw-r--r-- esiointf.c
  105. #   9617 -rw-r--r-- expresp.c
  106. #  24950 -rw-r--r-- feval.c
  107. #   6629 -rw-r--r-- gint.c
  108. #   5212 -rw-r--r-- gstr.c
  109. #  15942 -rw-r--r-- hdbintf.c
  110. #   2521 -rw-rw-r-- kbdtest.c
  111. #   1295 -rw-r--r-- logevent.c
  112. #   6955 -rw-r--r-- nonansikey.c
  113. #  24203 -rw-r--r-- pcmd.c
  114. #  22839 -rw-r--r-- pcmdfile.c
  115. #  13817 -rw-r--r-- pcmdif.c
  116. #   7941 -rw-r--r-- pcmdtty.c
  117. #   2686 -rw-r--r-- pcmdwhile.c
  118. #  11327 -rw-r--r-- pcmdxfer.c
  119. #   4352 -rw-r--r-- poutput.c
  120. #   3525 -rw-r--r-- pprintf.c
  121. #  16834 -rw-r--r-- proc.c
  122. #   4423 -rw-r--r-- proc_error.c
  123. #   3397 -rw-r--r-- procframe.c
  124. #  10229 -rw-r--r-- regexp.c
  125. #   2206 -rw-r--r-- sysdep.c
  126. #   3906 -rw-r--r-- utmpstat.c
  127. #  10027 -rw-r--r-- var.c
  128. #   1616 -rw-r--r-- dialprog.h
  129. #    545 -rw-r--r-- dlent.h
  130. #    722 -rw-r--r-- dvent.h
  131. #   4010 -rw-r--r-- ecu.h
  132. #  11044 -rw-r--r-- ecucmd.h
  133. #   3939 -rw-r--r-- ecuerror.h
  134. #   1457 -rw-r--r-- ecufkey.h
  135. #    402 -rw-r--r-- ecufork.h
  136. #   1056 -rw-r--r-- ecuhangup.h
  137. #    706 -rw-r--r-- ecukey.h
  138. #    733 -rw-r--r-- ecupde.h
  139. #   3042 -rw-r--r-- ecushm.h
  140. #    955 -rw-r--r-- ecutty.h
  141. #   1052 -rw-r--r-- ecuungetty.h
  142. #    584 -rw-r--r-- ecuvmin.h
  143. #   1534 -rw-r--r-- ecuxkey.h
  144. #    857 -rw-r--r-- esd.h
  145. #   2176 -rw-r--r-- feval.h
  146. #  27009 -rw-r--r-- lint_args.h
  147. #     21 -rw-r--r-- patchlevel.h
  148. #   1199 -rw-r--r-- pc_scr.h
  149. #    938 -rw-r--r-- proc.h
  150. #    516 -rw-r--r-- relop.h
  151. #   1407 -rw-r--r-- smap.h
  152. #   1287 -rw-r--r-- stdio_lint.h
  153. #    592 -rw-r--r-- utmpstatus.h
  154. #    505 -rw-r--r-- var.h
  155. #   2124 -rw-r--r-- help/Makefile
  156. #  24593 -rw-r--r-- help/ecuhelp.src
  157. #  11307 -rw-r--r-- help/helpgen.c
  158. #   2592 -rw-r--r-- help/lint_args.h
  159. #   1304 -rw-r--r-- help/util.c
  160. #    502 -rw-r--r-- ecufriend/Makefile
  161. #   2665 -rw-r--r-- ecufriend/ecufriend.c
  162. #   1331 -rw-r--r-- ecuungetty/Makefile
  163. #   3923 -rw-r--r-- ecuungetty/ecuungetty.c
  164. #   2060 -rw-r--r-- mapkey/README
  165. #   5709 -rw-r--r-- mapkey/keys.usa.ecu.d
  166. #   3558 -rw-r--r-- bperr/bperr.c
  167. #   3163 -rw-r--r-- z/Makefile
  168. #   1509 -rw-r--r-- z/baudtest.c
  169. #  41299 -rw-r--r-- z/ecurz.c
  170. #  41872 -rw-r--r-- z/ecusz.c
  171. #  15601 -rw-r--r-- z/zcommon.c
  172. #  33753 -rw-r--r-- z/zcurses.c
  173. #    174 -rw-r--r-- z/zdebug.c
  174. #   2818 -rw-r--r-- z/zlint.h
  175. #  16442 -rw-r--r-- z/zmodem.c
  176. #   6728 -rw-r--r-- z/zmodem.h
  177. #    913 -rw-r--r-- sea/Makefile
  178. #  35194 -rw-r--r-- sea/ecusea.c
  179. #   2779 -rw-r--r-- sea/lint_args.h
  180. #  22139 -rw-r--r-- sea/scurses.c
  181. #  11247 -rw-r--r-- sea/sealink.doc
  182. #   5213 -rw-r--r-- sea/sealink.imp
  183. #   1713 -rw-r--r-- gendial/Makefile
  184. #   6539 -rw-r--r-- gendial/dialer.h
  185. #  25754 -rw-r--r-- gendial/gendial.c
  186. #  18448 -rw-r--r-- gendial/dceT2500.c
  187. #   9615 -rw-r--r-- gendial/template.c
  188. #  13186 -rw-r--r-- gendial/dceMC9624.c
  189. #  17853 -rw-r--r-- gendial/dceTBPlus.c
  190. #  17704 -rw-r--r-- gendial/dceT1000.c
  191. #  14315 -rw-r--r-- gendial/dceMPAD.c
  192. #   1949 -rw-r--r-- xsel386/fixttiocom.c
  193. #   2981 -rw-r--r-- xsel386/select-update
  194. #   1237 -rw-r--r-- xsel386/select.asm
  195. #  21402 -rw-r--r-- xsel386/select.txt
  196. #    391 -rw-r--r-- xsel386/ttiocom.c
  197. #   2354 -rw-r--r-- shar.fls
  198. #     19 -rw-r--r-- sea/ecusea.fls
  199. #     38 -rw-r--r-- z/comsrc.fls
  200. #  40415 -rw-r--r-- ckermit/ckermit.01
  201. #  40639 -rw-r--r-- ckermit/ckermit.02
  202. #  19216 -rw-r--r-- ckermit/ckermit.03
  203. #   6049 -rw-r--r-- doc/_basic.txt
  204. #     39 -rw-r--r-- doc/_end.txt
  205. #   1767 -rw-r--r-- doc/_exit.txt
  206. #  25444 -rw-r--r-- doc/_features.txt
  207. #   3940 -rw-r--r-- doc/_hdb.txt
  208. #  28501 -rw-r--r-- doc/_icmd.txt
  209. #   2184 -rw-r--r-- doc/_intro.txt
  210. #  44600 -rw-r--r-- doc/_p_cmd.txt
  211. #  11341 -rw-r--r-- doc/_p_ifunc.txt
  212. #   4995 -rw-r--r-- doc/_p_param.txt
  213. #   9865 -rw-r--r-- doc/_p_sfunc.txt
  214. #    171 -rw-r--r-- doc/_proc.txt
  215. #   8276 -rw-r--r-- doc/_startup.txt
  216. #    973 -rw-r--r-- doc/_tech.txt
  217. #    519 -rw-r--r-- doc/_top.txt
  218. #    170 -rw-r--r-- doc/ecu.txt
  219. #    104 -rwxr-xr-x doc/runoff
  220. #    673 -rw-r--r-- models/bsd_uname.ep
  221. #    140 -rw-r--r-- models/colors
  222. #     14 -rw-r--r-- models/dir
  223. #    815 -rw-r----- models/f.ep
  224. #   1667 -rw-r--r-- models/file_test.ep
  225. #    317 -rw-r--r-- models/frame_test.ep
  226. #    198 -rw-r--r-- models/gosub.ep
  227. #    447 -rw-r--r-- models/goto_test.ep
  228. #    420 -rw-r--r-- models/if_test.ep
  229. #    322 -rw-r--r-- models/keys
  230. #    515 -rw-r--r-- models/lookfortest.ep
  231. #    578 -rw-r--r-- models/mhack_test.ep
  232. #     40 -rw-r--r-- models/mkdir.ep
  233. #   5679 -rw-r--r-- models/nonansikeys
  234. #    877 -rw-r--r-- models/oneline.ep
  235. #   2086 -rw-r--r-- models/opuslogin.ep
  236. #   1110 -rw-r----- models/p.ep
  237. #    261 -rw-r--r-- models/phone
  238. #    117 -rw----r-- models/phrases
  239. #    895 -rw-r--r-- models/ps.ep
  240. #   1963 -rw-r--r-- models/put_ecu.ep
  241. #    503 -rw-r--r-- models/root.ep
  242. #   4983 -rw-r--r-- models/rz_update.ep
  243. #    643 -rw-r--r-- models/scm.ep
  244. #    557 -rw-r--r-- models/senddate.ep
  245. #   2489 -rw-r--r-- models/sf_test.ep
  246. #   1465 -rw-r--r-- models/su.ep
  247. #    766 -rw-r----- models/sysname.ep
  248. #   4479 -rw-r--r-- models/sz_update.ep
  249. #    127 -rw-r--r-- models/szall.ep
  250. #    495 -rw-r--r-- models/tty1a.mi
  251. #    446 -rw-r--r-- models/tty2d.mi
  252. #   3689 -rw-r----- models/unixlogin.ep
  253. #    649 -rwxr-xr-x zgcc
  254. #   3418 -rw-r--r-- mkoldproto.l
  255. #
  256. if touch 2>&1 | fgrep 'amc' > /dev/null
  257.  then TOUCH=touch
  258.  else TOUCH=true
  259. fi
  260. # ============= README ==============
  261. echo 'x - extracting README (Text)'
  262. sed 's/^X//' << 'SHAR_EOF' > 'README' &&
  263. X.--------------------------------------------------------.
  264. X| ECU README - last revised Sat Dec 22 00:10:12 EDT 1990 |
  265. X`--------------------------------------------------------'
  266. X
  267. XThis is ECU revision 3.00.00.  ECU is a asynchronous
  268. Xcommunications program for SCO UNIX System V/386 or XENIX System
  269. XV/286 or 386 on AT-class computer systems.  It incorporates
  270. Xtypical interactive communications capabilities with a rich
  271. Xprocedure language, an extended set of immediate (interactive)
  272. Xcommands, and several file transfer protocols.  The operating
  273. Xsystem and development system is expected to be revision 2.3.1 or
  274. Xlater for XENIX and 3.2.0 for UNIX.
  275. X
  276. XExperimental support for non-ANSI consoles has been added.  Bugs
  277. Xare expected and reports will be greatly appreciated.  Your
  278. Xnon-ANSI terminal must be fairly "smart", with insert/delete-line
  279. Xfeatures, erase-to-end-of-line, etc..  See the manual.
  280. X
  281. XMany thanks to those who helped me improve the program,
  282. Xespecially tbetz@upaya, jmd@wa4cyb, jts@ki4xo, jsm@n4vu,
  283. Xcma@tridom, neal@clkwrka, mjb@mjbtn and rob@genrad.
  284. X
  285. XThe doc subdirectory has all of the .txt files used to produce
  286. Xecu.man, the manual of sorts for the program.  A copy of it is
  287. Xreluctantly included (net.bandwidth) for those who do not have
  288. Xnroff.
  289. X
  290. X--------------------------------------------------------------------
  291. X
  292. XNOTE TO PRE-REVISION-3 USERS:
  293. X
  294. XThere have been *MANY* changes to ECU since revision 2.8.  It is
  295. Xworth re-reading this file and *at least* the table of contents of
  296. Xthe manual to see what's changed.  No effort has been spared to
  297. Xremain compatible with the previous version, but some changes
  298. Xwere necessary.
  299. X
  300. XNotably, your pre rev-3 ~/.ecu/phone file must have a special
  301. Xline added manually to the top of it: #ECUPHONE.  See
  302. Xmodels/phone for an example.
  303. X
  304. XIn general:
  305. X
  306. X    $i0 = 5
  307. X    whilei $i0 != 0
  308. X    {
  309. X        do 'read-new-man'
  310. X        ifs %logname != 'confused'
  311. X            break
  312. X        $i0 = $i0 - 1
  313. X    } 
  314. X    ifs %logname == 'confused'
  315. X        system 'mail -s help wht@n4hgf.Mt-Park.GA.US < flame.txt'
  316. X
  317. X--------------------------------------------------------------------
  318. X
  319. XTTY devices must be named in the style of:
  320. X
  321. X     /dev/tty#N
  322. X             ^^
  323. X             ||
  324. X             |`------ uppercase letter for modem control
  325. X             |        lowercase for non-modem control
  326. X             `--------digit (1-4)
  327. X
  328. X
  329. XA future version of ECU will address this limitation.
  330. X
  331. XIf you are using FAS or other third-party driver, you may use ECU
  332. Xwith ports not normally named in the /dev/tty#N style in one of two
  333. Xways under UNIX and one way under XENIX:
  334. X
  335. X
  336. X     1.  Under XENIX or UNIX, create a link to the port
  337. X         with a compatible name:
  338. X
  339. X               ln /dev/ttyF00 /dev/tty1a
  340. X               ln /dev/ttyFM00 /dev/tty1A
  341. X
  342. X     2.  Under UNIX, add additional lines to the
  343. X         /etc/conf/node.d file and rebuild the kernel
  344. X         environment (this is the recommended approach
  345. X         for UNIX):
  346. X
  347. X     fas ttyF00  c   48
  348. X     fas tty1a   c   48
  349. X     fas ttyF01  c   49
  350. X     fas tty1b   c   49
  351. X     fas ttyFM00 c   208
  352. X     fas tty1A   c   208
  353. X     fas ttyFM01 c   209
  354. X     fas tty1B   c   209
  355. X
  356. X--------------------------------------------------------------------
  357. X
  358. XNOTE: SEAlink is provided as-is. I haven't used it since I
  359. Xtested it in 1989.
  360. X
  361. X--------------------------------------------------------------------
  362. X
  363. XIf you are using an xterm to run ecu, 
  364. X
  365. X1. the maximum geometry is 80x43
  366. X2. 4014 emulation is untested
  367. X3. you should use the following resources:
  368. X
  369. XXTerm*titeInhibit:     true # enable screen clear functions normally
  370. XXTerm*curses:          true # curses bug fix
  371. X
  372. X--------------------------------------------------------------------
  373. X
  374. XTo make and install the program:
  375. X
  376. X1.   unshar all of the shars
  377. X
  378. X2.   copy Make.ecu to Makefile
  379. X
  380. X3.   edit ./Makefile to match your local system and requirements
  381. X
  382. X4.   If your username is root or you have write access to your
  383. X     local bin directory (LBIN in Makefile) just type 'make tools'
  384. X     If needed, su to root, 'make tools', then exit the root shell.  
  385. X
  386. X     Just a note: on 286 systems you make have to use makeL, since
  387. X     make is a small model (medium?) and makeL is a large model
  388. X     program.  marks@msge reported that under XENIX 286, it was
  389. X     necessary to use:
  390. X
  391. X              make -n tools | sh
  392. X
  393. X     If the above fails, try 'makeL' or 'makeL -n | sh'.
  394. X     It has been a while since I had a 286 to check this
  395. X     out on. Please let me know what works for you.
  396. X
  397. X5.   Type 'make'.  Wait and watch a while.  This is a good time to
  398. X     be reading over doc/ecu.man. 
  399. X
  400. X6.   Su to root, if not already and type 'make install'.
  401. X
  402. X7.   Create a subdirectory in your home directory called '.ecu' (~/.ecu).
  403. X
  404. X8.   Copy models/* to ~/.ecu.  NOTE:  if you have used pre rev-3 versions
  405. X     of ECU, skip this step, but you might want to look through the
  406. X     models directory, since new examples have been added and some
  407. X     have been revised.
  408. X
  409. X9.   The 'make install' doesn't do it, because *you* should make the
  410. X     informed choice to do it, but you must make the /dev/tty??
  411. X     and /usr/spool/uucp world readable and writable for ECU
  412. X     to create lock files and to access serial lines.
  413. X
  414. X     Under XENIX:  chmod +rw /usr/spool/uucp /dev/tty?[A-Za-z]
  415. X     Under UNIX:   chmod +rw,g+s /usr/spool/uucp
  416. X                   chmod +rw /dev/tty?[A-Za-z]
  417. X
  418. X10.  The gendial subdirectory contains some rigorous, yet
  419. X     experimental, dialer programs for use with ECU, cu and uucico.
  420. X     They are currently undocumented and "as-is."
  421. X
  422. X--------------------------------------------------------------------
  423. XNotes:
  424. X
  425. X1.  KERMIT:
  426. XA XENIX/286 (lowest common denominator) binary of a suitable
  427. Xckermit is compress-shared in the ckermit subdirectory.  You
  428. Xshould unshar it and place it in the same directory as ECU.
  429. XAlas, I do not have full source for it.  I plan to support the
  430. X(excellent) C-Kermit 5 as soon as it is released.
  431. X
  432. X2.  SELECT(S)
  433. XSCO XENIX V/386 Release 2.3.1 (and evidently 2.3.2) have a
  434. Xbroken-dead, yet fixable, BSD-style select() feature.  Also,
  435. Xselect() is missing from libc.a.  While ECU does not *require*
  436. Xselect(S), it is much more efficient to use it.  The x386sel
  437. Xsubdirectory in this release has information (thanks to
  438. Xcsch@netcs, ivar@acc, and ag@elgar) on how to fix the kernel and
  439. Xto add select() to libc.a.
  440. X
  441. XSelect(S) is fully functional in UNIX.
  442. X
  443. X3.  CRYPT
  444. XCrypt may be used to make the ecuungetty function more secure.
  445. XIf your system has no untrusted users, or even some relatively
  446. Xlazy untrusted users, leave CRYPT and LCRYPT commented in the
  447. XMakefile.  Since somewhat unlazy users can read the source as
  448. Xreleased and still wreak havoc with your ttys, you might want to
  449. Xchange the non-CRYPT "encryption" algorithm in bamboozle.c to
  450. Xmake your installation unique.
  451. X
  452. X4.  MULTISCREEN BUG
  453. XThere has been a bug in the multiscreen driver for some time
  454. Xwherein a MEDIA COPY (screen dump) sequence ("ESC [ 2 i") leaves
  455. Xthe "ESC [ 2" part "active".  When a screen dump (Cursor 5)
  456. Xcommand is given, I do the sacreen dump, then send a "l" to the
  457. Xscreen to work around the bug ("ESC 2 [ l" unlocks the keyboard,
  458. Xessentially a no-op).  If and when it gets fixed, you'll see an
  459. X"l" show up on your screen after a screen dump sequence.  To fix
  460. Xthis, comment out the
  461. X#define MULTISCREEN_DUMP_BUG
  462. Xat the top of ecuscrdump.c.
  463. X
  464. XNote that from multiscreens, screen dump produces a dump of the
  465. Xactual screen contents, including ECU-generated output.  When
  466. Xusing a non-multiscreen terminal, screen dump dumps only the 
  467. Xshared memory virtual screen as received from the host.
  468. X
  469. XIf, at a multiscreen, you wish a screen dump free of ECU output
  470. X"pollution," use Shift-Tab (BkTab) to redraw the screen, then
  471. Xperform the screen dump.
  472. X
  473. X--------------------------------------------------------------------
  474. X
  475. XThis program, it sources, objects and utilities are placed in the
  476. Xpublic domain.  No GNU, no Copydown, just FREE. That saved 2Kb per
  477. Xmodule, didn't it?
  478. X
  479. X--------------------------------------------------------------------
  480. XMy address: Warren H. Tucker                         (404)587-5766
  481. X            Tuckerware                     wht@n4hgf.Mt-Park.GA.US
  482. X            150 West Lake Drive           {gatech,emory}!n4hgf!wht
  483. X            Mountain Park, Ga. 30075 USA
  484. X--------------------------------------------------------------------
  485. SHAR_EOF
  486. $TOUCH -am 1226043890 'README' &&
  487. chmod 0644 README ||
  488. echo 'restore of README failed'
  489. Wc_c="`wc -c < 'README'`"
  490. test 8303 -eq "$Wc_c" ||
  491.     echo 'README: original size 8303, current size' "$Wc_c"
  492. # ============= ANCIENTHISTORY ==============
  493. echo 'x - extracting ANCIENTHISTORY (Text)'
  494. sed 's/^X//' << 'SHAR_EOF' > 'ANCIENTHISTORY' &&
  495. XChanges and fixes since 'unet1' alt.sources release:
  496. X
  497. X1. The uucp lock file code has been upgraded.  When I added uucp dialer
  498. Xsupport a while back, I just hacked the necessities needed for
  499. XecuLCK.c and put the new code into hdbintf.c.  Also, I don't try
  500. Xto create two lock files anymore because there is no need.
  501. X
  502. X2. In esdutil.c, skip_paren could return a wrong error code.
  503. X
  504. X3.  ctype.h style integer functions were added to the procedure
  505. Xlanguage: %isalnum, %isalpha, %isascii, %iscntrl, %isdigit, %isgraph,
  506. X%islower, %isprint, %ispunct, %isspace, %isupper and %isxdigit.
  507. X
  508. X4. Logical operators were added to the ifi, ifs, whilei and whiles
  509. Xsyntax, making possible:
  510. X   ifi $i0 ==5 || %i30 == 6
  511. X       statement(s)
  512. XThis still ain't perl, but things are a little better.
  513. X
  514. X5.  %right() was broken.  strfunc_right() in feval.c returned a random
  515. Xerror code on success.
  516. X
  517. X6.  A copy of the screen as received from the line is now kept in shared
  518. Xmemory.  Three new functions use this feature: integer functions %curx
  519. Xand %cury and string function %screen().  There are limitations, so read
  520. Xthe appropriate manual sections.
  521. X
  522. X7.  Since some program may want to use the shared memory segment to read
  523. Xthe screen, the shared memory segment is no longer RMID'd as soon as it
  524. Xis created.  The integer function %shmid returns the shared memory
  525. Xsegment id for passing to a called program.  Many other interesting
  526. Xthings are kept in shared memory to enable efficient use of auxiliary
  527. Xprograms.  See echshm.h and ecufriend/ecufriend.c.
  528. X
  529. X8.  Procedure tracing of string variable assignment prints "unprintable"
  530. Xcharacters in the style of '^A' rather than clobbering your screen.
  531. X
  532. X9.  kill_rcvr_process is better at terminating the receiver process.
  533. X
  534. X10.  Screen dumps having extra repeated lines at the bottom won't happen
  535. Xany more.  (The restarted rcvr process was getting a copy of the stdio
  536. Xbuffers to flush too :-/).
  537. X
  538. X11.  By modifying the mapkey file to return certain codes for ALT-A
  539. Xthrough ALT-Z, it is possible to have 26 procedures (named
  540. X'alt_[a-z].ep') to execute "silently" by pressing one key (OK, two keys:
  541. XALT and a-z).  See mapkeys/README, /usr/lib/keybord/keys and mapkey(ADM).
  542. X
  543. X12.  The receiver was not getting properly informed when the parity of
  544. Xthe line was changed with the interactive or procedure parity command.
  545. XSo it could improperly mask or fail to mask incoming characters.
  546. X
  547. X13.  The crypt library is no longer required.  Indeed, the default is
  548. Xnot to use crypt.  The paranoia required for "safe" big systems is not
  549. Xalways warranted on smaller PCs.  You can still get extra protection
  550. Xagainst false ecuungetty action by using crypt if you want (and in the
  551. Xcase of non-USA user, if you CAN).
  552. X
  553. X14.  A running count is displayed on the screen of the number of files
  554. Xskipped during a ZMODEM transfer.
  555. X
  556. X15.  You can now specify the colors used by ecu when it makes an
  557. Xinternal choice to change colors.  See ecu.man.
  558. X
  559. X16.  UNIX, thanks to POSIX, is loathe to accept a filename of greater
  560. Xthan 14 characters when creating a file.  The XMODEM, YMODEM and
  561. XZMODEM file receive protocols have been modified to truncate long
  562. Xfilenames.  A patch to UNIX libsys.a to put the POSIX people back in
  563. Xtheir place has been floating around the net.
  564. X
  565. X--------------------------------------------------------------------
  566. X
  567. XChanges and fixes since '2.10' patch level 6:
  568. X
  569. X1.  The nap procedure command has an additional feature, the -m
  570. X    switch.  -m specifies the <int> parameter is a period of
  571. X    milliseconds to suspend execution.  Without -m, <int> is
  572. X    tenths of seconds.
  573. X
  574. X    nap 2 suspends execution .2 seconds
  575. X    nap -m 250 suspends execution 250 milliseconds.
  576. X
  577. X
  578. X--------------------------------------------------------------------
  579. X
  580. XChanges and fixes since '2.10' patch level 7:
  581. X
  582. X1.  added rname procedure command to allow overriding connected
  583. X    remote name.
  584. X
  585. X2.  improve banner at top of session log file
  586. X
  587. X3.  add popen and pclose procedure commands
  588. X
  589. X4.  Added facility for restoring receiver display after the
  590. X    interactive help command, or on demand using the BkTab key
  591. X    (shift TAB).
  592. X
  593. X5.  fix bug whereby partial function names could be enetered
  594. X    (e.g., '%col', '%colo', '%color' all recognized for '%colors').
  595. X
  596. X6.  Add the %mhack integer function, returning the life of the
  597. X    ecu process in milliseconds.  (added mhack_test.ep to models)
  598. X
  599. X7.  A better representation of the received screen is kept in
  600. X    shared memory.
  601. X
  602. X8.  The X, Y and ZMODEM transfer screens show per-file elapsed
  603. X    time transfers as well as session elapsed time.
  604. X
  605. X9.  A modified TBIT UUCP dialer, IMHO highly optimized, is is the
  606. X    uucp directory.
  607. X
  608. X10. A bug in automatic creation of string variables was fixed.
  609. X
  610. X11. Certain endless loops in procedure execution could not be
  611. X    interrupted.
  612. X
  613. X--------------------------------------------------------------------
  614. X
  615. XChanges and fixes since '2.72'
  616. X
  617. X1.  The 'expresp' procedure command has been added:
  618. X    usage: expresp [-v[v...]] <exp-resp-str> [<timeout_msecs>]
  619. X    a.  -v turns on script debugging
  620. X    b.  multiple v's (e.g., -v -vv, -vvv) up to 3 'v's produce
  621. X        more verbose debug output
  622. X    c.  <exp-resp-str> is as defined in /usr/lib/ecu/Dialers:
  623. X        Meaning of some of the escape characters:
  624. X        \p - pause (approximately 1/4-1/2 second delay)
  625. X        \d - delay (2 seconds)
  626. X        \D - phone number/token
  627. X        \T - phone number with Dialcodes and character translation
  628. X        \N - null byte
  629. X        \K - insert a BREAK
  630. X        \E - turn on echo checking (for slow devices)
  631. X        \e - turn off echo checking
  632. X        \r - carriage return
  633. X        \c - no new-line
  634. X        \n - send new-line
  635. X        \nnn - send octal number
  636. X        Speed - Hayes-specific speed-adaptive connect handler
  637. X    d.  <timeout_msecs> specifies the optional delay for waiting
  638. X        on expect strings;  it defaults to 10 seconds; the timeout
  639. X        for 'Speed' expects is fixed at 90 seconds
  640. X
  641. X2.  Added partial support for HDB Dialers scripts
  642. X    a.  \E echo checking is not actually performed, but
  643. X        essentially the same effect is achieved by pacing
  644. X        output to the modem
  645. X    b.  The Speed expect string works only for modems
  646. X        which return "CONNECT xxxx" connect result codes.
  647. X    c.  Modems which return status codes during dialing, such
  648. X        as the Trailblazer RRING, will cause Speed processing
  649. X        to fail. Fortunately, RRING can be disabled (you should use 
  650. X        the dialTBIT program anyway)
  651. X    d.  the timeout for non-Speed expects is 10 seconds
  652. X    e.  the timeout for 'Speed' expects is 90 seconds
  653. X
  654. X
  655. X3.  Note, the SCO HDB documentation states that a dialer
  656. X    program may be specified by either a complete pathname
  657. X    or a partial pathname in /usr/lib/uucp.  Ecu requires a
  658. X    complete pathname.
  659. X
  660. X4.  The string functions %dayz, %monthz, %datez, %timez and %timesz
  661. X    have been added to retreive UTC (Z) date and time values.
  662. X
  663. X5.  If no dialing action results from a visit to the dialing directory,
  664. X    the previous receiver screen contents is redisplayed.
  665. X
  666. X6.  The 'P' option to the 'fi' (file insert) interactive command
  667. X    has been added.  In this mode, the file is sent character-by-
  668. X    character to the line with 20 milliseconds pacing between each
  669. X    character.
  670. X
  671. X7.  Previously, if you started ecu on an HDB machine and no line was
  672. X    available at the specified (or default) baudrate, ecu would exit
  673. X    with an error message.  The workaround was to explicitly state the
  674. X    desired device with a -l argument.  The error (now as a warning) is
  675. X    still printed, but the setup screen or initial procedure is allowed
  676. X    to execute with tty1a forced to be the line (though this will likely
  677. X    fail if tty1a is in Devices since ecu has already determined tty1a
  678. X    is busy).
  679. X
  680. X8.  When a string is requested from the keyboard, the Cursor Left,
  681. X    Cursor Right and Ins keys are functional, allowing editing of the
  682. X    string.  Pressing Ins toggles insert mode.  In non-curses modes,
  683. X    (e.g., after HOME pressed and before Enter) ^L (or ^R) displays the
  684. X    insert mode state and redisplays the string, after which editing may
  685. X    continue.
  686. X
  687. X9.  Though not appearing on the help line, the cursor up and cursor down
  688. X    keys work in the dialing directory in a fashion similar to 'u' and 'd',
  689. X    respectively.
  690. X
  691. X10. Warning: using vidi(C) to change the screen configuration while
  692. X    ecu is running, (e.g. Home !vidi xxx) can cause the ecu to later
  693. X    fault and dump core.  Why this occurs is not known yet.
  694. X
  695. X11. After pressing Home, pressing it again gives you access to a 
  696. X    command history mechanism.  Pressing cursor up and cursor down
  697. X    while in this mode causes less and more recent commands to be displayed.
  698. X    You can use Ins, Cursor Left, Cursor Right and Backspace, ^L/^R to
  699. X    edit the old entry as desired, and then press Enter. (see #8 above).
  700. X    Users of ksh will find this a familiar feature.
  701. X
  702. X--------------------------------------------------------------------
  703. X
  704. XChanges and fixes since '2.80'
  705. X
  706. X1.  It was not possible to interrupt the built-in modem dialer
  707. X    modem initialization sequence.  SIGINT will do it now.
  708. X
  709. X2.  A Zmodem window size may now be specified when sending files.
  710. X    The file transfer status screen shows the number of unacknowleged
  711. X    bytes which have been sent.  If full streaming is allowed (window
  712. X    size of zero), then this size will match the file position until
  713. X    the transfer is complete or the receiver sends a ZRPOS.
  714. X
  715. X3.  Output generated by procedures is now written to any active receiver
  716. X    log file in addition to any active procedure log file.
  717. X
  718. X4.  Just a note: on 286 systems you make have to use makeL, since
  719. X    make is a small model (medium?) and makeL is a large model
  720. X    program.
  721. X
  722. X5.  The dependency of eculine.c on sys/select.h has been removed.
  723. X    If you re-'make depend', you probably won't have this problem
  724. X    show up again (a side effect of make depend is that it misses
  725. X    '# include' and I have patched eculine.c to use this).
  726. X
  727. X6.  A new command, xon, has been added (both interactive and procedure
  728. X    versions).  The format is:
  729. X         xon <arg>
  730. X    where <arg> is on    input and output flow control
  731. X                   off   no flow control
  732. X                   in    input flow control
  733. X                   out   output flow control
  734. X    If <arg> is omitted from the interactive command, the current
  735. X    flow control status is displayed.  This command is documented in
  736. X    the patched built-in help file and nroff txt files, but no pre-
  737. X    printed manual changes were issued with this release.
  738. X
  739. X7.  If you are not using a 43-line screen, the list of commands
  740. X    displayed by the interactive 'help' command is truncated.  I
  741. X    apologize; this problem will be solved Real Soon Now.
  742. X
  743. XChanges since ecu 2.80 patchlevel 1
  744. X
  745. X1.  The built-in help system was reworked.  Interactive commands are
  746. X    now divided into four categories: general, communications-related,
  747. X    transfer-related and procedure-related.  The help command asks for
  748. X    a category and displays the appropriate subset.
  749. X
  750. X2.  The built-in help file (ecuhelp.data) was revised.
  751. X
  752. XChanges since ecu 2.80 patchlevel 2
  753. X
  754. X1.  Patch 3 added a window mode selection to the sz file transfer menu;
  755. X    also, the unacknowledged data quantity (called "window") was
  756. X    added to the sz file transfer display.
  757. X
  758. XChanges since ecu 2.80 patchlevel 3
  759. X
  760. X1.  A problem with passing arguments to an initial procedure was
  761. X    fixed.  Getopt() is now used, which requires that all switch
  762. X    command arguments must precede the non-switch arguments.
  763. X    This was not true in previous revisions of ecu.
  764. X
  765. X2.  A new (non-standard) escape sequence has been added to the
  766. X    expresp procedure command.  \m### causes a ### millisecond delay.
  767. X    Note this adds an ambiguity to the syntax of the send string:
  768. X    you may not follow an \m delay with a literal digit to send.
  769. X    For example, suppose you wish to delay 300 missileconds then
  770. X    send "4A".  \m3004A will delay for 3004 (approximately) milliseconds,
  771. X    then send an "A".  You must, instead, use \m300\034A to achieve
  772. X    the desired result.
  773. X
  774. X    Also, a string of the form ~t[##] or ~m[##] may be prepended to
  775. X    any expect vstring to change the timeout to ## seconds or milliseconds,
  776. X    respectively.  '~t[8]gin:--~m[800]gin:' waits 8 seconds for
  777. X    'gin:' and if not found, sends a carriage return and waits
  778. X    an additional 800 milliseconds.
  779. X
  780. X3.  The method of choosing a shared memory segment key changed.
  781. X    Previously, ftok() was used.  Now, the algorithm is 
  782. X        0xEC000000L | getpid();
  783. X
  784. X4.  The -D switch has been added to cause ecu to terminate
  785. X    unconditionally upon completion of an initial procedure (-p).
  786. X
  787. XChanges since ecu 2.80 patchlevel 4
  788. X
  789. X1.  The malloc library is used, resulting in faster procedure
  790. X    execution.
  791. X
  792. X2.  Restrictions on string operations limiting useful string length
  793. X    to 256 characters have been lifted.  New restrictions limit
  794. X    strings to 5120 characters in length :-).  This required some
  795. X    major redesign and is responsible for the reissue of the entire
  796. X    ECU program rather than merely patches.
  797. X
  798. X3.  A new procedure command, 'gosub' has been added, allowing
  799. X    subroutines within a procedure file.
  800. X
  801. X    #---------
  802. X    # example
  803. X    #---------
  804. X        echo 'main'; gosub SUB; echo 'back to main'
  805. X        return           | return from proc
  806. X
  807. X    SUB
  808. X        echo 'sub'
  809. X        gosub SUB2
  810. X        echo 'back to sub'
  811. X        return           | return from subroutine
  812. X
  813. X
  814. X    SUB2
  815. X        echo 'sub2'
  816. X        return           | return from subroutine
  817. X
  818. X4.  Other minor unreported bugs were fixed.
  819. X
  820. SHAR_EOF
  821. $TOUCH -am 1124202690 'ANCIENTHISTORY' &&
  822. chmod 0644 ANCIENTHISTORY ||
  823. echo 'restore of ANCIENTHISTORY failed'
  824. Wc_c="`wc -c < 'ANCIENTHISTORY'`"
  825. test 13617 -eq "$Wc_c" ||
  826.     echo 'ANCIENTHISTORY: original size 13617, current size' "$Wc_c"
  827. # ============= ESOTERIC ==============
  828. echo 'x - extracting ESOTERIC (Text)'
  829. sed 's/^X//' << 'SHAR_EOF' > 'ESOTERIC' &&
  830. XThis interesting article appeared last summer:  much of the wisdom
  831. Xapplys to the ECU procedure language :-)
  832. X
  833. X> From: guy@auspex.auspex.com (Guy Harris)
  834. X> Newsgroups: comp.unix.questions
  835. X> Subject: Re: Funny kill -9 behaviour
  836. X> Message-ID: <3920@auspex.auspex.com>
  837. X> Date: 18 Aug 90 21:27:07 GMT
  838. X> References: <909@sagpd1.UUCP>
  839. X> Organization: Auspex Systems, Santa Clara
  840. X> Lines: 16
  841. X> 
  842. X> >What I want to know is why in the hay does this happen?
  843. X> 
  844. X> Because the C shell is flakier than a snowstorm.  To quote the BUGS
  845. X> section of the SunOS 4.0.3 manual page (this quote is also in the S5R4
  846. X> "csh" manual page):
  847. X> 
  848. X>      Although robust enough for general use, adventures into  the
  849. X>      esoteric  periphery  of  the  C  shell may reveal unexpected
  850. X>      quirks.
  851. X> 
  852. X> which translates as "the C shell is flakier than a snowstorm."
  853. SHAR_EOF
  854. $TOUCH -am 1226052890 'ESOTERIC' &&
  855. chmod 0644 ESOTERIC ||
  856. echo 'restore of ESOTERIC failed'
  857. Wc_c="`wc -c < 'ESOTERIC'`"
  858. test 835 -eq "$Wc_c" ||
  859.     echo 'ESOTERIC: original size 835, current size' "$Wc_c"
  860. # ============= Make.ecu ==============
  861. echo 'x - extracting Make.ecu (Text)'
  862. sed 's/^X//' << 'SHAR_EOF' > 'Make.ecu' &&
  863. X#  CHK=0x71D0
  864. X#+-------------------------------------------------------------------
  865. X# Makefile - Makefile for ecu and related programs
  866. X# wht@n4hgf.Mt-Park.GA.US
  867. X#--------------------------------------------------------------------
  868. X# to make, cp this file to Makefile and edit it (see README),
  869. X# su root (if necessary to get write access to $(LBIN))
  870. X# make tools
  871. X# back to 'ordinary mortal'
  872. X# make
  873. X# su root (necessary)
  874. X# make install
  875. X#--------------------------------------------------------------------
  876. X# NOTE: under UNIX, cc defines both M_UNIX and M_XENIX.  ecu.h and
  877. X# sysdep.c remove M_XENIX under UNIX makes so that it is defined
  878. X# only on XENIX systems.  Nevertheless, every effort is made to
  879. X# use M_UNIX over M_XENIX in code so that this feature is not
  880. X# counted on too much.
  881. X#
  882. X# If you are not using cc, be sure to define in CFLAGS
  883. X#   M_UNIX for UNIX
  884. X#   M_XENIX for XENIX (alone)
  885. X#   M_I86 for every target
  886. X#   M_I286 for 286 targets
  887. X#   M_I386 for 386 targets
  888. X#
  889. X# This list may be incomplete and the header files and this code make
  890. X# free use of the excellent SCO cc-provided #defines, so you may lose
  891. X# if you are not using cc, but then you probably already are familiar
  892. X# with the problem.
  893. X#--------------------------------------------------------------------
  894. X# -Oi (thus -Ox) is _BROKEN_ as of this writing.  strcpy() often fails
  895. X# if the second argument is other than a simple character pointer
  896. X# e.g. strcpy(str1,strarray[x+1]);
  897. X#--------------------------------------------------------------------
  898. X# VERY IMPORTANT: This make file has the ability to remake 
  899. X# lint_args.h by 'make lint'' ... but don't do it on a UNIX system
  900. X# since MSC 5 -Zg has been broken since forever and cannot do the
  901. X# job .... it works OK on XENIX systems .... if you plan to remake
  902. X# lint_args.h, please do squirrel away the release copy first
  903. X#--------------------------------------------------------------------
  904. X#+:EDITS:
  905. X#:11-28-1990-19:45-wht@n4hgf-improve M_ dependency description
  906. X#:10-20-1990-14:30-wht@n4hgf-fix bugs found by tbetz@upaya
  907. X#:08-14-1990-20:42-wht@n4hgf-ecu3.00-flush old edit history
  908. X
  909. X#-------------------- configurable parameters -----------------------
  910. X#--> set LBIN to your local bin directory path
  911. XLBIN = /usr/local/bin
  912. X
  913. X#--> set ECULIBDIR to the desired location of the ecu library
  914. X#    directory (normally /usr/lib/ecu)
  915. X#    you may have to make /usr/local/lib by hand
  916. X#    IF YOU CHANGE IT, ALSO CHANGE IT IN ecu.h
  917. XECULIBDIR = /usr/local/lib/ecu
  918. X
  919. X#--> leave commented unless you have my morse speaker driver
  920. X#MORSE=-DMORSE
  921. X
  922. X#--> uncomment if you have the crypt library. NOTE: minimal use is
  923. X#    made of crypt ... Read the note in README.  You probably want
  924. X#    to leave this commented unless you want the best protection you
  925. X#    can get against deviant mutant ninja hackers :-)
  926. X#CRYPT=-DCRYPT
  927. X#LCRYPT=-lcrypt
  928. X
  929. X#--> comment out if you have a working select(S) (for serial lines;
  930. X#    2.3.1 has a broken one that may be fixable: see README; 2.3.2
  931. X#    has a working select(S) for serial lines and a fix from SCO
  932. X#    for pipes [ecu doesn't select() on pipes])
  933. X#    This is ignored for UNIX, where select(S) works fine
  934. XNOSEL=-DNO_SELECT
  935. X
  936. X#--> comment out if you do not want the automatic procedure execution
  937. X#    feature when connecting to a system (see ecu.man dial command)
  938. XADPROC=-DAUTO_DIAL_PROC
  939. X
  940. X#--> uncomment out if you want source-level debugging information
  941. X#    (386 only)
  942. X#ZI=-Zi
  943. X#--------------------------------------------------------------------
  944. X
  945. X#make some composites based on above
  946. XSYSTEM = `sysdep =M_UNIX UNIX/386 =M_I386 Xenix/386 =M_I286 Xenix/286`
  947. XU3C = $(ZI) -Octl -CSON
  948. XX3C = $(ZI) -Ot -CSON
  949. XX2C = -M2let32 -LARGE -F 8000 -Ot
  950. XCURSES = -DM_TERMCAP
  951. XCURSES_LIB = -ltcap -ltermlib
  952. XCOMFLAGS = -i `sysdep =M_UNIX $(U3C) =M_I386 $(X3C) =M_I286 $(X2C)`
  953. XCFLAGS = -DLINT_ARGS $(CURSES) $(CRYPT) $(MORSE) $(NOSEL) $(ADPROC) $(COMFLAGS)
  954. XLDFLAGS = `sysdep =M_I386 =M_I286 -SEG 256` -lx -lmalloc $(LCRYPT) $(CURSES_LIB)
  955. X
  956. XECUSHARNAME=ecux3
  957. XMANSHARNAME=ecumanx3
  958. X
  959. X.SUFFIXES:
  960. X.SUFFIXES: .o .c .h .l
  961. XSHELL = /bin/sh
  962. X
  963. X.c.o:;    /bin/time $(CC) -c $(CFLAGS) $*.c 
  964. X
  965. XSHARFLS = \
  966. XREADME \
  967. XANCIENTHISTORY \
  968. XESOTERIC \
  969. XMakefile *.c *.h \
  970. Xhelp/Makefile  help/*.{h,c,src} \
  971. Xecufriend/{Makefile,*.{c,h}} \
  972. Xecuungetty/Makefile ecuungetty/*.{c,h} \
  973. Xmapkey/README mapkey/keys.usa.ecu.d\
  974. Xbperr/bperr.c \
  975. Xz/Makefile z/*.{c,h} sea/Makefile sea/*.{c,h,doc,imp} \
  976. Xgendial/Makefile  gendial/*.{h,c} \
  977. Xxsel386/* \
  978. Xshar.fls */*.fls \
  979. Xckermit/* doc/{*.txt,runoff} models/* zgcc mkoldproto.l'
  980. X
  981. XSRC    = \
  982. X    bamboozle.c\
  983. X    cmdtbl.c\
  984. X    ecu.c\
  985. X    ecuLCK.c\
  986. X    ecuchdir.c\
  987. X    ecudump.c\
  988. X    ecufinsert.c\
  989. X    ecufkey.c\
  990. X    ecufork.c\
  991. X    ecuDCE.c\
  992. X    eculine.c\
  993. X    eculock.c\
  994. X    ecunumrev.c\
  995. X    ecuicmaux.c\
  996. X    ecuicmhelp.c\
  997. X    ecuicmhist.c\
  998. X    ecuicmd.c\
  999. X    ecuphone.c\
  1000. X    ecuphrase.c\
  1001. X    ecurcvr.c\
  1002. X    ecuscrdump.c\
  1003. X    ecusetup.c\
  1004. X    ecushm.c\
  1005. X    ecusighdl.c\
  1006. X    ecutcap.c\
  1007. X    ecutime.c\
  1008. X    ecutty.c\
  1009. X    ecuuclc.c\
  1010. X    ecuusage.c\
  1011. X    ecuutil.c\
  1012. X    ecuwinutil.c\
  1013. X    ecuxenix.c\
  1014. X    ecuxfer.c\
  1015. X    esdutil.c\
  1016. X    esiointf.c\
  1017. X    expresp.c\
  1018. X    feval.c\
  1019. X    gint.c\
  1020. X    gstr.c\
  1021. X    hdbintf.c\
  1022. X    logevent.c\
  1023. X    nonansikey.c\
  1024. X    pcmd.c\
  1025. X    pcmdif.c\
  1026. X    pcmdfile.c\
  1027. X    pcmdtty.c\
  1028. X    pcmdwhile.c\
  1029. X    pcmdxfer.c\
  1030. X    poutput.c\
  1031. X    pprintf.c\
  1032. X    proc.c\
  1033. X    proc_error.c\
  1034. X    procframe.c\
  1035. X    regexp.c\
  1036. X    utmpstat.c\
  1037. X    var.c
  1038. X
  1039. XOBJ    = \
  1040. X    bamboozle.o\
  1041. X    cmdtbl.o\
  1042. X    ecu.o\
  1043. X    ecuLCK.o\
  1044. X    ecudump.o\
  1045. X    ecuchdir.o\
  1046. X    ecufinsert.o\
  1047. X    ecufkey.o\
  1048. X    ecufork.o\
  1049. X    ecuDCE.o\
  1050. X    eculine.o\
  1051. X    eculock.o\
  1052. X    ecunumrev.o\
  1053. X    ecuicmaux.o\
  1054. X    ecuicmhelp.o\
  1055. X    ecuicmhist.o\
  1056. X    ecuicmd.o\
  1057. X    ecuphone.o\
  1058. X    ecuphrase.o\
  1059. X    ecurcvr.o\
  1060. X    ecuscrdump.o\
  1061. X    ecusetup.o\
  1062. X    ecushm.o\
  1063. X    ecusighdl.o\
  1064. X    ecutcap.o\
  1065. X    ecutime.o\
  1066. X    ecutty.o\
  1067. X    ecuuclc.o\
  1068. X    ecuusage.o\
  1069. X    ecuutil.o\
  1070. X    ecuwinutil.o\
  1071. X    ecuxenix.o\
  1072. X    ecuxfer.o\
  1073. X    esdutil.o\
  1074. X    esiointf.o\
  1075. X    expresp.o\
  1076. X    feval.o\
  1077. X    gint.o\
  1078. X    gstr.o\
  1079. X    hdbintf.o\
  1080. X    logevent.o\
  1081. X    nonansikey.o\
  1082. X    pcmd.o\
  1083. X    pcmdif.o\
  1084. X    pcmdfile.o\
  1085. X    pcmdtty.o\
  1086. X    pcmdwhile.o\
  1087. X    pcmdxfer.o\
  1088. X    poutput.o\
  1089. X    pprintf.o\
  1090. X    proc.o\
  1091. X    proc_error.o\
  1092. X    procframe.o\
  1093. X    regexp.o\
  1094. X    utmpstat.o\
  1095. X    var.o
  1096. X
  1097. Xall: check_tools ecuhelp ecu ecuug ecuz ecus
  1098. X
  1099. Xtools: $(LBIN)/sysdep $(LBIN)/afterlint $(LBIN)/mkoldproto
  1100. X
  1101. Xcheck_tools:
  1102. X    @[ -x $(LBIN)/sysdep ] || echo '"make tools" first, with write access to $(LBIN)'
  1103. X    @[ -x $(LBIN)/sysdep ] || exit 1
  1104. X    touch check_tools
  1105. X
  1106. Xecuhelp: check_tools
  1107. X    cd help;make
  1108. X
  1109. Xecuz: check_tools
  1110. X    cd z;make
  1111. X
  1112. Xecus: check_tools
  1113. X    cd sea;make
  1114. X
  1115. Xbperr/bperr: check_tools bperr/bperr.c
  1116. X    cd bperr;make bperr
  1117. X
  1118. Xecu: check_tools $(OBJ)
  1119. X    echo 'char *makedate="'`date` $(SYSTEM)'";'  >makedate.c
  1120. X    $(CC) -c $(CFLAGS) makedate.c; rm makedate.c
  1121. X    rm -rf $@
  1122. X    $(CC) -o $@ $(COMFLAGS) makedate.o $(OBJ) $(LDFLAGS)
  1123. X    rm makedate.o
  1124. X
  1125. Xecuug: check_tools
  1126. X    cd ecuungetty;make CRYPT=$(CRYPT) LCRYPT=$(LCRYPT)
  1127. X
  1128. Xproc_error.c: ecuerror.h
  1129. X    make bperr/bperr
  1130. X    bperr/bperr
  1131. X
  1132. X$(OBJ): ecushm.h
  1133. X
  1134. Xecu.fls: $(SRC) Makefile
  1135. X    ls $(SRC) >ecu.fls
  1136. X
  1137. Xlint: ecu.fls
  1138. X    echo ' ' > lint_args.h
  1139. X    csh zgcc ecu.fls lint_args.h $(CFLAGS)
  1140. X
  1141. Xinstall: all ecuhelp ecuz ecus #run as root
  1142. X    cp ecu z/ecusz z/ecurz sea/ecusea $(LBIN)
  1143. X    chmod 755 $(LBIN)/ecu $(LBIN)/ecusz $(LBIN)/ecurz $(LBIN)/ecusea
  1144. X    -mkdir $(ECULIBDIR)
  1145. X    -chmod 755 $(ECULIBDIR)
  1146. X    cd ecuungetty;make CRYPT=$(CRYPT) LCRYPT=$(LCRYPT) ECULIBDIR=$(ECULIBDIR)\
  1147. X        install
  1148. X    cp help/ecuhelp.data $(ECULIBDIR)
  1149. X    @echo "--------------------------------------------------------------------"
  1150. X    @echo "| edit $(ECULIBDIR)/*.mi for your tty lines per ecu.man"
  1151. X    @echo "--------------------------------------------------------------------"
  1152. X
  1153. Xshar.fls:
  1154. X    csh -c 'ls $(SHARFLS) | sort > shar.fls'
  1155. X
  1156. X# for shar 3
  1157. Xshar:
  1158. X    csh -c 'shar -c -s "wht@n4hgf.Mt-Park.GA.US" -a \
  1159. X-n$(ECUSHARNAME) -l55 -o/tmp/$(ECUSHARNAME) $(SHARFLS) 
  1160. X    shar -c -s "wht%n4hgf@gatech.ecu" -a \
  1161. X-n$(MANSHARNAME) -L55 -o/tmp/$(MANSHARNAME) doc/ecu.man
  1162. X
  1163. X# tools for making ecu
  1164. X$(LBIN)/sysdep: sysdep.c    # uname -p undocumented on UNIX but works
  1165. X    @echo 'building sysdep for' `uname -p`
  1166. X    [ `uname -p` != i80286 ] || $(CC) -O -M2 sysdep.c -o $@
  1167. X    [ `uname -p`  = i80286 ] || $(CC) -O     sysdep.c -o $@
  1168. X
  1169. X$(LBIN)/afterlint: afterlint.c
  1170. X    $(CC) -O afterlint.c -o $@
  1171. X
  1172. X$(LBIN)/mkoldproto: mkoldproto.l
  1173. X    lex mkoldproto.l
  1174. X    $(CC) lex.yy.c -ll -o $@
  1175. X    rm lex.yy.?
  1176. X
  1177. X#
  1178. X#
  1179. X#
  1180. X# MAKE DEPEND: regenerate .o:.h dependencies automatically
  1181. X#
  1182. Xdepend:
  1183. X        rm -f depend.tmp
  1184. X        if test '$(SRC)' ;\
  1185. X        then (grep '^#include' $(SRC) \
  1186. X        | sed    -e 's?:[^<]*<\([^>]*\)>.*?: /usr/include/\1?'\
  1187. X            -e 's?:[^"]*"\([^"]*\)".*?: \1?'\
  1188. X            -e 's?\(.*\)\.c?\1.o?'\
  1189. X            -e 's?ecuerror.h?ecu.h?'\
  1190. X         >> depend.tmp) ;\
  1191. X        fi
  1192. X
  1193. X        echo '/^# DO NOT DELETE THIS LINE' >exdep.tmp
  1194. X        echo '.+1,$$d' >>exdep.tmp
  1195. X        echo 'r depend.tmp' >> exdep.tmp
  1196. X        echo 'w' >> exdep.tmp
  1197. X        cp Makefile Makefile.new
  1198. X        ex Makefile.new < exdep.tmp
  1199. X        rm exdep.tmp depend.tmp
  1200. X        echo '#    DEPENDENCIES MUST END AT END OF    FILE' >>Makefile.new
  1201. X        echo '#    IF YOU PUT STUFF HERE IT WILL GO AWAY'>>Makefile.new
  1202. X        echo '#    see make depend    above'>>Makefile.new
  1203. X        mv Makefile Makefile.bak
  1204. X        mv Makefile.new Makefile
  1205. X
  1206. X# DO NOT DELETE THIS LINE
  1207. Xcmdtbl.o: ecucmd.h
  1208. Xecu.o: ecu.h
  1209. Xecu.o: esd.h
  1210. Xecu.o: proc.h
  1211. Xecu.o: ecukey.h
  1212. Xecu.o: ecuxkey.h
  1213. Xecu.o: ecuhangup.h
  1214. Xecu.o: patchlevel.h
  1215. Xecu.o: /usr/include/sys/param.h
  1216. XecuLCK.o: ecu.h
  1217. XecuLCK.o: utmpstatus.h
  1218. Xecuchdir.o: ecu.h
  1219. Xecuchdir.o: ecukey.h
  1220. Xecuchdir.o: /usr/include/pwd.h
  1221. Xecudump.o: ecu.h
  1222. Xecufinsert.o: ecu.h
  1223. Xecufinsert.o: ecukey.h
  1224. Xecufkey.o: ecu.h
  1225. Xecufkey.o: ecukey.h
  1226. Xecufkey.o: ecufkey.h
  1227. Xecufkey.o: ecuxkey.h
  1228. Xecufkey.o: ecufork.h
  1229. Xecufork.o: ecu.h
  1230. Xecufork.o: ecufork.h
  1231. XecuDCE.o: ecu.h
  1232. XecuDCE.o: ecukey.h
  1233. XecuDCE.o: esd.h
  1234. XecuDCE.o: var.h
  1235. XecuDCE.o: ecupde.h
  1236. XecuDCE.o: ecu.h
  1237. XecuDCE.o: relop.h
  1238. Xeculine.o: ecu.h
  1239. Xeculine.o: ecukey.h
  1240. Xeculine.o: ecuhangup.h
  1241. Xeculock.o: ecu.h
  1242. Xeculock.o: utmpstatus.h
  1243. Xecuicmaux.o: ecu.h
  1244. Xecuicmaux.o: ecu.h
  1245. Xecuicmaux.o: ecucmd.h
  1246. Xecuicmhelp.o: /usr/include/curses.h
  1247. Xecuicmhelp.o: ecu.h
  1248. Xecuicmhelp.o: ecucmd.h
  1249. Xecuicmhelp.o: ecukey.h
  1250. Xecuicmhelp.o: pc_scr.h
  1251. Xecuicmhelp.o: stdio_lint.h
  1252. Xecuicmhist.o: /usr/include/curses.h
  1253. Xecuicmhist.o: pc_scr.h
  1254. Xecuicmhist.o: ecu.h
  1255. Xecuicmhist.o: ecukey.h
  1256. Xecuicmhist.o: ecuxkey.h
  1257. Xecuicmd.o: ecu.h
  1258. Xecuicmd.o: esd.h
  1259. Xecuicmd.o: ecufkey.h
  1260. Xecuicmd.o: patchlevel.h
  1261. Xecuicmd.o: ecucmd.h
  1262. Xecuphone.o: /usr/include/curses.h
  1263. Xecuphone.o: ecu.h
  1264. Xecuphone.o: pc_scr.h
  1265. Xecuphone.o: ecupde.h
  1266. Xecuphone.o: ecukey.h
  1267. Xecuphone.o: ecuxkey.h
  1268. Xecuphone.o: ecuhangup.h
  1269. Xecuphone.o: utmpstatus.h
  1270. Xecuphone.o: dvent.h
  1271. Xecuphone.o: esd.h
  1272. Xecuphone.o: var.h
  1273. Xecuphrase.o: ecu.h
  1274. Xecurcvr.o: ecu.h
  1275. Xecurcvr.o: ecukey.h
  1276. Xecuscrdump.o: ecu.h
  1277. Xecuscrdump.o: ecukey.h
  1278. Xecuscrdump.o: pc_scr.h
  1279. Xecusetup.o: /usr/include/curses.h
  1280. Xecusetup.o: patchlevel.h
  1281. Xecusetup.o: ecu.h
  1282. Xecusetup.o: ecukey.h
  1283. Xecusetup.o: ecuxkey.h
  1284. Xecusetup.o: pc_scr.h
  1285. Xecushm.o: ecu.h
  1286. Xecushm.o: /usr/include/sys/ipc.h
  1287. Xecushm.o: /usr/include/sys/shm.h
  1288. Xecusighdl.o: ecu.h
  1289. Xecusighdl.o: ecufork.h
  1290. Xecutcap.o: ecu.h
  1291. Xecutcap.o: ecukey.h
  1292. Xecutcap.o: pc_scr.h
  1293. Xecutime.o: /usr/include/sys/types.h
  1294. Xecutime.o: /usr/include/time.h
  1295. Xecutime.o: /usr/include/sys/timeb.h
  1296. Xecutty.o: ecu.h
  1297. Xecutty.o: esd.h
  1298. Xecutty.o: ecufkey.h
  1299. Xecutty.o: ecukey.h
  1300. Xecutty.o: ecuxkey.h
  1301. Xecutty.o: ecu.h
  1302. Xecutty.o: ecuhangup.h
  1303. Xecutty.o: /usr/include/sys/machdep.h
  1304. Xecutty.o: ecutty.h
  1305. Xecuusage.o: /usr/include/stdio.h
  1306. Xecuusage.o: ecuhangup.h
  1307. Xecuutil.o: ecu.h
  1308. Xecuutil.o: ecuhangup.h
  1309. Xecuutil.o: ecufork.h
  1310. Xecuutil.o: /usr/include/pwd.h
  1311. Xecuwinutil.o: /usr/include/curses.h
  1312. Xecuwinutil.o: ecukey.h
  1313. Xecuwinutil.o: ecuxkey.h
  1314. Xecuwinutil.o: ecuhangup.h
  1315. Xecuwinutil.o: pc_scr.h
  1316. Xecuxenix.o: ecu.h
  1317. Xecuxenix.o: ecukey.h
  1318. Xecuxenix.o: ecufkey.h
  1319. Xecuxenix.o: ecuxkey.h
  1320. Xecuxenix.o: ecufork.h
  1321. Xecuxenix.o: esd.h
  1322. Xecuxfer.o: /usr/include/curses.h
  1323. Xecuxfer.o: ecu.h
  1324. Xecuxfer.o: ecukey.h
  1325. Xecuxfer.o: ecuxkey.h
  1326. Xecuxfer.o: ecu.h
  1327. Xecuxfer.o: pc_scr.h
  1328. Xesdutil.o: /usr/include/ctype.h
  1329. Xesdutil.o: ecu.h
  1330. Xesdutil.o: ecu.h
  1331. Xesdutil.o: esd.h
  1332. Xesiointf.o: ecu.h
  1333. Xesiointf.o: ecu.h
  1334. Xesiointf.o: esd.h
  1335. Xexpresp.o: ecu.h
  1336. Xexpresp.o: ecu.h
  1337. Xexpresp.o: esd.h
  1338. Xexpresp.o: var.h
  1339. Xexpresp.o: proc.h
  1340. Xfeval.o: ecu.h
  1341. Xfeval.o: ecu.h
  1342. Xfeval.o: esd.h
  1343. Xfeval.o: proc.h
  1344. Xfeval.o: var.h
  1345. Xgint.o: ecu.h
  1346. Xgint.o: ecu.h
  1347. Xgint.o: esd.h
  1348. Xgint.o: var.h
  1349. Xgstr.o: ecu.h
  1350. Xgstr.o: ecu.h
  1351. Xgstr.o: esd.h
  1352. Xgstr.o: var.h
  1353. Xhdbintf.o: ecu.h
  1354. Xhdbintf.o: esd.h
  1355. Xhdbintf.o: var.h
  1356. Xhdbintf.o: ecuhangup.h
  1357. Xhdbintf.o: utmpstatus.h
  1358. Xhdbintf.o: ecuungetty.h
  1359. Xhdbintf.o: dvent.h
  1360. Xhdbintf.o: dlent.h
  1361. Xhdbintf.o: dialprog.h
  1362. Xhdbintf.o: /usr/include/errno.h
  1363. Xhdbintf.o: /usr/include/utmp.h
  1364. Xlogevent.o: /usr/include/stdio.h
  1365. Xlogevent.o: /usr/include/sys/locking.h
  1366. Xlogevent.o: stdio_lint.h
  1367. Xlogevent.o: lint_args.h
  1368. Xnonansikey.o: ecu.h
  1369. Xnonansikey.o: ecukey.h
  1370. Xnonansikey.o: ecufkey.h
  1371. Xnonansikey.o: ecuxkey.h
  1372. Xnonansikey.o: ecufork.h
  1373. Xpcmd.o: ecu.h
  1374. Xpcmd.o: ecu.h
  1375. Xpcmd.o: ecuhangup.h
  1376. Xpcmd.o: ecukey.h
  1377. Xpcmd.o: esd.h
  1378. Xpcmd.o: var.h
  1379. Xpcmd.o: proc.h
  1380. Xpcmdif.o: /usr/include/ctype.h
  1381. Xpcmdif.o: ecu.h
  1382. Xpcmdif.o: ecu.h
  1383. Xpcmdif.o: esd.h
  1384. Xpcmdif.o: var.h
  1385. Xpcmdif.o: proc.h
  1386. Xpcmdif.o: relop.h
  1387. Xpcmdfile.o: ecu.h
  1388. Xpcmdfile.o: ecukey.h
  1389. Xpcmdfile.o: ecu.h
  1390. Xpcmdfile.o: esd.h
  1391. Xpcmdfile.o: var.h
  1392. Xpcmdfile.o: proc.h
  1393. Xpcmdtty.o: ecu.h
  1394. Xpcmdtty.o: ecu.h
  1395. Xpcmdtty.o: esd.h
  1396. Xpcmdtty.o: ecutty.h
  1397. Xpcmdwhile.o: /usr/include/ctype.h
  1398. Xpcmdwhile.o: ecu.h
  1399. Xpcmdwhile.o: ecu.h
  1400. Xpcmdwhile.o: esd.h
  1401. Xpcmdwhile.o: var.h
  1402. Xpcmdwhile.o: proc.h
  1403. Xpcmdwhile.o: relop.h
  1404. Xpcmdxfer.o: ecu.h
  1405. Xpcmdxfer.o: ecukey.h
  1406. Xpcmdxfer.o: ecu.h
  1407. Xpcmdxfer.o: esd.h
  1408. Xpcmdxfer.o: var.h
  1409. Xpcmdxfer.o: proc.h
  1410. Xpoutput.o: ecu.h
  1411. Xpoutput.o: ecukey.h
  1412. Xpoutput.o: ecu.h
  1413. Xpoutput.o: esd.h
  1414. Xpprintf.o: /usr/include/stdio.h
  1415. Xpprintf.o: /usr/include/varargs.h
  1416. Xproc.o: /usr/include/ctype.h
  1417. Xproc.o: ecu.h
  1418. Xproc.o: ecu.h
  1419. Xproc.o: esd.h
  1420. Xproc.o: var.h
  1421. Xproc.o: proc.h
  1422. Xproc.o: ecucmd.h
  1423. Xproc_error.o: ecu.h
  1424. Xproc_error.o: ecu.h
  1425. Xprocframe.o: /usr/include/ctype.h
  1426. Xprocframe.o: ecu.h
  1427. Xprocframe.o: ecukey.h
  1428. Xprocframe.o: ecu.h
  1429. Xprocframe.o: esd.h
  1430. Xprocframe.o: var.h
  1431. Xprocframe.o: proc.h
  1432. Xregexp.o: /usr/include/stdio.h
  1433. Xregexp.o: stdio_lint.h
  1434. Xregexp.o: lint_args.h
  1435. Xregexp.o: ecu.h
  1436. Xregexp.o: esd.h
  1437. Xregexp.o: var.h
  1438. Xregexp.o: /usr/include/setjmp.h
  1439. Xutmpstat.o: ecu.h
  1440. Xutmpstat.o: ecuhangup.h
  1441. Xutmpstat.o: utmpstatus.h
  1442. Xutmpstat.o: ecuungetty.h
  1443. Xutmpstat.o: dialprog.h
  1444. Xutmpstat.o: /usr/include/errno.h
  1445. Xutmpstat.o: /usr/include/utmp.h
  1446. Xvar.o: ecu.h
  1447. Xvar.o: esd.h
  1448. Xvar.o: var.h
  1449. Xvar.o: proc.h
  1450. Xvar.o: ecukey.h
  1451. Xvar.o: ecu.h
  1452. X#    DEPENDENCIES MUST END AT END OF    FILE
  1453. X#    IF YOU PUT STUFF HERE IT WILL GO AWAY
  1454. X#    see make depend    above
  1455. SHAR_EOF
  1456. $TOUCH -am 1226052690 'Make.ecu' &&
  1457. chmod 0644 Make.ecu ||
  1458. echo 'restore of Make.ecu failed'
  1459. Wc_c="`wc -c < 'Make.ecu'`"
  1460. test 13973 -eq "$Wc_c" ||
  1461.     echo 'Make.ecu: original size 13973, current size' "$Wc_c"
  1462. # ============= afterlint.c ==============
  1463. echo 'x - extracting afterlint.c (Text)'
  1464. sed 's/^X//' << 'SHAR_EOF' > 'afterlint.c' &&
  1465. X/* CHK=0xC2C5 */
  1466. X/*+-------------------------------------------------------------------------
  1467. X    afterlint.c -- process -Zg output
  1468. X
  1469. XUse with zgcc:
  1470. X
  1471. X    #!/bin/csh
  1472. X    #zgcc -- build prototyping "LINT_ARGS"
  1473. X    echo C sources in $1';' result file $2
  1474. X    rm -f zg.t
  1475. X    foreach i(`cat $1`)
  1476. X    cc -DBUILDING_LINT_ARGS -Zg $argv[3-] $i > zg1.t
  1477. X    sort zg1.t > zg2.t
  1478. X    echo '/ *' $i '* /' >> zg.t    #remove spaces inside comment markers
  1479. X    cat zg2.t >> zg.t
  1480. X    end
  1481. X    afterlint zg.t $2
  1482. X    rm -f zg.t zg?.t
  1483. X    echo Output in $2
  1484. X
  1485. X--------------------------------------------------------------------------*/
  1486. X/*+:EDITS:*/
  1487. X/*:11-18-1990-21:15-wht@n4hgf-clobber 'extern  ' in prototypes */
  1488. X/*:07-13-1988-19:50-wht-creation */
  1489. X
  1490. X#include <stdio.h>
  1491. X
  1492. X#define ff fprintf
  1493. X
  1494. X#ifdef BSD4
  1495. X#include <sys/time.h>
  1496. X#define strchr index
  1497. X#define strrchr rindex
  1498. Xchar *index();
  1499. Xchar *rindex();
  1500. X/**************************/
  1501. X#else    /* assuming XENIX */
  1502. X/**************************/
  1503. X#include <time.h>
  1504. X#include <sys/types.h>
  1505. X#include <sys/timeb.h>
  1506. Xchar *strchr();
  1507. Xchar *strrchr();
  1508. X#endif    /* system dependencies */
  1509. X
  1510. Xlong time();
  1511. Xstruct tm *localtime();
  1512. X
  1513. X/*+-------------------------------------------------------------------------
  1514. X    emit_editnote(fp)
  1515. X--------------------------------------------------------------------------*/
  1516. Xvoid
  1517. Xemit_editnote(fp)
  1518. XFILE    *fp;
  1519. X{
  1520. X    struct tm *ltime;
  1521. X    long cur_time;
  1522. X#ifdef XENIX
  1523. X#ifdef MESSED_UP_DST
  1524. X    struct timeb tp;
  1525. X#endif
  1526. X#endif
  1527. X
  1528. X    cur_time = time((long *)0);
  1529. X
  1530. X#ifdef XENIX
  1531. X#ifdef MESSED_UP_DST
  1532. X    ftime(&tp);                /* localtime() does not know about DST */
  1533. X    if(tp.dstflag)            /* so we adjust with ftime, which does know */
  1534. X        cur_time += 3600L;    /* problem in BSD too, but no ftime there */
  1535. X#endif
  1536. X#endif
  1537. X
  1538. X    ltime = localtime(&cur_time);
  1539. X
  1540. X    fputs("/*+:EDITS:*/\n",fp);
  1541. X
  1542. X    ff(fp,"/*:%02d-%02d-%04d-%02d:%02d-afterlint-creation */\n",
  1543. X        ltime->tm_mon+1,ltime->tm_mday,ltime->tm_year + 1900,
  1544. X        ltime->tm_hour,ltime->tm_min);
  1545. X
  1546. X}    /* end of emit_editnote */
  1547. X
  1548. X/*+-------------------------------------------------------------------------
  1549. X    main(argc,argv,envp)
  1550. X--------------------------------------------------------------------------*/
  1551. Xmain(argc,argv,envp)
  1552. Xint argc;
  1553. Xchar    **argv;
  1554. Xchar    **envp;
  1555. X{
  1556. X    register char *cptr;
  1557. X    register FILE *fpin;
  1558. X    register FILE *fpout;
  1559. X    char    buf[256];
  1560. X    char    *basename;
  1561. X
  1562. X    if(argc < 2)
  1563. X    {
  1564. X        ff(stderr,"usage: afterlint <infile> [<outfile>]\n");
  1565. X        ff(stderr,"if outfile not supplied, output is to stdout\n");
  1566. X        exit(1);
  1567. X    }
  1568. X
  1569. X    if(!(fpin = fopen(argv[1],"r")))
  1570. X    {
  1571. X        perror(argv[1]);
  1572. X        exit(1);
  1573. X    }
  1574. X
  1575. X    if(argc > 2)
  1576. X    {
  1577. X        if(!(fpout = fopen(argv[2],"w")))
  1578. X        {
  1579. X            perror(argv[2]);
  1580. X            exit(1);
  1581. X        }
  1582. X        basename = argv[2];
  1583. X    }
  1584. X    else
  1585. X        fpout = stdout;
  1586. X
  1587. X    ff(fpout,
  1588. X        "/*+-----------------------------------------------------------------------\n");
  1589. X    if(argc > 2)
  1590. X        ff(fpout,"\t%s\n",basename);
  1591. X    else
  1592. X        ff(fpout,"\tfunction declarations\n",basename);
  1593. X    ff(fpout,
  1594. X        "------------------------------------------------------------------------*/\n");
  1595. X
  1596. X    emit_editnote(fpout);
  1597. X    ff(fpout,"\n");
  1598. X    ff(fpout,"#ifndef BUILDING_LINT_ARGS\n");
  1599. X    ff(fpout,"#ifdef LINT_ARGS\n\n");
  1600. X
  1601. X    while(fgets(buf,sizeof(buf),fpin))
  1602. X    {
  1603. X        cptr = (strncmp(buf,"/*global*/  ",12)) ? buf : buf + 12;
  1604. X        cptr = (strncmp(buf,"extern  ",8)) ? cptr : cptr + 8;
  1605. X        cptr = (strncmp(buf,"static  ",8)) ? cptr : cptr + 8;
  1606. X        fputs(cptr,fpout);
  1607. X    }
  1608. X
  1609. X    ff(fpout,"\n#else\t\t/* compiler doesn't know about prototyping */\n\n");
  1610. X
  1611. X    fclose(fpin);
  1612. X    fpin = fopen(argv[1],"r");
  1613. X
  1614. X    while(fgets(buf,sizeof(buf),fpin))
  1615. X    {
  1616. X        cptr = (strncmp(buf,"/*global*/  ",12)) ? buf : buf + 12;
  1617. X        cptr = (strncmp(buf,"extern  ",8)) ? cptr : cptr + 8;
  1618. X        cptr = (strncmp(buf,"static  ",8)) ? cptr : cptr + 8;
  1619. X        if(strncmp(cptr,"int ",4))
  1620. X        {
  1621. X            if(strchr(cptr,'('))
  1622. X            {
  1623. X                while(*cptr != '(')
  1624. X                    fputc(*cptr++,fpout);
  1625. X                fputs("();\n",fpout);
  1626. X            }
  1627. X            else
  1628. X                fputs(cptr,fpout);
  1629. X        }
  1630. X    }
  1631. X
  1632. X    ff(fpout,"\n#endif /* LINT_ARGS */\n");
  1633. X    ff(fpout,"#endif /* BUILDING_LINT_ARGS */\n");
  1634. X    ff(fpout,"\n/* end of %s */\n",
  1635. X        (argc > 2) ? basename : "function declarations");
  1636. X
  1637. X    fclose(fpin);
  1638. X    fclose(fpout);
  1639. X    exit(0);
  1640. X}    /* end of main */
  1641. X
  1642. X/* vi: set tabstop=4 shiftwidth=4: */
  1643. SHAR_EOF
  1644. $TOUCH -am 1224222690 'afterlint.c' &&
  1645. chmod 0644 afterlint.c ||
  1646. echo 'restore of afterlint.c failed'
  1647. Wc_c="`wc -c < 'afterlint.c'`"
  1648. test 4060 -eq "$Wc_c" ||
  1649.     echo 'afterlint.c: original size 4060, current size' "$Wc_c"
  1650. # ============= bamboozle.c ==============
  1651. echo 'x - extracting bamboozle.c (Text)'
  1652. sed 's/^X//' << 'SHAR_EOF' > 'bamboozle.c' &&
  1653. X/*+-------------------------------------------------------------------------
  1654. X    bamboozle.c - ecu/ecuungetty protection scheme
  1655. X    wht@n4hgf.Mt-Park.GA.US
  1656. X--------------------------------------------------------------------------*/
  1657. X/*+:EDITS:*/
  1658. X/*:08-14-1990-20:39-wht@n4hgf-ecu3.00-flush old edit history */
  1659. X
  1660. Xchar *crypt(char *,char *);
  1661. X
  1662. X
  1663. X/*+-------------------------------------------------------------------------
  1664. X    bamboozle(pid) - build encrypted string based on 'pid'
  1665. X
  1666. XIf crypt not used, do something pretty basic  (probably enough)
  1667. XIf you are paranoid, don't use _ANY_ of these algorithms exactly
  1668. X--------------------------------------------------------------------------*/
  1669. Xchar *
  1670. Xbamboozle(pid)
  1671. Xint pid;
  1672. X{
  1673. X#if defined(CRYPT)
  1674. Xchar pidstr[16];
  1675. Xchar *cptr;
  1676. X
  1677. X    sprintf(pidstr,"z%08d",pid);
  1678. X    pidstr[0] = 'G';    /* fool strings searchers */
  1679. X    cptr = crypt(pidstr,"ba");
  1680. X    return(cptr);
  1681. X#else                /* probably enough */
  1682. Xstatic char pidstr[16];
  1683. X    sprintf(pidstr,"b%09da",(int)(((long)pid * 4) / 5));
  1684. X    return(pidstr);
  1685. X#endif
  1686. X
  1687. X#ifdef VARIANT_1    /* very paranoid */
  1688. Xchar pidstr[16];
  1689. Xchar *cptr;
  1690. X    sprintf(pidstr,"z%08d",pid);
  1691. X    pidstr[0] = 0xFF;    /* fool strings searchers */
  1692. X    cptr = crypt(pidstr,pidstr);
  1693. X    return(cptr);
  1694. X#endif
  1695. X#ifdef VARIANT_2    /* not paranoid at all */
  1696. Xchar pidstr[16];
  1697. X    sprintf(pidstr,"z%08d",pid - 2);
  1698. X#endif
  1699. X#ifdef VARIANT_3    /* invite trouble :-) */
  1700. X    return("I_am_easy");
  1701. X#endif
  1702. X
  1703. X}    /* end of bamboozle */
  1704. X
  1705. X
  1706. X/* vi: set tabstop=4 shiftwidth=4: */
  1707. X/* end of bamboozle.c */
  1708. SHAR_EOF
  1709. $TOUCH -am 1224222690 'bamboozle.c' &&
  1710. chmod 0644 bamboozle.c ||
  1711. echo 'restore of bamboozle.c failed'
  1712. Wc_c="`wc -c < 'bamboozle.c'`"
  1713. test 1470 -eq "$Wc_c" ||
  1714.     echo 'bamboozle.c: original size 1470, current size' "$Wc_c"
  1715. # ============= cmdtbl.c ==============
  1716. echo 'x - extracting cmdtbl.c (Text)'
  1717. sed 's/^X//' << 'SHAR_EOF' > 'cmdtbl.c' &&
  1718. X/*+-------------------------------------------------------------------------
  1719. X    cmdtbl.c - interactive/procedure command table data
  1720. X    wht@n4hgf.Mt-Park.GA.US
  1721. X--------------------------------------------------------------------------*/
  1722. X/*+:EDITS:*/
  1723. X/*:08-14-1990-20:39-wht@n4hgf-ecu3.00-flush old edit history */
  1724. X
  1725. X#define DECLARE_P_CMD
  1726. X#include "ecucmd.h"
  1727. X
  1728. X/* vi: set tabstop=4 shiftwidth=4: */
  1729. X/* end of cmdtbl.c */
  1730. SHAR_EOF
  1731. $TOUCH -am 1224222690 'cmdtbl.c' &&
  1732. chmod 0644 cmdtbl.c ||
  1733. echo 'restore of cmdtbl.c failed'
  1734. Wc_c="`wc -c < 'cmdtbl.c'`"
  1735. test 413 -eq "$Wc_c" ||
  1736.     echo 'cmdtbl.c: original size 413, current size' "$Wc_c"
  1737. true || echo 'restore of ecu.c failed'
  1738. echo End of part 1, continue with part 2
  1739. exit 0
  1740. --------------------------------------------------------------------
  1741. Warren Tucker, TuckerWare emory!n4hgf!wht or wht@n4hgf.Mt-Park.GA.US
  1742. Hacker Extraordinaire  d' async PADs,  pods,  proteins and protocols
  1743.  
  1744. exit 0 # Just in case...
  1745. -- 
  1746. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1747. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1748. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1749. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1750.