home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume22 / ecu / patch03a < prev    next >
Text File  |  1991-08-28  |  52KB  |  1,709 lines

  1. Newsgroups: comp.sources.misc
  2. From: Warren Tucker <wht@n4hgf.GA.US>
  3. Subject:  v22i070:  ecu - ECU async comm package rev 3.10, Patch03a/3
  4. Message-ID: <csm-v22i070=ecu.215803@sparky.imd.sterling.com>
  5. X-Md4-Signature: c37bf197d018da2421244e8da56f0df4
  6. Date: Wed, 28 Aug 1991 03:00:40 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: Warren Tucker <wht@n4hgf.GA.US>
  10. Posting-number: Volume 22, Issue 70
  11. Archive-name: ecu/patch03a
  12. Environment: SCO, XENIX, ISC, SUNOS4.1, SYSVR4
  13. Patch-To: ecu: Volume 21, Issue 53-89
  14.  
  15. This patch to ECU 3.10 fixes some bugs and adds preliminary support
  16. for SunOS 4.1 on Sparcs (native console and X11R4).  Fixes for
  17. XENIX and ISC reported by others have been incorporated.  I did
  18. the SunOS port.  Lothar Hirschbiegel did the SYSVR4 port (to ISC).
  19.  
  20. README.P3 gives detail.
  21.  
  22. Apply the patch by
  23.    patch -p < PATCH3.01
  24.  
  25. You *must* run the updated Configure procedure and fully reinstall.
  26. You do NOT have to be root to install under SunOS or SYSVR4 if
  27. you have write access to all of the installed directories.  There
  28. is no need for the setuid ecuungetty program in these environments.
  29. You must continue to have write access to the uucp lock file directory
  30. for AnyUser for any environment.
  31.  
  32. Comments, bugs, hate mail and large bags of unmarked tens and twenties
  33. appreciated.
  34.  
  35. I would also appreciate volunteers to hold a frequently updated
  36. tar.Z file of the patched release for ftp.  It would be nice to find
  37. a niche where I could login via ftp and update a subdirectory with
  38. official and experimental versions, patches, and binaries.  I cannot
  39. provide anonymous ftp access at this time.
  40.  
  41. Warren
  42. -----
  43. #!/bin/sh
  44. # This is ecu/patch3a (ECU 3.10 patch 3 part 1), a shell archive (shar 3.46)
  45. # made 08/27/1991 10:32 UTC by wht@n4hgf.GA.US
  46. # Source directory /export/home/wht/src/ecu313a
  47. #
  48. # existing files will NOT be overwritten unless -c is specified
  49. #
  50. # This is part 1 of a multipart archive                                    
  51. # do not concatenate these parts, unpack them in order with /bin/sh        
  52. #
  53. # This shar contains:
  54. # length  mode       name
  55. # ------ ---------- ------------------------------------------
  56. #   9768 -rw-rw-r-- README.P3
  57. # 135045 -rw-rw-r-- PATCH3.01
  58. #
  59. if test -r _shar_seq_.tmp; then
  60.     echo 'Must unpack archives in sequence!'
  61.     echo Please unpack part `cat _shar_seq_.tmp` next
  62.     exit 1
  63. fi
  64. # ============= README.P3 ==============
  65. if test -f 'README.P3' -a X"$1" != X"-c"; then
  66.     echo 'x - skipping README.P3 (File already exists)'
  67.     rm -f _shar_wnt_.tmp
  68. else
  69. > _shar_wnt_.tmp
  70. echo 'x - extracting README.P3 (Text)'
  71. sed 's/^X//' << 'SHAR_EOF' > 'README.P3' &&
  72. README.P3           ECU 3.10 Patch 3        Tue Aug 27 03:36:04 EDT 1991
  73. X
  74. This describes patch 3 to ECU 3.10, bringing the program to
  75. version 3.13. 
  76. X
  77. Overview
  78. --------
  79. X
  80. The patch fixes some problems with the previous release, adds new
  81. functionality and adds support for SunOS 4.1 and ISC System V
  82. Release 4.  I have tested it fairly well on a Sparc 1+ under
  83. XX11R4 (MIT Sun server and xterm at PL18) and SunOS 4.1.  I did my
  84. best to integrate patches supplied by Lothar Hirschbiegel
  85. (aega!lh).  Lothar has ISC SVR4 and his changes worked for him,
  86. but I had to hack them since his patches were against the
  87. "official" 3.12 and I applied them to sources already half-ported
  88. to the Sun.  I hope they go well, but write if they don't.  I want
  89. to hear of any success you might have with other SVR4 systems, too.
  90. X
  91. System V Release 4
  92. ------------------
  93. X
  94. > I cannot offer much information on this, since Lothar sent little more than
  95. > patches and I have no access to a system for testing. 
  96. > This is what I have:
  97. > I've just finished porting ecu3.12 to SVR4. I have added my changes
  98. > as a diff file, maybe this is of interest for you.
  99. > The following points were added/changed:
  100. > 1. I have included a configuration option for SVR4 in config.c
  101. > 2. ecu works fine with "ttymon" under SVR4. This means you don't need
  102. >    FAS or something like this - bidirectional access to the serial ports
  103. >    with the stock asy drivers is ok.
  104. > 3. Because of some strange(?) behaviour in SVR4 curses I had to use
  105. >    some terrible kludges to make it work clean. It's working as it is,
  106. >    but there is obvilously room for improvement...
  107. > 4. SVR4 has the same set of hardware handshake ioctl's as SCO does.
  108. >    It's named differently (RTSXOFF and CTSXON), but it seems to work exactly
  109. >    the same way. I have enabled the "RTS" option for SVR4 - hopefully this
  110. >    is a standard feature (termiox) in *all* SVR4 versions, not just in
  111. >    my ISC release... :-)
  112. > 5. I'm still working on ecusz/ecurz. Outgoing transfer is doing fine, but
  113. >    incoming transfer locks up the connection sometimes.
  114. >    As soon as I have finished this, I could send you the cdiffs too.
  115. X
  116. SunOS
  117. -----
  118. X
  119. I brought this up in relatively short order.  I may have gotten
  120. what I paid for :-), but it seems stable.  The System V support
  121. under SunOS was pleasingly similar to the SVR3 environment ECU came
  122. from.  This release works on my Sparc 1+ with SunOS 4.1.1 and X11R4.
  123. Some xterm VT100.Translations overrides are necessary to enable use of
  124. certain keys unrecognized by the default xterm configuration.
  125. Details are provided in the updated models/nonansikeys.  If the
  126. recommended changes, you can do what I did to figure out how to
  127. get this guy going:
  128. X
  129. X  1. run xev and press the various function keys to see the
  130. names you need to specify in the xterm translations.  
  131. X  2. edit the translations in nonansikeys example and put them in
  132. your .Xdefaults file
  133. X  3. run kbdtest3 to get a kbdtest3.out file
  134. X  4. put this file's output into your ~/.ecu/nonansikeys file
  135. (near the top, ahead of other xterm defs so it will be found first).
  136. X  5. try it
  137. X  6. when it works, send me the kbdtest3.out file along with the
  138. VT100.Translations overrides you casme up with and a description of
  139. the X environment you used.
  140. X
  141. There is also a new entry named 'sun' in models/nonansikeys for the
  142. console.
  143. X
  144. Note on 'nonansikeys'
  145. ---------------------
  146. X
  147. This file was named when support was added to the original
  148. SCO-only version to support keyboard/screens other than the
  149. native multiscreen console.  Since the TERM name for multiscreens
  150. is "ansi", it seemed reasonable to name the file nonansikeys.  It
  151. now should probably be called 'nonSCOmultiscreenskeys', but that
  152. name is too long for System V :-).  Before too many more
  153. revisions, even SCO multiscreen key definitions will be read from
  154. nonansikeys and maybe then will be a good time to rename the
  155. file.  Anyway, this file and a good termcap definition takes you
  156. a long way to supporting ecu on a wide variety of System V{,-ish}
  157. platforms.
  158. X
  159. Fixes
  160. -----
  161. X
  162. 1.  The ANSI SD (scroll down) sequence was broken for consoles
  163. other than SCO multiscreens.  It scrolled down n * COLS lines
  164. instead of n lines.
  165. X
  166. 2.  Editing the null phone directory entry (pressing 'e' in an
  167. empty directory, editing and exiting) caused a core dump.  Now
  168. you are prevented from editing a non-existent entry.
  169. X
  170. 3.  Procedure commands with switch arguments longer than 8
  171. characters caused stack corruption (unpredictable behavior
  172. including core dump).  There is no call for switches this long,
  173. but if present, the program should not explode.  Now, switches
  174. longer thasn 8 characters (including the hyphen) are silently
  175. truncated.  Should commands ever be added which could conceivably
  176. evoke switch arguments that might approach the limit, either the
  177. limit will be extended or error reporting will be added, or both,
  178. as appropriate.
  179. X
  180. 4.  # comments to the right of nonansikey key definition lines
  181. erroneously included the # in the definition.  This may not have
  182. been a bug in 3.12.  I may have added it during 3.13 development,
  183. but it is gone now in any case.
  184. X
  185. 5.  Previously, if the console line baud rate was not at least 4
  186. times the tty line rate (roughly), the "no curses" mode was
  187. forced during file transfer and could not be overridden.  Since
  188. various video driver implimentations express verious pseudo-"baud
  189. rate" settings, this was more often a problem than a feature.  If
  190. the change causes you trouble, write me (or trying using Home pc
  191. sz -N in lieu of Home pc sz, etc.).
  192. X
  193. 6.  Previously, an effort was made to editorialize on your choice
  194. of a tty device name.  This is no longer done.  On SCO, you
  195. should use the lower case (direct) names, like tty1a, to get the
  196. expected lock file names, but trying to second guess all the
  197. vendor and third-party names was an unnecessary and
  198. counter-productive stumpling block.  If you want to go for
  199. /dev/swap, go ahead (I don't expect the ioctls to work -- or your
  200. system :-> ).
  201. X
  202. 7.  Andrew A. Chernov (ache@hq.demos.su) said:
  203. X
  204. 1) HDB dialers may return connect speed as return code (!= 0)
  205. X [ and the CONNECT string built by hdbintf.c prints this code -- wht]
  206. X [his patch used - wht]
  207. 2) Using HDB Dialcodes file for phone numbers translation now
  208. X   (\D,\T escape sequence)
  209. X [his patch used - wht]
  210. X
  211. In other mail he wrote:
  212. X
  213. I just found  little bugs:
  214. 1) XENIX standard cc doesn't understand prototypes with names:
  215. "FILE *" is ok, but "FILE *fp" is bad. (patched sea/lint_args.h)
  216. X [fixed - wht]
  217. 2) 'makedirs' program NEED last '/' in path name to make directory.
  218. All Make.src patched to add '/' at the end of dirs.
  219. X [fixed n a different way; makedirs now works as advertised - wht]
  220. 3) Some HDB dialers looks in argv[0] and change some parameters
  221. (f.e. speed, etc.), so name "ECUdial" is invalid, and need change to
  222. dve->dialprog. WARNING: this patch required my previous patch
  223. (use 'token' instead of 'stripped_num')
  224. X [his patch used - wht]
  225. X
  226. 8. Jan-Piet Mens <logixwi.uucp!jpm> reported problems
  227. with VT-220 support due to it's necessity of passing characters
  228. with the sign bit set.  As of now, characters are read by ecu and kept
  229. 8-bit intact until they have been passed through the key mapping filter.
  230. Keys actually input to the program or sent over the line are
  231. limited to 7 bits for now (sorry to my international friends) since
  232. characters with the sign-bit have internal significance to ECU.
  233. This is a primary example of "American's Disease" (7-bit ASCII) and I'll get
  234. it out of here as soon as I get over "Warren's Disease" (laziness).
  235. X
  236. He also reported:
  237. > In README.P1, you write that the "nonansikeys" file may be put in
  238. > ECULIBDIR.  This is incorrect: it is searched for in
  239. > ECULIBDIR/.ecu [Line 193 nonansikey.c]
  240. X
  241. Acknowledgments
  242. ---------------
  243. X
  244. I've already mentioned Lothar's work in a matter-of-fact manner,
  245. but here is the place for extreme words of appreciation. SVR4 is
  246. very important and kudos to him for the leg up.
  247. X
  248. Robert E.  Laughlin, Naval Ocean Systems Center (NOSC), bel@trout.nosc.mil,
  249. reported various successes and failures.  We had a good and continuing
  250. dialog.  His interest, suggestions and moral support did more for me than my
  251. support of ECU did for him.
  252. X
  253. Andrew Chernov, of Relcom fame, made important suggestions and
  254. fixes for XENIX support and for the product as a whole.  He made
  255. some important suggestions for an older revision as well, some of
  256. which I put in and some not (Variously, I was too lazy, busy or
  257. the code had gone too far away from what he was patching from).
  258. His work is laudable and important for many reasons far exceeding
  259. his support of this little program.  Keep him in your thoughts
  260. through these strange and wonderous times.
  261. X
  262. It was good to hear from these folks for their comments asnd fixes:
  263. X
  264. X Andy Hall <relay.EU.net!ncduk!andyh>
  265. X Dave Hammond <dsix2!daveh
  266. X Greg Wilkins <sir-alan!gregw>
  267. X Michael P. Deignan <anomaly.sbs.com!mpd>
  268. X Michael Traub <rtf.bt.co.uk!traub>
  269. X cmcl2.NYU.EDU!panix!tbetz (Tom Betz)
  270. X Jan-Piet Mens <logixwi.uucp!jpm>
  271. X mudos.ann-arbor.mi.us!mju (Marc Unangst)
  272. X lll-winken.llnl.gov!abhg!tao!tempest!whitemp
  273. X ucsd!jadpc.cts.com!jdeitch
  274. X
  275. This file is harder to write than all of the code changes.  Not
  276. only is it hard to remember what all bugs were reported by whom
  277. and what changes were fixed by whom, I hope I haven't missed
  278. crediting anyone.  if I did, please forgive me.
  279. X
  280. Keep dem cards and letters coming.
  281. X
  282. ----------------------------------------------------------------------------
  283. Warren Tucker, TuckerWare, Mountain Park, GA         wht@n4hgf.Mt-Park.GA.US
  284. "Given any new technology for transmitting information, we seem bound to
  285. use it for great quantities of small talk.  We are only saved by music
  286. from being overwhelmed by nonsense." -- Lewis Thomas, _The Lives of a Cell_
  287. X
  288. SHAR_EOF
  289. chmod 0664 README.P3 ||
  290. echo 'restore of README.P3 failed'
  291. Wc_c="`wc -c < 'README.P3'`"
  292. test 9768 -eq "$Wc_c" ||
  293.     echo 'README.P3: original size 9768, current size' "$Wc_c"
  294. rm -f _shar_wnt_.tmp
  295. fi
  296. # ============= PATCH3.01 ==============
  297. if test -f 'PATCH3.01' -a X"$1" != X"-c"; then
  298.     echo 'x - skipping PATCH3.01 (File already exists)'
  299.     rm -f _shar_wnt_.tmp
  300. else
  301. > _shar_wnt_.tmp
  302. echo 'x - extracting PATCH3.01 (Text)'
  303. sed 's/^X//' << 'SHAR_EOF' > 'PATCH3.01' &&
  304. diff -c /export/home/wht/src/ecu312/Configure ./Configure
  305. *** /export/home/wht/src/ecu312/Configure    Tue Aug  6 15:05:00 1991
  306. --- ./Configure    Tue Aug 27 03:12:05 1991
  307. ***************
  308. *** 6,11 ****
  309. --- 6,12 ----
  310. X  # vendor-supplied header file hacking.
  311. X  #----------------------------------------------------------------------
  312. X  #+:EDITS:
  313. + #:08-25-1991-05:11-wht@n4hgf2-added Sun n4hgf2 WHT automation
  314. X  #:08-06-1991-05:05-wht@n4hgf-change FASI_IN_USE to FASI
  315. X  #:07-12-1991-14:05-wht@n4hgf-ensure config.c compiles properly
  316. X  #:04-29-1991-02:39-wht@n4hgf-document/clean
  317. ***************
  318. *** 25,35 ****
  319. X  SYSTEM=
  320. X  [ -f /etc/systemid ] && SYSTEM=`cat /etc/systemid`
  321. X  [ "$SYSTEM" = "n4hgf" ] && CFLAGS='-DWHT -DPEDANTIC -DMORSE -DFASI'
  322. X  
  323. X  echo Please wait while I compile the config program.
  324. X  rm -rf ./config
  325. X  cc $CFLAGS config.c -o config > /tmp/config.cc.log 2>&1
  326. X  ./config
  327. - rm -rf /tmp/config.cc.log
  328. X  
  329. X  #end of Configure
  330. --- 26,39 ----
  331. X  SYSTEM=
  332. X  [ -f /etc/systemid ] && SYSTEM=`cat /etc/systemid`
  333. X  [ "$SYSTEM" = "n4hgf" ] && CFLAGS='-DWHT -DPEDANTIC -DMORSE -DFASI'
  334. + [ -f /etc/hostname.le0 ] && SYSTEM=`cat /etc/hostname.le0`
  335. + [ "$SYSTEM" = "n4hgf2" ] && CFLAGS='-DWHT'
  336. X  
  337. X  echo Please wait while I compile the config program.
  338. X  rm -rf ./config
  339. X  cc $CFLAGS config.c -o config > /tmp/config.cc.log 2>&1
  340. + [ -x ./config ] && rm -rf /tmp/config.cc.log
  341. + [ -x ./config ] || echo '/tmp/config.cc.log has compile errors'
  342. X  ./config
  343. X  
  344. X  #end of Configure
  345. diff -c /export/home/wht/src/ecu312/Make.src ./Make.src
  346. *** /export/home/wht/src/ecu312/Make.src    Sun Aug 25 17:28:13 1991
  347. --- ./Make.src    Tue Aug 27 02:57:59 1991
  348. ***************
  349. *** 6,17 ****
  350. X  #
  351. X  # This Makefile and other ECU Makefiles have the ability to remake
  352. X  # lint_args.h by 'make protos'' ...  but don't do it on other than an
  353. ! # SCO XENIX/386 system since Microsoft C 4.x is needed. MSC 5 cc
  354. ! # (SCO UNIX) -Zg has been broken since at least 5/89 and cannot do
  355. ! # the job ....  if you do try to remake lint_args.h, please do
  356. ! # squirrel away the release copy first.
  357. X  #--------------------------------------------------------------------
  358. ! #+:EDITS:*/
  359. X  #:07-25-1991-12:55-wht@n4hgf-ECU release 3.10
  360. X  #:04-21-1991-12:43-wht@n4hgf-convert to Make.src
  361. X  
  362. --- 6,19 ----
  363. X  #
  364. X  # This Makefile and other ECU Makefiles have the ability to remake
  365. X  # lint_args.h by 'make protos'' ...  but don't do it on other than an
  366. ! # SCO XENIX/386  or UNIX system since Microsoft C is needed. MSC 5 cc
  367. ! # (SCO UNIX) -Zg has been broken since at least 5/89 and needs a hack
  368. ! # to do the job ... You must have the 286 compiler installed for it
  369. ! # to work on SCO UNIX.  If you do try to remake lint_args.h, please do
  370. ! # squirrel away the release copy first.  See zgcc for the -p1 hack.
  371. X  #--------------------------------------------------------------------
  372. ! #+:EDITS:
  373. ! #:08-23-1991-13:35-wht@n4hgf-sun porting (3.13)
  374. X  #:07-25-1991-12:55-wht@n4hgf-ECU release 3.10
  375. X  #:04-21-1991-12:43-wht@n4hgf-convert to Make.src
  376. X  
  377. ***************
  378. *** 23,30 ****
  379. X  .SUFFIXES: .o .c .h .l
  380. X  .c.o:;    $(BINTIME) $(CC) -c $(CFLAGS) $*.c 
  381. X  
  382. ! ECUSHARNAME=ecu311
  383. ! MANSHARNAME=ecuman311
  384. X  
  385. X  SRC    = \
  386. X      bamboozle.c\
  387. --- 25,32 ----
  388. X  .SUFFIXES: .o .c .h .l
  389. X  .c.o:;    $(BINTIME) $(CC) -c $(CFLAGS) $*.c 
  390. X  
  391. ! ECUSHARNAME=ecu313
  392. ! MANSHARNAME=ecuman313
  393. X  
  394. X  SRC    = \
  395. X      bamboozle.c\
  396. ***************
  397. *** 153,159 ****
  398. X      Make.src */Make.src \
  399. X      *.[ch] \
  400. X      bperr/bperr.c \
  401. !     help/{*.[ch],*.src} \
  402. X      ecuungetty/*.[ch] \
  403. X      z/*.[ch]\
  404. X      sea/{*.[ch],*.{doc,imp}} \
  405. --- 155,161 ----
  406. X      Make.src */Make.src \
  407. X      *.[ch] \
  408. X      bperr/bperr.c \
  409. !     help/{*.[ch],ecuhelp.src} \
  410. X      ecuungetty/*.[ch] \
  411. X      z/*.[ch]\
  412. X      sea/{*.[ch],*.{doc,imp}} \
  413. ***************
  414. *** 208,214 ****
  415. X      cd bperr;make bperr
  416. X  
  417. X  ecuug:
  418. !     cd ecuungetty;make 
  419. X  
  420. X  proc_error.c: ecuerror.h
  421. X      make bperr/bperr
  422. --- 210,218 ----
  423. X      cd bperr;make bperr
  424. X  
  425. X  ecuug:
  426. !     if [ $(USE_ECUUNGETTY) = yes ]; then \
  427. !         cd ecuungetty;make; \
  428. !     fi
  429. X  
  430. X  proc_error.c: ecuerror.h
  431. X      make bperr/bperr
  432. ***************
  433. *** 242,248 ****
  434. X  
  435. X  # install everything
  436. X  install: all makedirs iecu ecuhelp ecuz ecus #run as root
  437. !     cd ecuungetty; make install
  438. X      cd z; make install
  439. X      cd sea; make install
  440. X      cd help; make install
  441. --- 246,254 ----
  442. X  
  443. X  # install everything
  444. X  install: all makedirs iecu ecuhelp ecuz ecus #run as root
  445. !     if [ $(USE_ECUUNGETTY) = yes ]; then \
  446. !         cd ecuungetty; make install; \
  447. !     fi
  448. X      cd z; make install
  449. X      cd sea; make install
  450. X      cd help; make install
  451. ***************
  452. *** 266,272 ****
  453. X  # tools for making ecu
  454. X  $(LBIN)/sysdep: sysdep.c    # uname -m undocumented on UNIX but works
  455. X      @echo 'building sysdep for' `uname -p`
  456. !     [ `uname -m` != i80286 ] || $(CC) -O -M2 sysdep.c -o $@
  457. X      [ `uname -m`  = i80286 ] || $(CC) -O $(ISC) sysdep.c -o $@
  458. X  
  459. X  $(LBIN)/afterlint: afterlint.c
  460. --- 272,278 ----
  461. X  # tools for making ecu
  462. X  $(LBIN)/sysdep: sysdep.c    # uname -m undocumented on UNIX but works
  463. X      @echo 'building sysdep for' `uname -p`
  464. !     [ `uname -m` = i80286 ] || $(CC) -O -M2 sysdep.c -o $@
  465. X      [ `uname -m`  = i80286 ] || $(CC) -O $(ISC) sysdep.c -o $@
  466. X  
  467. X  $(LBIN)/afterlint: afterlint.c
  468. ***************
  469. *** 285,291 ****
  470. X      cd help;make neat
  471. X      cd z;make neat
  472. X      cd sea;make neat
  473. !     cd ecuungetty;make neat
  474. X  
  475. X  clean: neat
  476. X      rm -f $(OBJ)
  477. --- 291,299 ----
  478. X      cd help;make neat
  479. X      cd z;make neat
  480. X      cd sea;make neat
  481. !     if [ $(USE_ECUUNGETTY) = yes ]; then \
  482. !         cd ecuungetty;make neat; \
  483. !     fi
  484. X  
  485. X  clean: neat
  486. X      rm -f $(OBJ)
  487. ***************
  488. *** 292,298 ****
  489. X      cd help;make clean
  490. X      cd z;make clean
  491. X      cd sea;make clean
  492. !     cd ecuungetty;make clean
  493. X  
  494. X  clobber: clean
  495. X      rm -f $(PROGRAM) $(PROGRAM)~
  496. --- 300,308 ----
  497. X      cd help;make clean
  498. X      cd z;make clean
  499. X      cd sea;make clean
  500. !     if [ $(USE_ECUUNGETTY) = yes ]; then \
  501. !         cd ecuungetty;make clean; \
  502. !     fi
  503. X  
  504. X  clobber: clean
  505. X      rm -f $(PROGRAM) $(PROGRAM)~
  506. ***************
  507. *** 299,305 ****
  508. X      cd help;make clobber
  509. X      cd z;make clobber
  510. X      cd sea;make clobber
  511. !     cd ecuungetty;make clobber
  512. X  
  513. X  #regenerate .o:.h dependencies automatically
  514. X  depend:
  515. --- 309,317 ----
  516. X      cd help;make clobber
  517. X      cd z;make clobber
  518. X      cd sea;make clobber
  519. !     if [ $(USE_ECUUNGETTY) = yes ]; then \
  520. !         cd ecuungetty;make clobber
  521. !     fi
  522. X  
  523. X  #regenerate .o:.h dependencies automatically
  524. X  depend:
  525. ***************
  526. *** 312,324 ****
  527. X       >> depend.tmp) ;\
  528. X      fi
  529. X  
  530. !     echo '/^# DO NOT DELETE THIS LINE' >exdep.tmp
  531. !     echo '.+1,$$d' >>exdep.tmp
  532. !     echo 'r depend.tmp' >> exdep.tmp
  533. !     echo 'w' >> exdep.tmp
  534. X      cp Makefile Makefile.new
  535. !     ex Makefile.new < exdep.tmp
  536. !     rm exdep.tmp depend.tmp
  537. X      echo '# DEPENDENCIES MUST END AT END OF FILE' >>Makefile.new
  538. X      echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY'>>Makefile.new
  539. X      echo '# see make depend above'>>Makefile.new
  540. --- 324,336 ----
  541. X       >> depend.tmp) ;\
  542. X      fi
  543. X  
  544. !     echo '/^# DO NOT DELETE THIS LINE' >eddep.tmp
  545. !     echo '.+1,$$d' >>eddep.tmp
  546. !     echo 'r depend.tmp' >> eddep.tmp
  547. !     echo 'w' >> eddep.tmp
  548. X      cp Makefile Makefile.new
  549. !     ed Makefile.new < eddep.tmp
  550. !     rm eddep.tmp depend.tmp
  551. X      echo '# DEPENDENCIES MUST END AT END OF FILE' >>Makefile.new
  552. X      echo '# IF YOU PUT STUFF HERE IT WILL GO AWAY'>>Makefile.new
  553. X      echo '# see make depend above'>>Makefile.new
  554. ***************
  555. *** 327,333 ****
  556. X      cd help;make depend
  557. X      cd z;make depend
  558. X      cd sea;make depend
  559. !     cd ecuungetty;make depend
  560. X  
  561. X  # DO NOT DELETE THIS LINE
  562. X  # DEPENDENCIES MUST END AT END OF FILE
  563. --- 339,347 ----
  564. X      cd help;make depend
  565. X      cd z;make depend
  566. X      cd sea;make depend
  567. !     if [ $(USE_ECUUNGETTY) = yes ]; then \
  568. !         cd ecuungetty;make depend; \
  569. !     fi
  570. X  
  571. X  # DO NOT DELETE THIS LINE
  572. X  # DEPENDENCIES MUST END AT END OF FILE
  573. Only in .: PATCH3.01
  574. diff -c /export/home/wht/src/ecu312/README ./README
  575. *** /export/home/wht/src/ecu312/README    Sat Jul 27 15:36:00 1991
  576. --- ./README    Sun Aug 25 23:33:07 1991
  577. ***************
  578. *** 1,5 ****
  579. X  .--------------------------------------------------------.
  580. ! | ecu README - last revised Thu Jul 18 07:55:10 EDT 1991 |
  581. X  `--------------------------------------------------------'
  582. X  
  583. X  This is ecu revision 3.10.  Ecu is a asynchronous communications
  584. --- 1,5 ----
  585. X  .--------------------------------------------------------.
  586. ! | ecu README - last revised Sun Aug 25 22:56:51 EDT 1991 |
  587. X  `--------------------------------------------------------'
  588. X  
  589. X  This is ecu revision 3.10.  Ecu is a asynchronous communications
  590. ***************
  591. *** 12,17 ****
  592. --- 12,23 ----
  593. X  production version of SCO UNIX or ODT.  Preliminary support for ISC
  594. X  386/ix 2.2 seems to be at least partially functional.
  595. X  
  596. + At patchlevel 3 or higher, at least partial (useful) support
  597. + is provided for SunOS 4.1 X11 users on a Sparc and for ISC System
  598. + V Release 4.  I did the sun port.  Lothar Hirschbiegel
  599. + (aega84!lh) did the SVR4 port -- THANKS, Lothar!
  600. + See README.P3 for elaboration on this new support.
  601. X  Support for "non-ANSI" consoles is relatively stable and more
  602. X  mature.  I use it (almost exclusively now) with a Metro Link X11R4
  603. X  xterm.  Bugs are expected and reports will be greatly appreciated.
  604. ***************
  605. *** 21,27 ****
  606. X  the manual and the note below named "KBDTEST3".
  607. X  
  608. X  Gcc is supported for all programs in the release.  See the
  609. ! configuration section and the note on gcc for important caveats
  610. X  
  611. X  More progress has been made for a port to ISC 2.2.  The program
  612. X  compiles properly with the gcc or native cc compiler, but very
  613. --- 27,33 ----
  614. X  the manual and the note below named "KBDTEST3".
  615. X  
  616. X  Gcc is supported for all programs in the release.  See the
  617. ! configuration section and the note on gcc for important caveats.
  618. X  
  619. X  More progress has been made for a port to ISC 2.2.  The program
  620. X  compiles properly with the gcc or native cc compiler, but very
  621. Only in .: README.P2
  622. Only in .: README.P3
  623. Common subdirectories: /export/home/wht/src/ecu312/bperr and ./bperr
  624. diff -c /export/home/wht/src/ecu312/config.c ./config.c
  625. *** /export/home/wht/src/ecu312/config.c    Sun Aug 25 17:28:13 1991
  626. --- ./config.c    Sun Aug 25 14:39:24 1991
  627. ***************
  628. *** 1,5 ****
  629. X  /* CHK=0xD40E */
  630. ! char *rev = "3.10";
  631. X  /*+-------------------------------------------------------------------------
  632. X      config.c - Makefile configuration program for ECU
  633. X      wht@n4hgf.Mt-Park.GA.US
  634. --- 1,5 ----
  635. X  /* CHK=0xD40E */
  636. ! char *rev = "3.13";
  637. X  /*+-------------------------------------------------------------------------
  638. X      config.c - Makefile configuration program for ECU
  639. X      wht@n4hgf.Mt-Park.GA.US
  640. ***************
  641. *** 15,20 ****
  642. --- 15,21 ----
  643. X      gen_gcc_cflags()
  644. X      gen_isc_ldflags()
  645. X      gen_sco_ldflags()
  646. +     gen_svr4_ldflags()
  647. X      generate_config(mdir)
  648. X      goodbye(sig)
  649. X      main(argc,argv)
  650. ***************
  651. *** 26,31 ****
  652. --- 27,34 ----
  653. X  
  654. X  --------------------------------------------------------------------------*/
  655. X  /*+:EDITS:*/
  656. + /*:08-25-1991-14:39-wht@n4hgf-SVR4 port thanks to aega84!lh */
  657. + /*:08-23-1991-01:37-wht@n4hgf-sun port */
  658. X  /*:07-25-1991-12:55-wht@n4hgf-ECU release 3.10 */
  659. X  /*:07-12-1991-14:02-wht@n4hgf-GCC140 update */
  660. X  /*:05-02-1991-02:46-wht@n4hgf-take out M_TERMCAP in favor of ecucurses.h */
  661. ***************
  662. *** 41,46 ****
  663. --- 44,51 ----
  664. X  
  665. X  #define S_SCO        0
  666. X  #define S_ISC        1
  667. + #define S_SUN        2
  668. + #define S_SVR4        3
  669. X  
  670. X  #define X_X286        0
  671. X  #define X_X386        1
  672. ***************
  673. *** 56,62 ****
  674. --- 61,69 ----
  675. X  char *makedirs[] = {
  676. X      ".",
  677. X      "./ecufriend",
  678. + #ifndef sun
  679. X      "./ecuungetty",
  680. + #endif
  681. X      "./gendial",
  682. X      "./help",
  683. X      "./sea",
  684. ***************
  685. *** 120,126 ****
  686. --- 127,135 ----
  687. X      "\t-v\\\n",
  688. X  #endif
  689. X      "\t-fstrength-reduce -fpcc-struct-return -fwritable-strings\\\n",
  690. + #if defined(i386) || defined(M_I286) || defined(M_SYSV) || defined(ISC)
  691. X      "\t-fcall-used-ax -fcall-used-bx -fcall-used-cx -fcall-used-dx\\\n",
  692. + #endif
  693. X      "\t-finline-functions -fforce-mem -fforce-addr\\\n",
  694. X      "\t-W -Wunused -Wpointer-arith -Wcast-qual\\\n",
  695. X      (char *)0
  696. ***************
  697. *** 134,143 ****
  698. X  \t-DM_INTERNAT -DM_SDATA -DM_STEXT -DM_SYS3 -DM_SYS5\\\n\
  699. X  \t-DM_SYSIII -DM_SYSV -DM_UNIX -DM_WORDSWAP -DM_XENIX -Dunix\\\n",
  700. X  };
  701. ! char *isc_cc_opts  = "\t-O -DISC -DISC22\\\n";
  702. ! char *isc_gcc_opts = "\t-DISC -DISC22\\\n";
  703. X  char *isc_sigtype = "\t-DSIGTYPE=void\\\n";
  704. X  
  705. X  /*
  706. X   * LIBS
  707. X   */
  708. --- 143,160 ----
  709. X  \t-DM_INTERNAT -DM_SDATA -DM_STEXT -DM_SYS3 -DM_SYS5\\\n\
  710. X  \t-DM_SYSIII -DM_SYSV -DM_UNIX -DM_WORDSWAP -DM_XENIX -Dunix\\\n",
  711. X  };
  712. ! char *isc_cc_opts  = "\t-O -DISC -DISC22 -DSYSV\\\n";
  713. ! char *isc_gcc_opts = "\t-DISC -DISC22 -DSYSV\\\n";
  714. X  char *isc_sigtype = "\t-DSIGTYPE=void\\\n";
  715. X  
  716. + char *sun_cc_opts  = "\t-O -DBSD\\\n";
  717. + char *sun_gcc_opts  = "\t-O -DBSD\\\n";
  718. + char *sun_sigtype = "\t-DSIGTYPE=void\\\n";
  719. + char *svr4_cc_opts  = "\t-O -DSVR4 -DSYSV\\\n";
  720. + char *svr4_gcc_opts = "\t-DSVR4 -DSYSV\\\n";
  721. + char *svr4_sigtype = "\t-DSIGTYPE=void\\\n";
  722. X  /*
  723. X   * LIBS
  724. X   */
  725. ***************
  726. *** 149,154 ****
  727. --- 166,175 ----
  728. X  
  729. X  char *isc_libs = "-lcurses -linet -lx -lmalloc";
  730. X  
  731. + char *sun_libs = "-lcurses -ltermcap";
  732. + char *svr4_libs = "-lcurses -lx -lmalloc";
  733. X  char *sco_system[] = {
  734. X      "XENIX/286",
  735. X      "XENIX/386",
  736. ***************
  737. *** 157,167 ****
  738. --- 178,193 ----
  739. X  
  740. X  char *isc_system = "ISC-2.2";
  741. X  
  742. + char *sun_system = "SunOS-4.1";
  743. + char *svr4_system = "SVR4.0";
  744. X  char *malloc_3x = "\t-DMALLOC_3X\\\n";
  745. X  
  746. X  char *bindir = "/usr/local/bin";
  747. X  char *libdir = "/usr/local/lib/ecu";
  748. X  char *symbolic = "";
  749. + char *use_ecuungetty = "yes";
  750. X  
  751. X  int sys = -1;
  752. X  int compiler = -1;
  753. ***************
  754. *** 270,279 ****
  755. X              fputs(malloc_3x,fpmake);
  756. X              fputs(isc_sigtype,fpmake);
  757. X              break;
  758. X      }
  759. X      fputs("\t-DECULIBDIR='\"$(ECULIBDIR)\"'\\\n",fpmake);
  760. ! #if defined(WHT)
  761. X      fputs("\t-DWHT -DMORSE -DFASI -g\\\n",fpmake);
  762. X  #else
  763. X  #if defined(MORSE)
  764. X      fputs("\t-DMORSE -g\\\n",fpmake);
  765. --- 296,319 ----
  766. X              fputs(malloc_3x,fpmake);
  767. X              fputs(isc_sigtype,fpmake);
  768. X              break;
  769. +         case S_SUN:
  770. +             fputs(sun_cc_opts,fpmake);
  771. +             fputs(malloc_3x,fpmake);
  772. +             fputs(isc_sigtype,fpmake);
  773. +             break;
  774. +         case S_SVR4:
  775. +             fputs(svr4_cc_opts,fpmake);
  776. +             fputs(malloc_3x,fpmake);
  777. +             fputs(svr4_sigtype,fpmake);
  778. +             break;
  779. X      }
  780. X      fputs("\t-DECULIBDIR='\"$(ECULIBDIR)\"'\\\n",fpmake);
  781. ! #if defined(WHT) 
  782. ! #if defined(sun)
  783. !     fputs("\t-DWHT -DAUDIO -g\\\n",fpmake);
  784. ! #else
  785. X      fputs("\t-DWHT -DMORSE -DFASI -g\\\n",fpmake);
  786. + #endif
  787. X  #else
  788. X  #if defined(MORSE)
  789. X      fputs("\t-DMORSE -g\\\n",fpmake);
  790. ***************
  791. *** 305,310 ****
  792. --- 345,360 ----
  793. X              fputs(malloc_3x,fpmake);
  794. X              fputs(isc_sigtype,fpmake);
  795. X              break;
  796. +         case S_SUN:
  797. +             fputs(sun_gcc_opts,fpmake);
  798. +             fputs(malloc_3x,fpmake);
  799. +             fputs(sun_sigtype,fpmake);
  800. +             break;
  801. +         case S_SVR4:
  802. +             fputs(svr4_gcc_opts,fpmake);
  803. +             fputs(malloc_3x,fpmake);
  804. +             fputs(svr4_sigtype,fpmake);
  805. +             break;
  806. X      }
  807. X      fputs("\t-DECULIBDIR='\"$(ECULIBDIR)\"'\\\n",fpmake);
  808. X  #if defined(WHT)
  809. ***************
  810. *** 353,358 ****
  811. --- 403,426 ----
  812. X  }
  813. X  
  814. X  void
  815. + gen_sun_ldflags()
  816. + {
  817. +     fputs("LDFLAGS = \\\n",fpmake);
  818. +     fputs("\t$(SYMBOLIC) $(LDFLAGS_EXTRA)\n\n",fpmake);
  819. +     fprintf(fpmake,"LIBS = %s\n\n",sun_libs);
  820. + }
  821. + void
  822. + gen_svr4_ldflags()
  823. + {
  824. +     fputs("LDFLAGS = \\\n",fpmake);
  825. +     fputs("\t$(SYMBOLIC) $(LDFLAGS_EXTRA)\n\n",fpmake);
  826. +     fprintf(fpmake,"LIBS = %s\n\n",svr4_libs);
  827. + }
  828. + void
  829. X  generate_config(mdir)
  830. X  char *mdir;
  831. X  {
  832. ***************
  833. *** 411,416 ****
  834. --- 479,490 ----
  835. X          case S_ISC:
  836. X              gen_isc_ldflags();
  837. X              break;
  838. +         case S_SUN:
  839. +             gen_sun_ldflags();
  840. +             break;
  841. +         case S_SVR4:
  842. +             gen_svr4_ldflags();
  843. +             break;
  844. X      }
  845. X  
  846. X      fprintf(fpmake,"LBIN = %s\n",bindir);
  847. ***************
  848. *** 419,430 ****
  849. --- 493,516 ----
  850. X      {
  851. X          case S_SCO:
  852. X              fprintf(fpmake,"SYSTEM = %s\n",sco_system[sco_type]);
  853. +             use_ecuungetty = "yes";
  854. X              break;
  855. X          case S_ISC:
  856. X              fprintf(fpmake,"SYSTEM = %s\n",isc_system);
  857. +             use_ecuungetty = "yes";
  858. X              break;
  859. +         case S_SUN:
  860. +             fprintf(fpmake,"SYSTEM = %s\n",sun_system);
  861. +             use_ecuungetty = "no";
  862. +             break;
  863. +         case S_SVR4:
  864. +             fprintf(fpmake,"SYSTEM = %s\n",svr4_system);
  865. +             use_ecuungetty = "no";
  866. +             break;
  867. X      }
  868. X  
  869. +     fprintf(fpmake,"USE_ECUUNGETTY = %s\n",use_ecuungetty);
  870. X  #if !defined(WHT)
  871. X      fputs("#",fpmake);
  872. X  #endif
  873. ***************
  874. *** 456,462 ****
  875. X      setbuf(stdin,NULL);
  876. X      setbuf(stdout,NULL);
  877. X  
  878. !     while((itmp = getopt(argc,argv,"dsi23ugcb:l:")) != -1)
  879. X      {
  880. X          switch(itmp)
  881. X          {
  882. --- 542,548 ----
  883. X      setbuf(stdin,NULL);
  884. X      setbuf(stdout,NULL);
  885. X  
  886. !     while((itmp = getopt(argc,argv,"dsiS234ugcb:l:")) != -1)
  887. X      {
  888. X          switch(itmp)
  889. X          {
  890. ***************
  891. *** 464,469 ****
  892. --- 550,557 ----
  893. X  
  894. X              case 's': sys = S_SCO; break;
  895. X              case 'i': sys = S_ISC; break;
  896. +             case 'S': sys = S_SUN; break;
  897. +             case '4': sys = S_SVR4; break;
  898. X  
  899. X              case '2': sco_type = X_X286; break;
  900. X              case '3': sco_type = X_X386; break;
  901. ***************
  902. *** 505,514 ****
  903. X  
  904. X      if(sys < 0)
  905. X      {
  906. !         switch(tgetopt("Is this an SCO or ISC system","si"))
  907. X          {
  908. X              case 's':  sys = S_SCO; break;
  909. X              case 'i':  sys = S_ISC; break;
  910. X          }
  911. X      }
  912. X  
  913. --- 593,605 ----
  914. X  
  915. X      if(sys < 0)
  916. X      {
  917. !         switch(tgetopt("Is this an SCO, ISC, SunOS 4.1, or SVR4 system",
  918. !             "siS4"))
  919. X          {
  920. X              case 's':  sys = S_SCO; break;
  921. X              case 'i':  sys = S_ISC; break;
  922. +             case 'S':  sys = S_SUN; break;
  923. +             case 'f':  sys = S_SVR4; break;
  924. X          }
  925. X      }
  926. X  
  927. ***************
  928. *** 554,560 ****
  929. X          if(!getopt_bindir)
  930. X          {
  931. X              printf(
  932. !             "\nWhere do you want the public executables placed [%s]: ",bindir);
  933. X              tgets(s128);
  934. X              if(s128[0])
  935. X                  bindir = strdup(s128);
  936. --- 645,652 ----
  937. X          if(!getopt_bindir)
  938. X          {
  939. X              printf(
  940. !             "\nWhere do you want the public executables placed [%s]\n: ",
  941. !                 bindir);
  942. X              tgets(s128);
  943. X              if(s128[0])
  944. X                  bindir = strdup(s128);
  945. ***************
  946. *** 563,569 ****
  947. X          if(!getopt_libdir)
  948. X          {
  949. X              printf(
  950. !             "\nWhere do you want the ECU library placed [%s]: ",libdir);
  951. X              tgets(s128);
  952. X              if(s128[0])
  953. X                  libdir = strdup(s128);
  954. --- 655,661 ----
  955. X          if(!getopt_libdir)
  956. X          {
  957. X              printf(
  958. !             "\nWhere do you want the ECU library placed [%s]\n: ",libdir);
  959. X              tgets(s128);
  960. X              if(s128[0])
  961. X                  libdir = strdup(s128);
  962. diff -c /export/home/wht/src/ecu312/dialprog.h ./dialprog.h
  963. *** /export/home/wht/src/ecu312/dialprog.h    Thu Jul 25 12:55:00 1991
  964. --- ./dialprog.h    Tue Aug 27 03:09:53 1991
  965. ***************
  966. *** 3,11 ****
  967. --- 3,23 ----
  968. X      wht@n4hgf.Mt-Park.GA.US
  969. X  --------------------------------------------------------------------------*/
  970. X  /*+:EDITS:*/
  971. + /*:08-27-1991-03:08-ache@hq.demos.su-dialer enhancement */
  972. X  /*:07-25-1991-12:55-wht@n4hgf-ECU release 3.10 */
  973. X  /*:08-14-1990-20:39-wht@n4hgf-ecu3.00-flush old edit history */
  974. X  
  975. + /*  Return code masks:
  976. +  *            0x80    bit = 1 if connection failed
  977. +  *            0x10    bit = 1 if line is also used for dialin #ifndef HDUU
  978. +  *            0x0f    if msb=1: error code
  979. +  *                    if msb=0: connected baud rate (0=same as dialed baud)
  980. +  */
  981. + /* return codes: these are set up so that an abort signal at any time can */
  982. + /* set the fail bit and return to the caller with the correct status */
  983. + #define       RC_BAUD         0x0f    /* CBAUD connected at (0=same as dialed speed)*/
  984. + #define       RC_ENABLED      0x10    /* enabled flag: 1 = ungetty -r required to */
  985. +                   /* restore the line */
  986. X  #define    RC_FAIL        0x80    /* 1 = failed to connect */
  987. X  #define    RCE_NULL    0        /* general purpose or unknown error code */
  988. X  #define    RCE_INUSE    1        /* line in use */
  989. Common subdirectories: /export/home/wht/src/ecu312/doc and ./doc
  990. diff -c /export/home/wht/src/ecu312/dvent.h ./dvent.h
  991. *** /export/home/wht/src/ecu312/dvent.h    Thu Jul 25 12:55:00 1991
  992. --- ./dvent.h    Sun Aug 25 13:02:44 1991
  993. ***************
  994. *** 14,19 ****
  995. --- 14,20 ----
  996. X      uint low_baud;    /* lowest baud rate */
  997. X      uint high_baud;    /* highest baud rate */
  998. X      char *dialprog;    /* dialer program */
  999. +       char *token;    /* token to be passed to the dialer */
  1000. X  };
  1001. X  
  1002. X  struct dvent *getdvent();
  1003. diff -c /export/home/wht/src/ecu312/ecu.c ./ecu.c
  1004. *** /export/home/wht/src/ecu312/ecu.c    Sun Aug 25 17:29:11 1991
  1005. --- ./ecu.c    Mon Aug 26 13:29:15 1991
  1006. ***************
  1007. *** 71,77 ****
  1008. X  int hz;                    /* HZ from environ or sys/param.h */
  1009. X  ulong hzmsec;            /* clock period in msec rounded up */
  1010. X  struct timeb starting_timeb;
  1011. ! #ifdef WHT
  1012. X  char *sbrk();
  1013. X  char *startbrk;
  1014. X  #endif
  1015. --- 71,77 ----
  1016. X  int hz;                    /* HZ from environ or sys/param.h */
  1017. X  ulong hzmsec;            /* clock period in msec rounded up */
  1018. X  struct timeb starting_timeb;
  1019. ! #ifdef MALLOC_3X
  1020. X  char *sbrk();
  1021. X  char *startbrk;
  1022. X  #endif
  1023. ***************
  1024. *** 150,161 ****
  1025. X      (void)mallopt(M_MXFAST,256+4);
  1026. X      (void)mallopt(M_NLBLKS,64);
  1027. X      (void)mallopt(M_GRAIN,sizeof(ESD) + 8);
  1028. - #ifdef WHT
  1029. X      startbrk = sbrk(0);
  1030. - #endif /* WHT */
  1031. X  #endif
  1032. X  
  1033. X      setbuf(stderr,NULL);
  1034. X  
  1035. X      ftime(&starting_timeb);    /* get startup time */
  1036. X      xmtr_pid = getpid();
  1037. --- 150,160 ----
  1038. X      (void)mallopt(M_MXFAST,256+4);
  1039. X      (void)mallopt(M_NLBLKS,64);
  1040. X      (void)mallopt(M_GRAIN,sizeof(ESD) + 8);
  1041. X      startbrk = sbrk(0);
  1042. X  #endif
  1043. X  
  1044. X      setbuf(stderr,NULL);
  1045. +     xmtr_signals();            /* catch xmtr signals */
  1046. X  
  1047. X      ftime(&starting_timeb);    /* get startup time */
  1048. X      xmtr_pid = getpid();
  1049. ***************
  1050. *** 221,228 ****
  1051. X  
  1052. X      make_ecu_subdir();        /* needs to be very early before lots of init */
  1053. X  
  1054. -     xmtr_signals();            /* catch xmtr signals */
  1055. X      get_curr_dir(curr_dir,sizeof(curr_dir));
  1056. X      cd_array_init();        /* read %cd directory list */
  1057. X  
  1058. --- 220,225 ----
  1059. ***************
  1060. *** 278,288 ****
  1061. X                  strcat(shm->Lline,"tty");
  1062. X              strcat(shm->Lline,optarg);
  1063. X  #else
  1064. - #if defined(ISC)
  1065. X              strcat(shm->Lline,optarg);
  1066. - #else
  1067. - #    include "need.porting.attention.here"
  1068. - #endif /* ISC */
  1069. X  #endif /* M_SYSV */
  1070. X                  break;
  1071. X              case 'p':
  1072. --- 275,281 ----
  1073. ***************
  1074. *** 311,331 ****
  1075. X      }
  1076. X  
  1077. X      ttyinit(shm->ttyinit_param);    /* init console tty mode handler */
  1078. !     ttymode(4);                        /* put user console in `raw' mode */
  1079. X      tcap_clear_screen();
  1080. X  #ifdef WHT
  1081. X      xterm_title("ECU",0);
  1082. X  #endif
  1083. X      ff(se,"%s\r\n",hello_str);
  1084. -     if(kbd_is_7bit && !tty_not_char_special)
  1085. -     {
  1086. - /*
  1087. -         tcap_cursor(tcap_LINES - 3,0);
  1088. - */
  1089. -         ff(se,
  1090. -     "No problem, but just to warn you, the keyboard has parity enabled\r\n");
  1091. -         Nap(500L);
  1092. -     }
  1093. X  
  1094. X  /* check out line */
  1095. X      if(!shm->Lline[0])
  1096. --- 304,315 ----
  1097. X      }
  1098. X  
  1099. X      ttyinit(shm->ttyinit_param);    /* init console tty mode handler */
  1100. !     ttymode(3);        /* put user console in `raw' mode but SIGINT terms prog */
  1101. X      tcap_clear_screen();
  1102. X  #ifdef WHT
  1103. X      xterm_title("ECU",0);
  1104. X  #endif
  1105. X      ff(se,"%s\r\n",hello_str);
  1106. X  
  1107. X  /* check out line */
  1108. X      if(!shm->Lline[0])
  1109. diff -c /export/home/wht/src/ecu312/ecu.h ./ecu.h
  1110. *** /export/home/wht/src/ecu312/ecu.h    Sun Aug 25 17:29:11 1991
  1111. --- ./ecu.h    Sun Aug 25 14:39:25 1991
  1112. ***************
  1113. *** 3,8 ****
  1114. --- 3,9 ----
  1115. X      wht@n4hgf.Mt-Park.GA.US
  1116. X  ------------------------------------------------------------------------*/
  1117. X  /*+:EDITS:*/
  1118. + /*:08-25-1991-14:39-wht@n4hgf-SVR4 port thanks to aega84!lh */
  1119. X  /*:08-13-1991-13:53-wht@n4hgf-UNIX and ISC nap() broken; XENIX still wins */
  1120. X  /*:08-09-1991-11:07-wht@n4hgf-configurable lock directory */
  1121. X  /*:07-25-1991-12:55-wht@n4hgf-ECU release 3.10 */
  1122. ***************
  1123. *** 148,160 ****
  1124. X  #define LOPEN_UNKPID            -2        /* unknown pid using line */
  1125. X  #define LOPEN_LCKERR            -3        /* lock file open error */
  1126. X  #define LOPEN_NODEV                -4        /* device does not exist */
  1127. ! #define LOPEN_OPNFAIL            -5        /* could not open line */
  1128. X  #define LOPEN_ALREADY            -6        /* line already open */
  1129. X  #define LOPEN_ENABLED            -7        /* line enabled for login */
  1130. X  #define LOPEN_ENABLED_IN_USE    -8        /* line in use by incoming login */
  1131. X  #define LOPEN_DIALOUT_IN_USE    -9        /* line in use by another dial out */
  1132. X  #define LOPEN_NOPTY                -10        /* pty not supported */
  1133. ! #define LOPEN_WE_GOT_IT            -11        /* not rerally an error: we already
  1134. X                                           * own the line (used by check_utmp())
  1135. X                                           */
  1136. X  
  1137. --- 149,161 ----
  1138. X  #define LOPEN_UNKPID            -2        /* unknown pid using line */
  1139. X  #define LOPEN_LCKERR            -3        /* lock file open error */
  1140. X  #define LOPEN_NODEV                -4        /* device does not exist */
  1141. ! #define LOPEN_OPNFAIL            -5        /* could not access line */
  1142. X  #define LOPEN_ALREADY            -6        /* line already open */
  1143. X  #define LOPEN_ENABLED            -7        /* line enabled for login */
  1144. X  #define LOPEN_ENABLED_IN_USE    -8        /* line in use by incoming login */
  1145. X  #define LOPEN_DIALOUT_IN_USE    -9        /* line in use by another dial out */
  1146. X  #define LOPEN_NOPTY                -10        /* pty not supported */
  1147. ! #define LOPEN_WE_GOT_IT            -11        /* not really an error: we already
  1148. X                                           * own the line (used by check_utmp())
  1149. X                                           */
  1150. X  
  1151. ***************
  1152. *** 195,206 ****
  1153. X  /*
  1154. X   * lock file directory
  1155. X   */
  1156. X  #if defined(M_SYSV)    /* SCO */
  1157. X  #define LOCK_DIR_NAME "/usr/spool/uucp"
  1158. ! #endif
  1159. X  #if defined(ISC)
  1160. X  #define LOCK_DIR_NAME "/usr/spool/locks"
  1161. ! #endif
  1162. X  extern char *lock_dir_name;    /* defined in ecuLCK.c */
  1163. X  
  1164. X  /*
  1165. --- 196,216 ----
  1166. X  /*
  1167. X   * lock file directory
  1168. X   */
  1169. + #if !defined(LOCK_DIR_NAME)
  1170. X  #if defined(M_SYSV)    /* SCO */
  1171. X  #define LOCK_DIR_NAME "/usr/spool/uucp"
  1172. ! #else
  1173. ! #if defined(sun) || defined(SVR4)
  1174. ! #define LOCK_DIR_NAME "/var/spool/locks"
  1175. ! #else
  1176. X  #if defined(ISC)
  1177. X  #define LOCK_DIR_NAME "/usr/spool/locks"
  1178. ! #else
  1179. ! # include "porting.attention.required.here"
  1180. ! #endif    /* ISC */
  1181. ! #endif    /* sun */
  1182. ! #endif    /* M_SYSV */
  1183. ! #endif  /* LOCK_DIR_NAME */
  1184. X  extern char *lock_dir_name;    /* defined in ecuLCK.c */
  1185. X  
  1186. X  /*
  1187. ***************
  1188. *** 208,218 ****
  1189. X   */
  1190. X  #if !defined(DEFAULT_TTY)
  1191. X  #if defined(M_SYSV)    /* SCO */
  1192. ! #define DEFAULT_TTY "/dev/tty1a"
  1193. ! #endif
  1194. X  #if defined(ISC)
  1195. ! #define DEFAULT_TTY "/dev/acu00"
  1196. ! #endif
  1197. X  #endif /*!defined(DEFAULT_TTY)
  1198. X  extern char *lock_dir_name;    /* defined in ecu.c */
  1199. X  
  1200. --- 218,237 ----
  1201. X   */
  1202. X  #if !defined(DEFAULT_TTY)
  1203. X  #if defined(M_SYSV)    /* SCO */
  1204. ! #define DEFAULT_TTY    "/dev/tty1a"
  1205. ! #else
  1206. ! #if defined(sun)
  1207. ! #define DEFAULT_TTY    "/dev/cua0"
  1208. ! #else
  1209. ! #if defined(SVR4)
  1210. ! #define DEFAULT_TTY    "/dev/tty00"
  1211. ! #else
  1212. X  #if defined(ISC)
  1213. ! #define DEFAULT_TTY    "/dev/acu00"
  1214. ! #endif    /* ISC */
  1215. ! #endif    /* SVR4 */
  1216. ! #endif    /* sun */
  1217. ! #endif    /* M_SYSV */
  1218. X  #endif /*!defined(DEFAULT_TTY)
  1219. X  extern char *lock_dir_name;    /* defined in ecu.c */
  1220. X  
  1221. ***************
  1222. *** 238,244 ****
  1223. X      int bufsize;    /* size of buffer */
  1224. X      int count;        /* from proc, count rcvd */
  1225. X      char *delim;    /* ending string for lgets_timeout_or_delim */
  1226. !     int echo;        /* echo incoming chars to screen */
  1227. X  }    LRWT;
  1228. X  
  1229. X  
  1230. --- 257,263 ----
  1231. X      int bufsize;    /* size of buffer */
  1232. X      int count;        /* from proc, count rcvd */
  1233. X      char *delim;    /* ending string for lgets_timeout_or_delim */
  1234. !     int echo_flag;    /* echo incoming chars to screen */
  1235. X  }    LRWT;
  1236. X  
  1237. X  
  1238. diff -c /export/home/wht/src/ecu312/ecuDCE.c ./ecuDCE.c
  1239. *** /export/home/wht/src/ecu312/ecuDCE.c    Sun Aug 25 17:29:13 1991
  1240. --- ./ecuDCE.c    Fri Aug 23 14:21:35 1991
  1241. ***************
  1242. *** 318,324 ****
  1243. X      lr.buffer = s32;
  1244. X      lr.bufsize = sizeof(s32);
  1245. X      lr.delim = (char *)0;
  1246. !     lr.echo = 0;
  1247. X      lgets_timeout(&lr);
  1248. X  
  1249. X  /* reset any interrupt indication since we look at string */
  1250. --- 318,324 ----
  1251. X      lr.buffer = s32;
  1252. X      lr.bufsize = sizeof(s32);
  1253. X      lr.delim = (char *)0;
  1254. !     lr.echo_flag = 0;
  1255. X      lgets_timeout(&lr);
  1256. X  
  1257. X  /* reset any interrupt indication since we look at string */
  1258. ***************
  1259. *** 961,967 ****
  1260. X      lr.buffer = s128;
  1261. X      lr.bufsize = sizeof(s128);
  1262. X      lr.delim = (char *)0;
  1263. !     lr.echo = 0;
  1264. X      lgets_timeout(&lr);
  1265. X      if(lr.count != 3)
  1266. X          return(-1);
  1267. --- 961,967 ----
  1268. X      lr.buffer = s128;
  1269. X      lr.bufsize = sizeof(s128);
  1270. X      lr.delim = (char *)0;
  1271. !     lr.echo_flag = 0;
  1272. X      lgets_timeout(&lr);
  1273. X      if(lr.count != 3)
  1274. X          return(-1);
  1275. ***************
  1276. *** 993,999 ****
  1277. X      lr.buffer = s128;
  1278. X      lr.bufsize = sizeof(s128);
  1279. X      lr.delim = (char *)0;
  1280. !     lr.echo = 0;
  1281. X      lgets_timeout(&lr);
  1282. X      value2 = DCE_get_sreg_value(regnum);
  1283. X      if(value2 < 0)
  1284. --- 993,999 ----
  1285. X      lr.buffer = s128;
  1286. X      lr.bufsize = sizeof(s128);
  1287. X      lr.delim = (char *)0;
  1288. !     lr.echo_flag = 0;
  1289. X      lgets_timeout(&lr);
  1290. X      value2 = DCE_get_sreg_value(regnum);
  1291. X      if(value2 < 0)
  1292. diff -c /export/home/wht/src/ecu312/ecuLCK.c ./ecuLCK.c
  1293. *** /export/home/wht/src/ecu312/ecuLCK.c    Sun Aug 25 17:28:20 1991
  1294. --- ./ecuLCK.c    Sun Aug 25 14:39:25 1991
  1295. ***************
  1296. *** 16,21 ****
  1297. --- 16,23 ----
  1298. X  check for both.
  1299. X  ------------------------------------------------------------------------*/
  1300. X  /*+:EDITS:*/
  1301. + /*:08-25-1991-14:39-wht@n4hgf-SVR4 port thanks to aega84!lh */
  1302. + /*:08-21-1991-03:37-wht@n4hgf-kill LOPEN_INVALID check */
  1303. X  /*:08-11-1991-18:06-wht@n4hgf-SCO_TTY_NAMING considerations */
  1304. X  /*:08-09-1991-11:07-wht@n4hgf-configurable lock directory */
  1305. X  /*:08-07-1991-14:41-wht@n4hgf-race with ecuungetty over lock resolved */
  1306. ***************
  1307. *** 27,32 ****
  1308. --- 29,39 ----
  1309. X  
  1310. X  #include "ecu.h"
  1311. X  #include "utmpstatus.h"
  1312. + #ifdef SVR4
  1313. + #include <sys/types.h>
  1314. + #include <sys/stat.h>
  1315. + #include <sys/sysmacros.h>
  1316. + #endif
  1317. X  
  1318. X  extern int errno;
  1319. X  extern char ungetty_ttyname[];
  1320. ***************
  1321. *** 40,52 ****
  1322. X  char *ttyname;
  1323. X  char *lock_file_name;
  1324. X  {
  1325. X  
  1326. !     if((ulindex(ttyname,"/dev/tty")) != 0)
  1327. !         return(LOPEN_INVALID);
  1328. X  
  1329. X      strcpy(lock_file_name,lock_dir_name);
  1330. X      strcat(lock_file_name,"/LCK..");
  1331. X      strcat(lock_file_name,ttyname + 5);
  1332. X      return(0);
  1333. X  
  1334. X  }    /* end of make_lock_name */
  1335. --- 47,71 ----
  1336. X  char *ttyname;
  1337. X  char *lock_file_name;
  1338. X  {
  1339. + #ifdef SVR4
  1340. +     struct stat tbuf;
  1341. X  
  1342. !     if(stat(ttyname, &tbuf) < 0)
  1343. !     {
  1344. !         if(errno == ENOENT)
  1345. !             return(LOPEN_NODEV);        /* device does not exist */
  1346. !         else
  1347. !             return(LOPEN_OPNFAIL);        /* could not access line */
  1348. !     }
  1349. !     sprintf(lock_file_name,"%s/LK.%03u.%03u.%03u",
  1350. !         lock_dir_name,major(tbuf.st_dev),
  1351. !         tbuf.st_rdev >> 18, minor(tbuf.st_rdev));
  1352. ! #else
  1353. X  
  1354. X      strcpy(lock_file_name,lock_dir_name);
  1355. X      strcat(lock_file_name,"/LCK..");
  1356. X      strcat(lock_file_name,ttyname + 5);
  1357. + #endif
  1358. X      return(0);
  1359. X  
  1360. X  }    /* end of make_lock_name */
  1361. ***************
  1362. *** 143,151 ****
  1363. X  char *ttyname;
  1364. X  {
  1365. X  register itmp;
  1366. ! char lock_file_name[64];
  1367. X      
  1368. !     make_lock_name(ttyname,lock_file_name);
  1369. X      if(itmp = is_active_lock(lock_file_name))
  1370. X          return(itmp);
  1371. X  
  1372. --- 162,172 ----
  1373. X  char *ttyname;
  1374. X  {
  1375. X  register itmp;
  1376. ! char lock_file_name[128];
  1377. X      
  1378. !     if(itmp = make_lock_name(ttyname,lock_file_name))
  1379. !         return(itmp);
  1380. X      if(itmp = is_active_lock(lock_file_name))
  1381. X          return(itmp);
  1382. X  
  1383. diff -c /export/home/wht/src/ecu312/ecucmd.h ./ecucmd.h
  1384. *** /export/home/wht/src/ecu312/ecucmd.h    Sun Aug 25 17:28:21 1991
  1385. --- ./ecucmd.h    Fri Aug 23 14:21:37 1991
  1386. ***************
  1387. *** 3,8 ****
  1388. --- 3,9 ----
  1389. X      wht@n4hgf.Mt-Park.GA.US
  1390. X  --------------------------------------------------------------------------*/
  1391. X  /*+:EDITS:*/
  1392. + /*:08-17-1991-16:41-wht@n4hgf-add kbdtest */
  1393. X  /*:07-29-1991-17:57-wht@n4hgf-add memstat */
  1394. X  /*:07-25-1991-12:55-wht@n4hgf-ECU release 3.10 */
  1395. X  /*:07-04-1991-20:07-wht@n4hgf-add procedure rlog cmd */
  1396. ***************
  1397. *** 73,78 ****
  1398. --- 74,80 ----
  1399. X  #define CTpushd         59
  1400. X  #define CTpopd          60
  1401. X  #define CTmemstat       61
  1402. + #define CTkbdtest       62
  1403. X  
  1404. X  #define CTdummy1       120
  1405. X  #define CTdummy2       121
  1406. ***************
  1407. *** 262,267 ****
  1408. --- 264,270 ----
  1409. X      { "ifs",    0,0,        "",                                pcmd_ifs,   0  },
  1410. X      { "ifz",    0,0,        "",                                pcmd_ifz,   0  },
  1411. X      { "insline",0,0,        "",                                pcmd_insline,0 },
  1412. +     { "kbdtest",4,CTkbdtest,"",                                0,          0  },
  1413. X      { "lbreak",    0,0,        "",                                pcmd_lbreak,0  },
  1414. X      { "llp",    2,CTllp,    "set session log to /dev/lp",    0,         ccG },
  1415. X      { "lgets",    0,0,        "",                                pcmd_lgets, 0  },
  1416. diff -c /export/home/wht/src/ecu312/ecudump.c ./ecudump.c
  1417. *** /export/home/wht/src/ecu312/ecudump.c    Thu Jul 25 12:55:00 1991
  1418. --- ./ecudump.c    Fri Aug 23 14:21:39 1991
  1419. ***************
  1420. *** 87,92 ****
  1421. --- 87,93 ----
  1422. X    if 'title' not NULL, title is printed... 'terse_flag'
  1423. X    controls whether or not the title is "conspicuous" with
  1424. X    hyphens before and after it making title line >70 chars long
  1425. +   If len negative, print no buffer offsets.
  1426. X  ------------------------------------------------------------------*/
  1427. X  void
  1428. X  hex_dump_fp(fp,str,len,title,terse_flag)
  1429. ***************
  1430. *** 96,105 ****
  1431. X  char *title;
  1432. X  int terse_flag;
  1433. X  {
  1434. - int istr;
  1435. X  register ipos = 0;
  1436. X  register itmp;
  1437. X  
  1438. X      dumpfp = fp;
  1439. X  
  1440. X      if(title && (istr = strlen(title)))
  1441. --- 97,110 ----
  1442. X  char *title;
  1443. X  int terse_flag;
  1444. X  {
  1445. X  register ipos = 0;
  1446. X  register itmp;
  1447. + int istr;
  1448. + int print_offset = (len > 0);
  1449. X  
  1450. +     if(!print_offset)
  1451. +         len = -len;
  1452. X      dumpfp = fp;
  1453. X  
  1454. X      if(title && (istr = strlen(title)))
  1455. ***************
  1456. *** 106,112 ****
  1457. X      {
  1458. X          if(!terse_flag)
  1459. X          {
  1460. !             ipos = (73 - istr) / 2;
  1461. X              itmp = ipos;
  1462. X              while(itmp--)
  1463. X                  dump_putc('-');
  1464. --- 111,117 ----
  1465. X      {
  1466. X          if(!terse_flag)
  1467. X          {
  1468. !             ipos = (((print_offset) ? 73 : 67) - istr) / 2;
  1469. X              itmp = ipos;
  1470. X              while(itmp--)
  1471. X                  dump_putc('-');
  1472. ***************
  1473. *** 131,138 ****
  1474. X      istr = 0;
  1475. X      while(istr < len)
  1476. X      {
  1477. !         hex_dump16(istr);
  1478. !         dump_putc(' ');
  1479. X          for(itmp = 0; itmp < 16; ++itmp)
  1480. X          {
  1481. X              ipos = istr + itmp;
  1482. --- 136,146 ----
  1483. X      istr = 0;
  1484. X      while(istr < len)
  1485. X      {
  1486. !         if(print_offset)
  1487. !         {
  1488. !             hex_dump16(istr);
  1489. !             dump_puts("  ");
  1490. !         }
  1491. X          for(itmp = 0; itmp < 16; ++itmp)
  1492. X          {
  1493. X              ipos = istr + itmp;
  1494. ***************
  1495. *** 142,151 ****
  1496. X                      dump_puts("   ");
  1497. X                  continue;
  1498. X              }
  1499. !             dump_putc(' ');
  1500. X              hex_dump8(str[ipos]);
  1501. X          }
  1502. !         dump_puts(" | ");
  1503. X          for(itmp = 0; itmp < 16; ++itmp)
  1504. X          {
  1505. X              ipos = istr + itmp;
  1506. --- 150,160 ----
  1507. X                      dump_puts("   ");
  1508. X                  continue;
  1509. X              }
  1510. !             if(itmp)
  1511. !                 dump_putc(' ');
  1512. X              hex_dump8(str[ipos]);
  1513. X          }
  1514. !         dump_puts("  | ");
  1515. X          for(itmp = 0; itmp < 16; ++itmp)
  1516. X          {
  1517. X              ipos = istr + itmp;
  1518. diff -c /export/home/wht/src/ecu312/ecuerror.h ./ecuerror.h
  1519. *** /export/home/wht/src/ecu312/ecuerror.h    Thu Jul 25 12:55:00 1991
  1520. --- ./ecuerror.h    Sun Aug 25 23:45:41 1991
  1521. ***************
  1522. *** 6,11 ****
  1523. --- 6,12 ----
  1524. X  error numbers should be <= 0x7FFF to avoid problems with M_I286 versions
  1525. X  --------------------------------------------------------------------------*/
  1526. X  /*+:EDITS:*/
  1527. + /*:08-25-1991-23:45-root@n4hgf2-add eSwitchesTooLong */
  1528. X  /*:07-25-1991-12:55-wht@n4hgf-ECU release 3.10 */
  1529. X  /*:08-14-1990-20:40-wht@n4hgf-ecu3.00-flush old edit history */
  1530. X  
  1531. ***************
  1532. *** 63,68 ****
  1533. --- 64,70 ----
  1534. X  #define eNoSuchVariable        0x403C  /* variable by this name not defined */
  1535. X  #define eInvalidLogicOp        0x403D  /* invalid logical operator */
  1536. X  #define eExpectRespondFail    0x403E  /* expect-respond failed */
  1537. + #define eSwitchesTooLong    0x403F    /* switches too long */
  1538. X  
  1539. X  /* DO attention getter */
  1540. X  #define e_ProcAttn            0x7000
  1541. diff -c /export/home/wht/src/ecu312/ecufkey.c ./ecufkey.c
  1542. *** /export/home/wht/src/ecu312/ecufkey.c    Thu Jul 25 12:55:00 1991
  1543. --- ./ecufkey.c    Fri Aug 23 14:21:41 1991
  1544. ***************
  1545. *** 3,8 ****
  1546. --- 3,9 ----
  1547. X      wht@n4hgf.Mt-Park.GA.US
  1548. X  
  1549. X    Defined functions:
  1550. +     kde_text(kde)
  1551. X      ffso(str)
  1552. X      kde_fgets(buf,bufsize,fp)
  1553. X      keyset_define_key(bufptr)
  1554. ***************
  1555. *** 36,41 ****
  1556. --- 37,43 ----
  1557. X  GCC 1.40 fixed the bug, so #ifdef GCC140, don't use the kludge.
  1558. X  ------------------------------------------------------------------*/
  1559. X  /*+:EDITS:*/
  1560. + /*:08-16-1991-00:11-wht@n4hgf-keyset_init loads default keyset if found */
  1561. X  /*:07-25-1991-12:55-wht@n4hgf-ECU release 3.10 */
  1562. X  /*:07-12-1991-13:57-wht@n4hgf-GCC140 fix update */
  1563. X  /*:05-21-1991-00:45-wht@n4hgf-added -3 error code to keyset_read */
  1564. ***************
  1565. *** 121,126 ****
  1566. --- 123,130 ----
  1567. X      tkde->str[0] = 0x7F;    /* this key is intercepted by kbd read routine */
  1568. X      tkde->count = 0;
  1569. X  
  1570. +     keyset_read("default");
  1571. X  }    /* end of keyset_init */
  1572. X  
  1573. X  /*+-------------------------------------------------------------------------
  1574. ***************
  1575. *** 214,219 ****
  1576. --- 218,286 ----
  1577. X      }
  1578. X      return(-1);
  1579. X  }    /* end of xf_to_KDEt */
  1580. + /*+-------------------------------------------------------------------------
  1581. +     kde_text(kde) - kde value to text
  1582. + --------------------------------------------------------------------------*/
  1583. + char *
  1584. + kde_text(kde)
  1585. + int kde;
  1586. + {
  1587. + struct XF_KDE_NAME *xkn = xf_kde_name;
  1588. +     while(xkn->xf)
  1589. +     {
  1590. +         if(xkn->kde == (char)kde)
  1591. +             return(xkn->name);
  1592. +         xkn++;
  1593. +     }
  1594. +     return("??");
  1595. + }    /* end of xf_to_KDEt */
  1596. + /*+-------------------------------------------------------------------------
  1597. +     xf_text(xf) - XFkey to text
  1598. + --------------------------------------------------------------------------*/
  1599. + char *
  1600. + xf_text(xf)
  1601. + uchar xf;
  1602. + {
  1603. + static char sc8[8];
  1604. +     switch(xf)
  1605. +     {
  1606. +         case XFcurup:    return("CUU");
  1607. +         case XFcurdn:    return("CUD");
  1608. +         case XFcurrt:    return("CUR");
  1609. +         case XFcurlf:    return("CUL");
  1610. +         case XFcur5:    return("CU5");
  1611. +         case XFend:        return("End");
  1612. +         case XFpgdn:    return("PgDn");
  1613. +         case XFhome:    return("Home");
  1614. +         case XFpgup:    return("PgUp");
  1615. +         case XFins:        return("Ins");
  1616. +         case XF1:        return("F1");
  1617. +         case XF2:        return("F2");
  1618. +         case XF3:        return("F3");
  1619. +         case XF4:        return("F4");
  1620. +         case XF5:        return("F5");
  1621. +         case XF6:        return("F6");
  1622. +         case XF7:        return("F7");
  1623. +         case XF8:        return("F8");
  1624. +         case XF9:        return("F9");
  1625. +         case XF10:        return("F10");
  1626. +         case XF11:        return("F11");
  1627. +         case XF12:        return("F12");
  1628. +         case XFbktab:    return("BkTab");
  1629. +     }
  1630. +     if((xf >= XF_ALTA) && (xf <= XF_ALTZ))
  1631. +     {
  1632. +         sprintf(sc8,"Alt-%c",'a' + xf - XF_ALTA);
  1633. +         return(sc8);
  1634. +     }
  1635. +     sprintf(sc8,"XF_%02x\n",xf);
  1636. +     return(sc8);
  1637. + }    /* end of xf_text */
  1638. X  
  1639. X  /*+-------------------------------------------------------------------------
  1640. X      keyset_define_key(bufptr)
  1641. diff -c /export/home/wht/src/ecu312/ecufkey.h ./ecufkey.h
  1642. *** /export/home/wht/src/ecu312/ecufkey.h    Thu Jul 25 12:55:00 1991
  1643. --- ./ecufkey.h    Fri Aug 23 14:21:42 1991
  1644. ***************
  1645. *** 55,61 ****
  1646. X      char str[KDE_OUTSTR_MAX];
  1647. X  }    KDE;
  1648. X  
  1649. ! /* when an count is not a count but an action: */
  1650. X  #define KACT_COMMAND            -1
  1651. X  #define KACT_LOCAL_SHELL        -2
  1652. X  #define KACT_REDISPLAY            -3
  1653. --- 55,61 ----
  1654. X      char str[KDE_OUTSTR_MAX];
  1655. X  }    KDE;
  1656. X  
  1657. ! /* when a count is not a count but an action: */
  1658. X  #define KACT_COMMAND            -1
  1659. X  #define KACT_LOCAL_SHELL        -2
  1660. X  #define KACT_REDISPLAY            -3
  1661. Common subdirectories: /export/home/wht/src/ecu312/ecufriend and ./ecufriend
  1662. diff -c /export/home/wht/src/ecu312/ecuicmd.c ./ecuicmd.c
  1663. *** /export/home/wht/src/ecu312/ecuicmd.c    Sun Aug 25 17:28:22 1991
  1664. --- ./ecuicmd.c    Mon Aug 26 13:30:04 1991
  1665. ***************
  1666. *** 9,14 ****
  1667. --- 9,16 ----
  1668. X  
  1669. X  ------------------------------------------------------------------------*/
  1670. X  /*+:EDITS:*/
  1671. + /*:08-25-1991-14:39-wht@n4hgf-SVR4 port thanks to aega84!lh */
  1672. + /*:08-17-1991-18:29-wht@n4hgf-add kbdtest command */
  1673. X  /*:07-29-1991-20:56-wht@n4hgf-turn off memstat after frustrating evening */
  1674. X  /*:07-29-1991-17:57-wht@n4hgf-add memstat */
  1675. X  /*:07-25-1991-12:56-wht@n4hgf-ECU release 3.10 */
  1676. ***************
  1677. *** 33,38 ****
  1678. SHAR_EOF
  1679. true || echo 'restore of PATCH3.01 failed'
  1680. fi
  1681. echo 'End of ecu/patch part 1'
  1682. echo 'File PATCH3.01 is continued in part 2'
  1683. echo 2 > _shar_seq_.tmp
  1684. exit 0
  1685.  
  1686. exit 0 # Just in case...
  1687.