[comp.sources.bugs] Patch #9 to Pcomm v1.2

egray@fthood.UUCP (09/05/90)

This is patch #9 to the Pcomm v1.2 distribution package.

Pcomm v1.2 appeared in comp.sources.unix as v20i067 thru v20i075 around
the 27th of October 1989.  Since then, patches #5 through #8 were posted
to comp.sources.bugs.  Both the current version of Pcomm and all the
patches are available via anonymous ftp from cerl.cecer.army.mil
(129.229.1.101).

This patch will change the way that the "locked interface speed" feature
is used.  Now, if the locked interface feature is used, the speed remains
locked rather than expecting a modem initialization command to unlock
the interface.  It seems that Telebit modems just flat don't work right
unless the interface speed is locked.  Read the updated Appendix C in the
Doc file for more info on using Telebit modems.

If anyone wants the nroff version of the Doc file, it too is available
from cerl.cecer.army.mil as pcomm_sh.1.  Likewise, the formatted output
of all the nroff files are now in pcomm_sh.9.

Emmet P. Gray				US Army, HQ III Corps & Fort Hood
...!uunet!uiucuxc!fthood!egray		Attn: AFZF-DE-ENV
fthood!egray@uxc.cso.uiuc.edu		Directorate of Engineering & Housing
					Environmental Management Office
					Fort Hood, TX 76544-5057

------------------------------------------------------------------------------
Prereq: "1.2.8"
*** old/info.c	Tue Sep  4 07:59:39 1990
--- info.c	Sun Sep  2 18:28:02 1990
***************
*** 4,9
   */
  
! #define VERSION	"1.2.8"
! #define DATE	"20 Jan 90"
  
  #include <stdio.h>

--- 4,9 -----
   */
  
! #define VERSION	"1.2.9"
! #define DATE	"1 Sep 90"
  
  #include <stdio.h>
***************
*** 35,38
  	mvwaddstr(w_win, 19, 45, "Emmet P. Gray");
  	mvwaddstr(w_win, 20, 45, "...!uunet!uiucuxc!fthood!egray");
  	wmove(w_win, 22, 79);
  	wrefresh(w_win);

--- 35,39 -----
  	mvwaddstr(w_win, 19, 45, "Emmet P. Gray");
  	mvwaddstr(w_win, 20, 45, "...!uunet!uiucuxc!fthood!egray");
+ 	mvwaddstr(w_win, 21, 45, "fthood!egray@uxc.cso.uiuc.edu");
  	wmove(w_win, 22, 79);
  	wrefresh(w_win);
*** old/Doc	Tue Sep  4 07:59:01 1990
--- Doc	Mon Sep  3 18:34:40 1990
***************
*** 88,92
  	      Appendix A - Typical Modem Configuration ...... 31
  	      Appendix B - AT&T Unix PC 7300/3b1 Dial Codes . 32
! 	      Appendix C - Using Telebit Trailblazers ....... 34
  
  	1. INTRODUCTION

--- 88,92 -----
  	      Appendix A - Typical Modem Configuration ...... 31
  	      Appendix B - AT&T Unix PC 7300/3b1 Dial Codes . 32
! 	      Appendix C - Using Telebit Modems ............. 34
  
  	1. INTRODUCTION
***************
*** 277,281
  				4) General Setup
  				5) ASCII Transfer Setup
! 				6) External Proctol Setup
  				S) Save setup to disk
  

--- 277,281 -----
  				4) General Setup
  				5) ASCII Transfer Setup
! 				6) External Protocol Setup
  				S) Save setup to disk
  
***************
*** 324,329
  		 2) tty11        HAYES               0
  		 3) tty12        DIRECT              0
! 		 4) tty13        TELEBIT             0
! 		 5) tty13        FAST_TELEBIT        0
  		 6)                                  0
  		 7)                                  0

--- 324,329 -----
  		 2) tty11        HAYES               0
  		 3) tty12        DIRECT              0
! 		 4) tty13        TELEBIT             19200
! 		 5) tty13        FAST_TELEBIT        19200
  		 6)                                  0
  		 7)                                  0
***************
*** 636,640
  	3.7 External protocol setup
  
! 	This setup screen allows you to imbed the name of external  file
  	transfer  programs  into  the list of available protocols.  When
  	transferring files, the external program name will appear on the

--- 636,640 -----
  	3.7 External protocol setup
  
! 	This setup screen allows you to embed the name of external  file
  	transfer  programs  into  the list of available protocols.  When
  	transferring files, the external program name will appear on the
***************
*** 674,678
  	(if any) to the end of the command.
  
! 	NOTE:  The program itself isn't "imbedded" into Pcomm (it  still
  	gets  called like any other external program), only the name and
  	invocation information is actually incorporated into Pcomm.

--- 674,678 -----
  	(if any) to the end of the command.
  
! 	NOTE:  The program itself isn't "embedded" into Pcomm (it  still
  	gets  called like any other external program), only the name and
  	invocation information is actually incorporated into Pcomm.
***************
*** 1040,1044
  
  	Frequently used external file transfer programs (such as zmodem)
! 	can  have  their  names  imbedded  into  the  list  of available
  	protocols by using the External Protocol Setup in section 3.7.
  

--- 1040,1044 -----
  
  	Frequently used external file transfer programs (such as zmodem)
! 	can  have  their  names  embedded  into  the  list  of available
  	protocols by using the External Protocol Setup in section 3.7.
  
***************
*** 1311,1315
  
  	would wait up to 5 seconds  for  the  string  "ogin:".   If  the
! 	return  code  is  0  (the  strings  did  apear), send the string
  	"egray" (my user ID).
  

--- 1311,1315 -----
  
  	would wait up to 5 seconds  for  the  string  "ogin:".   If  the
! 	return  code  is  0  (the  strings  did appear), send the string
  	"egray" (my user ID).
  
***************
*** 1370,1374
  
  	A more complex script is required if the user must send a  modem
! 	break to syncronize the baud rate of the remote.  For example:
  
  		echo ""

--- 1370,1374 -----
  
  	A more complex script is required if the user must send a  modem
! 	break to synchronize the baud rate of the remote.  For example:
  
  		echo ""
***************
*** 1538,1542
  	Appendix C
  
! 			   Using Telebit Trailblazers
  
  	The Telebit Trailblazer modem is probably representative of  the

--- 1538,1542 -----
  	Appendix C
  
! 				Using Telebit Modems
  
  	Telebit modems are probably representative  of  the  newer  high
***************
*** 1540,1546
  			   Using Telebit Trailblazers
  
! 	The Telebit Trailblazer modem is probably representative of  the
! 	newer   high   speed  intelligent  modems  available  today  and
! 	therefore warrants a more detailed discussion.
  
  	1) Locked interface speed

--- 1540,1546 -----
  				Using Telebit Modems
  
! 	Telebit modems are probably representative  of  the  newer  high
! 	speed intelligent modems available today and therefore warrant a
! 	more detailed discussion.
  
  	1) Locked interface speed
***************
*** 1546,1550
  	1) Locked interface speed
  
! 		Trailblazers have  the  ability  to  maintain  a  locked
  		interface  speed with the computer without regard to the
  		connected baud rate.  For example, some people  find  it

--- 1546,1550 -----
  	1) Locked interface speed
  
! 		Telebit modems have the ability  to  maintain  a  locked
  		interface  speed with the computer without regard to the
  		connected baud rate.  For example, most people  find  it
***************
*** 1548,1556
  		Trailblazers have  the  ability  to  maintain  a  locked
  		interface  speed with the computer without regard to the
! 		connected baud rate.  For example, some people  find  it
! 		necessary  to  lock the interface speed at 9600 baud (or
! 		some other speed) for normal operations.  However, Pcomm
! 		assumes the interface speed is the same as the connected
! 		baud rate.
  
  		The "init speed" field of the TTY database  was  created

--- 1548,1554 -----
  		Telebit modems have the ability  to  maintain  a  locked
  		interface  speed with the computer without regard to the
! 		connected baud rate.  For example, most people  find  it
! 		necessary  to lock the interface speed at 19200 baud (or
! 		9600) for normal operations.
  
  		The "init speed" field of the TTY database  was  created
***************
*** 1556,1562
  		The "init speed" field of the TTY database  was  created
  		to solve this problem.  If this value is non-zero, Pcomm
! 		will send the initialization string to the modem at this
! 		baud  rate.   Normally, Pcomm would use the baud rate in
! 		the dialing directory to send the init string.
  
  		The init string would now contain the  codes  to  unlock

--- 1554,1560 -----
  		The "init speed" field of the TTY database  was  created
  		to solve this problem.  If this value is non-zero, Pcomm
! 		will only use this baud rate when talking to the  modem.
! 		The  true  connected  baud  rate  will  continue  to  be
! 		displayed in the status line.
  
  	2) Multiple setups
***************
*** 1560,1569
  		the dialing directory to send the init string.
  
- 		The init string would now contain the  codes  to  unlock
- 		the  interface,  enter the autobaud mode on receipt of a
- 		break, and arrange for the loss of the DTR to return the
- 		modem   to  its  previous  locked  state.   For  Telebit
- 		Trailblazers this would be S66=0, S51=255, and S52=2.
- 
  	2) Multiple setups
  

--- 1558,1561 -----
  		displayed in the status line.
  
  	2) Multiple setups
  
***************
*** 1568,1572
  	2) Multiple setups
  
! 		Users of Trailblazers often require  a  different  "init
  		string"  or  "dial  string" depending on the target baud
  		rate.  For example, the init strings for 9600 and  19200

--- 1560,1564 -----
  	2) Multiple setups
  
! 		Users of Telebit modems may require  a  different  "init
  		string"  or  "dial  string" depending on the target baud
  		rate.  For example, the init strings for 9600 and  19200
***************
*** 1571,1575
  		string"  or  "dial  string" depending on the target baud
  		rate.  For example, the init strings for 9600 and  19200
! 		baud may contain the command "S50=255" (to  wait for the
  		Telebit PEP tones) whereas the slower init strings would
  		contain "S50=0".

--- 1563,1567 -----
  		string"  or  "dial  string" depending on the target baud
  		rate.  For example, the init strings for 9600 and  19200
! 		baud  may  contain  the  command "S50=255" (wait for the
  		Telebit PEP tones) whereas the slower init strings would
  		contain "S50=0" (automatic speed search).
***************
*** 1573,1577
  		baud may contain the command "S50=255" (to  wait for the
  		Telebit PEP tones) whereas the slower init strings would
! 		contain "S50=0".
  
  		This problem is solved by creating an  additional  modem

--- 1565,1569 -----
  		baud  may  contain  the  command "S50=255" (wait for the
  		Telebit PEP tones) whereas the slower init strings would
! 		contain "S50=0" (automatic speed search).
  
  		This problem is solved by creating an  additional  modem
***************
*** 1578,1582
  		entry  in  the  modem  database.  For example, you could
  		have an entry called "TELEBIT" for  baud  rates  in  the
! 		range    of    300-2400   and   another   entry   called
  		"FAST_TELEBIT"  for  baud  rates   in   the   range   of
  		9600-19200.

--- 1570,1574 -----
  		entry  in  the  modem  database.  For example, you could
  		have an entry called "TELEBIT" for  baud  rates  in  the
! 		range    of    300-4800   and   another   entry   called
  		"FAST_TELEBIT"  for  baud  rates   in   the   range   of
  		9600-19200.
***************
*** 1584,1589
  		Pcomm uses the connect strings to determine if the modem
  		can   handle  the  requested  baud  rate.   So,  if  the
! 		"TELEBIT" entry had connect strings for 300,  1200,  and
! 		2400  baud  it  would  be selected only if the requested
  		baud rate was in that range.  Likewise, the FAST_TELEBIT
  		would have connect strings only for 9600 and 19200 baud.

--- 1576,1581 -----
  		Pcomm uses the connect strings to determine if the modem
  		can   handle  the  requested  baud  rate.   So,  if  the
! 		"TELEBIT" entry had connect strings for 300, 1200, 2400,
! 		and 4800 baud it would be selected only if the requested
  		baud rate was in that range.  Likewise, the FAST_TELEBIT
  		would have connect strings only for 9600 and 19200 baud.
***************
*** 1588,1593
  		baud rate was in that range.  Likewise, the FAST_TELEBIT
  		would have connect strings only for 9600 and 19200 baud.
- 
- 	3) Baud rate synchronization
  
  		In contrast to the Hayes  2400  modem,  the  Trailblazer

--- 1580,1583 -----
  		baud rate was in that range.  Likewise, the FAST_TELEBIT
  		would have connect strings only for 9600 and 19200 baud.
  
  	3) Telebit register settings
***************
*** 1591,1598
  	3) Baud rate synchronization
  
! 		In contrast to the Hayes  2400  modem,  the  Trailblazer
! 		does  not  immediately  synchronize with the serial port
! 		when the baud rate is changed during the modem's command
! 		mode.
  
  		To solve this problem, the init string and  dial  string

--- 1581,1585 -----
  		would have connect strings only for 9600 and 19200 baud.
  
! 	3) Telebit register settings
  
  		The following configuration is what I personally use for
***************
*** 1596,1604
  		mode.
  
! 		To solve this problem, the init string and  dial  string
! 		should contain the break character synonym followed by a
! 		sufficient  number  of  A's  to  allow  the   modem   to
! 		synchronize.   The default character synonym for a modem
! 		break is the "%".
  
  	4) Sample TTY database

--- 1583,1602 -----
  	3) Telebit register settings
  
! 		The following configuration is what I personally use for
! 		my  Telebit  T2500's  on bi-directional lines (ones with
! 		uugetty).
! 
! 			~&F1	restores enhanced command mode settings
! 			Q2	use result codes only when dialing out
! 			S0=1	answer on first ring
! 			S7=60	wait at least 60 seconds for a carrier
! 			S51=5	set interface speed to 19200 baud
! 			S52=1	hangup on loss of DTR
! 			S54=3	pass modem breaks through
! 			S58=2	full duplex RTS/CTS flow control
! 			S66=1	lock the interface speed
! 			S131=1	data carrier detect follows the carrier
! 			&W0	save in NVM A
! 			&W1	save in NVM B
  
  	4) Sample TTY database
***************
*** 1608,1616
  		TTY name	Modem name	Init speed
  
! 		1) tty10	HAYES		   0
! 		2) tty11	HAYES		   0
! 		3) tty12	DIRECT		   0
! 		4) tty13	TELEBIT		   0
! 		5) tty13	FAST_TELEBIT	   0
  
  		Notice that entries 4 and 5 share the same TTY.

--- 1606,1614 -----
  		TTY name	Modem name	Init speed
  
! 		1) tty10	HAYES		0
! 		2) tty11	HAYES		0
! 		3) tty12	DIRECT		0
! 		4) tty13	TELEBIT		19200
! 		5) tty13	FAST_TELEBIT	19200
  
  		Notice that entries 4 and 5 share the same TTY.
***************
*** 1616,1623
  		Notice that entries 4 and 5 share the same TTY.
  
- 	NOTE:  The examples assume the  modem  interface  speed  is  not
- 	locked.  See paragraph 1 for additional codes to be added to the
- 	init string if the lock interface feature is used.
- 
  	5) Sample modem database entry for TELEBIT
  

--- 1614,1617 -----
  		Notice that entries 4 and 5 share the same TTY.
  
  	5) Sample modem database entry for TELEBIT
  
***************
*** 1623,1627
  
  		The third entry in the sample modem database is for  the
! 		Telebit Trailblazer designated for use at slow speeds.
  
  		1) Modem name (3 of 4) .... TELEBIT

--- 1617,1621 -----
  
  		The third entry in the sample modem database is for  the
! 		Telebit modem designated for use at slow speeds.
  
  		1) Modem name (3 of 4) .... TELEBIT
***************
*** 1626,1631
  
  		1) Modem name (3 of 4) .... TELEBIT
! 		2) Modem init string ...... %AAAAAATS50=0S2=43S95=0M1!
! 		3) Dialing command ........ %AAAAAATDTW
  		4) Dialing cmd suffix ..... !
  		5) Hang up string ......... ~~+++~~ATH0!

--- 1620,1625 -----
  
  		1) Modem name (3 of 4) .... TELEBIT
! 		2) Modem init string ...... ATZ!~~
! 		3) Dialing command ........ ATDT
  		4) Dialing cmd suffix ..... !
  		5) Hang up string ......... ~~+++~~ATH0!
***************
*** 1634,1638
  		8) 1200 baud connect ...... CONNECT 1200
  		9) 2400 baud connect ...... CONNECT 2400
! 		10) 4800 baud connect .....
  		11) 9600 baud connect .....
  		12) 19200 baud connect ....

--- 1628,1632 -----
  		8) 1200 baud connect ...... CONNECT 1200
  		9) 2400 baud connect ...... CONNECT 2400
! 		10) 4800 baud connect ..... CONNECT 4800
  		11) 9600 baud connect .....
  		12) 19200 baud connect ....
***************
*** 1640,1644
  		14) No connect string 2 ... ERROR
  		15) No connect string 3 ... NO CARRIER
! 		16) No connect string 4 ...
  
  	6) Sample modem database entry for FAST_TELEBIT

--- 1634,1638 -----
  		14) No connect string 2 ... ERROR
  		15) No connect string 3 ... NO CARRIER
! 		16) No connect string 4 ... NO DIALTONE
  
  	6) Sample modem database entry for FAST_TELEBIT
***************
*** 1644,1649
  	6) Sample modem database entry for FAST_TELEBIT
  
! 		The 4th entry is for the Telebit Trailblazer  designated
! 		for use at higher speeds.
  
  		1) Modem name (4 of 4) .... FAST_TELEBIT

--- 1638,1643 -----
  	6) Sample modem database entry for FAST_TELEBIT
  
! 		The 4th entry is for the Telebit  modem  designated  for
! 		use at higher speeds.
  
  		1) Modem name (4 of 4) .... FAST_TELEBIT
***************
*** 1648,1653
  
  		1) Modem name (4 of 4) .... FAST_TELEBIT
! 		2) Modem init string ...... %AAAAAATS50=255S2=43S95=0M1!
! 		3) Dialing command ........ %AAAAAATDTW
  		4) Dialing cmd suffix ..... !
  		5) Hang up string ......... ~~+++~~ATH0!

--- 1642,1647 -----
  
  		1) Modem name (4 of 4) .... FAST_TELEBIT
! 		2) Modem init string ...... ATZ!~~ATS50=255!
! 		3) Dialing command ........ ATDT
  		4) Dialing cmd suffix ..... !
  		5) Hang up string ......... ~~+++~~ATH0!
***************
*** 1652,1656
  		4) Dialing cmd suffix ..... !
  		5) Hang up string ......... ~~+++~~ATH0!
! 		6) Auto baud detect ....... N
  		7) 300 baud connect .......
  		8) 1200 baud connect ......

--- 1646,1650 -----
  		4) Dialing cmd suffix ..... !
  		5) Hang up string ......... ~~+++~~ATH0!
! 		6) Auto baud detect ....... Y
  		7) 300 baud connect .......
  		8) 1200 baud connect ......
***************
*** 1657,1662
  		9) 2400 baud connect ......
  		10) 4800 baud connect .....
! 		11) 9600 baud connect ..... CONNECT
! 		12) 19200 baud connect .... CONNECT
  		13) No connect string 1 ... BUSY
  		14) No connect string 2 ... ERROR

--- 1651,1656 -----
  		9) 2400 baud connect ......
  		10) 4800 baud connect .....
! 		11) 9600 baud connect ..... CONNECT 9600
! 		12) 19200 baud connect .... CONNECT FAST
  		13) No connect string 1 ... BUSY
  		14) No connect string 2 ... ERROR
***************
*** 1662,1664
  		14) No connect string 2 ... ERROR
  		15) No connect string 3 ... NO CARRIER
! 		16) No connect string 4 ...

--- 1656,1658 -----
  		14) No connect string 2 ... ERROR
  		15) No connect string 3 ... NO CARRIER
! 		16) No connect string 4 ... NO DIALTONE
*** old/Makefile	Tue Sep  4 07:59:27 1990
--- Makefile	Tue Sep  4 11:50:27 1990
***************
*** 35,39
  
  #for System V or Berkeley worlds
- #BSD = -DBSD
  #TTY = tty_ucb.o
  BSD =

--- 35,38 -----
  
  #for System V or Berkeley worlds
  #TTY = tty_ucb.o
  TTY = tty_att.o
***************
*** 37,41
  #BSD = -DBSD
  #TTY = tty_ucb.o
- BSD =
  TTY = tty_att.o
  

--- 36,39 -----
  #for System V or Berkeley worlds
  #TTY = tty_ucb.o
  TTY = tty_att.o
  
***************
*** 60,64
  
  waitfor:
! 	$(CC) $(CFLAGS) $(BSD) $(LDFLAGS) waitfor.c -o waitfor $(SHLIB)
  
  matches:

--- 58,62 -----
  
  waitfor:
! 	$(CC) $(CFLAGS) $(LDFLAGS) waitfor.c -o waitfor $(SHLIB)
  
  matches:
***************
*** 66,70
  
  modem_break:
! 	$(CC) $(CFLAGS) $(BSD) $(LDFLAGS) modem_break.c -o modem_break $(SHLIB)
  
  install:

--- 64,68 -----
  
  modem_break:
! 	$(CC) $(CFLAGS) $(LDFLAGS) modem_break.c -o modem_break $(SHLIB)
  
  install:
***************
*** 93,97
  	xmodem.c
  	lint -p -Dlint input.c vcs.c
! 	lint -p -Dlint $(BSD) waitfor.c
  	lint -p -Dlint matches.c
  	lint -p -Dlint $(BSD) modem_break.c

--- 91,95 -----
  	xmodem.c
  	lint -p -Dlint input.c vcs.c
! 	lint -p -Dlint waitfor.c
  	lint -p -Dlint matches.c
  	lint -p -Dlint modem_break.c
***************
*** 95,99
  	lint -p -Dlint $(BSD) waitfor.c
  	lint -p -Dlint matches.c
! 	lint -p -Dlint $(BSD) modem_break.c
  
  shar:

--- 93,97 -----
  	lint -p -Dlint waitfor.c
  	lint -p -Dlint matches.c
! 	lint -p -Dlint modem_break.c
  
  shar:
***************
*** 98,102
  
  shar:
! 	$(SHAR) Doc > pcomm_sh.1
  	$(SHAR) Makefile Matches.1 Modem_break.1 Pcomm.1 Pcomm.dial_dir \
  	Pcomm.extrnl Pcomm.modem Pcomm.param Readme Release.notes Sample \

--- 96,100 -----
  
  shar:
! 	$(SHAR) Doc.nr > pcomm_sh.1
  	$(SHAR) Makefile Matches.1 Modem_break.1 Pcomm.1 Pcomm.dial_dir \
  	Pcomm.extrnl Pcomm.modem Pcomm.param Readme Release.notes Sample \
***************
*** 101,106
  	$(SHAR) Makefile Matches.1 Modem_break.1 Pcomm.1 Pcomm.dial_dir \
  	Pcomm.extrnl Pcomm.modem Pcomm.param Readme Release.notes Sample \
! 	Unixpc.shar Waitfor.1 > pcomm_sh.2
! 	$(SHAR) admin.c chg_dir.c config.h curses.c d_delete.c d_lib.c \
  	d_manual.c d_menu.c d_print.c d_prompt.c d_revise.c data_log.c \
  	di_delay.c > pcomm_sh.3

--- 99,104 -----
  	$(SHAR) Makefile Matches.1 Modem_break.1 Pcomm.1 Pcomm.dial_dir \
  	Pcomm.extrnl Pcomm.modem Pcomm.param Readme Release.notes Sample \
! 	Unixpc.shar Waitfor.1 admin.c > pcomm_sh.2
! 	$(SHAR) chg_dir.c config.h curses.c d_delete.c d_lib.c \
  	d_manual.c d_menu.c d_print.c d_prompt.c d_revise.c data_log.c \
  	di_delay.c > pcomm_sh.3
***************
*** 110,115
  	$(SHAR) m_lib.c macro.c main.c matches.c misc.h modem.h \
  	modem_break.c n_shell.c p_lib.c param.h passthru.c pexit.c \
! 	port.c > pcomm_sh.5
! 	$(SHAR) redial.c s_axfer.c s_extrnl.c s_gen.c s_menu.c s_modem.c \
  	s_prompt.c s_term.c s_tty.c screen.c script.c st_line.c status.h \
  	strings.c > pcomm_sh.6

--- 108,113 -----
  	$(SHAR) m_lib.c macro.c main.c matches.c misc.h modem.h \
  	modem_break.c n_shell.c p_lib.c param.h passthru.c pexit.c \
! 	port.c redial.c > pcomm_sh.5
! 	$(SHAR) s_axfer.c s_extrnl.c s_gen.c s_menu.c s_modem.c \
  	s_prompt.c s_term.c s_tty.c screen.c script.c st_line.c status.h \
  	strings.c terminal.c > pcomm_sh.6
***************
*** 113,121
  	$(SHAR) redial.c s_axfer.c s_extrnl.c s_gen.c s_menu.c s_modem.c \
  	s_prompt.c s_term.c s_tty.c screen.c script.c st_line.c status.h \
! 	strings.c > pcomm_sh.6
! 	$(SHAR) terminal.c tty_att.c tty_ucb.c vcs.c vcs.h waitfor.c \
! 	x_ascii.c x_batch.c x_extrnl.c > pcomm_sh.7
! 	$(SHAR) x_menu.c x_rcv.c x_send.c x_win.c xmodem.c xmodem.h \
! 	> pcomm_sh.8
  
  admin.o:	config.h dial_dir.h param.h

--- 111,120 -----
  	$(SHAR) s_axfer.c s_extrnl.c s_gen.c s_menu.c s_modem.c \
  	s_prompt.c s_term.c s_tty.c screen.c script.c st_line.c status.h \
! 	strings.c terminal.c > pcomm_sh.6
! 	$(SHAR) tty_att.c tty_ucb.c vcs.c vcs.h waitfor.c x_ascii.c \
! 	x_batch.c x_extrnl.c x_menu.c > pcomm_sh.7
! 	$(SHAR) x_rcv.c x_send.c x_win.c xmodem.c xmodem.h > pcomm_sh.8
! 	$(SHAR) Doc.out Matches.out Modem_break.ou Pcomm.out Waitfor.out \
! 	> pcomm_sh.9
  
  admin.o:	config.h dial_dir.h param.h
***************
*** 163,168
  strings.o:	config.h
  terminal.o:	config.h dial_dir.h misc.h modem.h param.h status.h xmodem.h
! tty_att.o:	dial_dir.h param.h
! tty_ucb.o:	dial_dir.h param.h
  vcs.o:		config.h vcs.h
  x_ascii.o:	config.h misc.h param.h

--- 162,167 -----
  strings.o:	config.h
  terminal.o:	config.h dial_dir.h misc.h modem.h param.h status.h xmodem.h
! tty_att.o:	dial_dir.h modem.h param.h
! tty_ucb.o:	dial_dir.h modem.h param.h
  vcs.o:		config.h vcs.h
  x_ascii.o:	config.h misc.h param.h
***************
*** 175,179
  xmodem.o:	config.h misc.h param.h xmodem.h
  
! waitfor:	waitfor.c
  matches:	matches.c
  modem_break:	modem_break.c

--- 174,178 -----
  xmodem.o:	config.h misc.h param.h xmodem.h
  
! waitfor:	config.h waitfor.c
  matches:	matches.c
  modem_break:	config.h modem_break.c
***************
*** 177,179
  waitfor:	waitfor.c
  matches:	matches.c
! modem_break:	modem_break.c

--- 176,178 -----
  waitfor:	config.h waitfor.c
  matches:	matches.c
! modem_break:	config.h modem_break.c
*** old/Matches.1	Sun Jan 15 11:46:32 1989
--- Matches.1	Sat Dec 30 23:14:42 1989
***************
*** 15,27
  .SH EXAMPLE
  .nf
! 	# read some input
! 	read junk
! 	# test to see the string matches 'login failed'
! 	matches $junk 'login failed'
! 	# test the exit code of the matches command
! 	if [ $? \-eq 0 ]
! 	then
! 		exit 1
! 	fi
  .fi
  .SH "SEE ALSO"

--- 15,31 -----
  .SH EXAMPLE
  .nf
! .RS 5
! # read some input
! read junk
! # test to see the string matches 'login failed'
! matches $junk 'login failed'
! # test the exit code of the matches command
! if [ $? \-eq 0 ]
! then
! .RS 5
! 	exit 1
! .RE
! fi
! .RE
  .fi
  .SH "SEE ALSO"
*** old/Modem_break.1	Sun Jan 15 11:46:38 1989
--- Modem_break.1	Sat Dec 30 23:13:16 1989
***************
*** 1,2
  .TH MODEM_BREAK 1 local
  .SH NAME

--- 1,6 -----
+ .if n .ds rq ""
+ .el .ds rq ''
+ .if n .ds lq ""
+ .el .ds lq ``
  .TH MODEM_BREAK 1 local
  .SH NAME
***************
*** 6,13
  .SH DESCRIPTION
  .I Modem_break
! creates a ``modem break'' on the stdout.  Modem break is a condition of
! a communications line when the line is held ``low'' for 200 ms.  It is
! typically used to tell the remote system to switch to a different
! baud rate.
  .PP
  .I Modem_break

--- 10,17 -----
  .SH DESCRIPTION
  .I Modem_break
! creates a \*(lqmodem break\*(rq on the stdout.  Modem break is a
! condition of a communications line when the line is held \*(lqlow\*(rq
! for 200 ms.  It is typically used to tell the remote system to switch to
! a different baud rate.
  .PP
  .I Modem_break
***************
*** 18,35
  .SH EXAMPLE
  .nf
! 	while true
! 	do
! 		# wait 5 seconds for the login prompt
! 		waitfor \-5 login:
! 		# test the exit code of the waitfor command
! 		if [ $? \-eq 0 ]
! 		then
! 			# send my user ID and break out of the loop
! 			echo egray
! 			break
! 		fi
! 		# send a modem break
! 		modem_break
! 	done
  .fi
  .SH "SEE ALSO"

--- 22,45 -----
  .SH EXAMPLE
  .nf
! .RS 5
! while true
! do
! .RS 5
! # wait 5 seconds for the login prompt
! waitfor \-5 login:
! # test the exit code of the waitfor command
! if [ $? \-eq 0 ]
! then
! .RS 5
! # send my user ID and break out of the loop
! echo egray
! break
! .RE
! fi
! # send a modem break
! modem_break
! .RE
! done
! .RE
  .fi
  .SH "SEE ALSO"
*** old/Pcomm.1	Tue Sep  4 07:58:51 1990
--- Pcomm.1	Wed Jan  3 07:25:16 1990
***************
*** 1,2
  .TH PCOMM 1 local
  .SH NAME

--- 1,7 -----
+ .\" use tbl and the man macro package
+ .if n .ds rq ""
+ .el .ds rq ''
+ .if n .ds lq ""
+ .el .ds lq ``
  .TH PCOMM 1 local
  .SH NAME
***************
*** 48,56
  .RE
  .SH COMMANDS
! The following commands are accessible by pressing a user definable ``hot
! key'' followed by a letter, number, or arrow key.  The default ``hot
! key'' is control-A.  The notation ``^A-X'' means control-A followed by
! the letter X.  The dash (-) is for clarity, and is not a part of the
! command sequence.
  .TP
  .B ^A-0

--- 53,61 -----
  .RE
  .SH COMMANDS
! The following commands are accessible by pressing a user definable
! \*(lqhot key\*(rq followed by a letter, number, or arrow key.  The
! default \*(lqhot key\*(rq is control-A.  The notation \*(lq^A-X\*(rq
! means control-A followed by the letter X. The dash (\-) is for clarity,
! and is not a part of the command sequence.
  .TP
  .B ^A-0
***************
*** 56,60
  .B ^A-0
  Help Screen.  Display a brief review of the available commands.  Uses
! the number zero ``0'' not the letter ``O''.
  .TP
  .B ^A-D

--- 61,65 -----
  .B ^A-0
  Help Screen.  Display a brief review of the available commands.  Uses
! the number zero \*(lq0\*(rq not the letter \*(lqO\*(rq.
  .TP
  .B ^A-D
***************
*** 62,69
  maintain the database of phone number entries, and to select an entry
  for dialing.  To dial an entry, just enter the entry number at the
! prompt.  If the ``script'' field contains valid Unix shell script, that
! file is used to automatically log the user on to the remote system.  See
! the Pcomm Reference Manual for the format and use of the script files.
! The following commands are available from the dialing directory:
  .RS 5
  .TP

--- 67,74 -----
  maintain the database of phone number entries, and to select an entry
  for dialing.  To dial an entry, just enter the entry number at the
! prompt.  If the \*(lqscript\*(rq field contains valid Unix shell script,
! that file is used to automatically log the user on to the remote system.
! See the Pcomm Reference Manual for the format and use of the script
! files.  The following commands are available from the dialing directory:
  .RS 5
  .TP
***************
*** 115,119
  .B ^A-4
  Spawn a Unix shell while still communicating with the remote system.
! Uses the ``native'' shell as described in the SHELL environmental
  variable.
  .TP

--- 120,124 -----
  .B ^A-4
  Spawn a Unix shell while still communicating with the remote system.
! Uses the \*(lqnative\*(rq shell as described in the SHELL environmental
  variable.
  .TP
***************
*** 136,141
  .TP
  .B 3
! Terminal Setup.  The terminal setup contains the definition of the ``hot
! key'' and the mapping of the end-of-line characters.
  .TP
  .B 4

--- 141,146 -----
  .TP
  .B 3
! Terminal Setup.  The terminal setup contains the definition of the
! \*(lqhot key\*(rq and the mapping of the end-of-line characters.
  .TP
  .B 4
***************
*** 148,152
  .TP
  .B 6
! External Protocol Setup.  This setup screen allows the user to imbed the
  names of external file transfer programs into the list of available
  protocols.

--- 153,157 -----
  .TP
  .B 6
! External Protocol Setup.  This setup screen allows the user to embed the
  names of external file transfer programs into the list of available
  protocols.
***************
*** 215,221
  .PP
  .RS 5
! .nf
! .if n .ta 1.5i +1.5i +1.5i +1.5i +1.5i
! .if t .ta 1i +1i +1i +1i +1i
  protocol	packet	error	multiple
  name	size	method	files?

--- 220,228 -----
  .PP
  .RS 5
! .TS
! l l l l 
! l l l l 
! _ _ _ _
! l l l l.
  protocol	packet	error	multiple
  name	size	method	files?
***************
*** 220,224
  protocol	packet	error	multiple
  name	size	method	files?
- ---------	--------	------------	--------
  xmodem	128	checksum/CRC	no
  xmodem-1k	128/1024	checksum/CRC	no

--- 227,230 -----
  protocol	packet	error	multiple
  name	size	method	files?
  xmodem	128	checksum/CRC	no
  xmodem-1k	128/1024	checksum/CRC	no
***************
*** 229,233
  zmodem	128/1024	CRC	yes
  (external)	?	?	?
! .fi
  .RE
  .PP

--- 235,239 -----
  zmodem	128/1024	CRC	yes
  (external)	?	?	?
! .TE
  .RE
  .PP
***************
*** 235,239
  can use an external program, such as Kermit or a proprietary program, to
  transfer files.  Commonly used external programs (such as zmodem in the
! example above) can have their names imbedded into the list of available
  protocols.
  .PP

--- 241,245 -----
  can use an external program, such as Kermit or a proprietary program, to
  transfer files.  Commonly used external programs (such as zmodem in the
! example above) can have their names embedded into the list of available
  protocols.
  .PP
***************
*** 244,249
  columns by 24 lines and cursor movement capabilities.  Running
  .I Pcomm
! from terminals at relatively slow speeds (i.e. 1200 baud) will cause
! the windows to appear sluggish.
  .PP
  Terminals that don't have arrow keys or systems without the newer

--- 250,255 -----
  columns by 24 lines and cursor movement capabilities.  Running
  .I Pcomm
! from terminals at relatively slow speeds (i.e. 1200 baud) will cause the
! windows to appear sluggish.
  .PP
  Terminals that don't have arrow keys or systems without the newer
***************
*** 248,253
  .PP
  Terminals that don't have arrow keys or systems without the newer
! versions of curses(3) will require the user to substitute the letter ``U''
! for ``up arrow'' and ``N'' for ``down arrow''.
  .PP
  There are four Pcomm support files that contain the dialing directory,

--- 254,260 -----
  .PP
  Terminals that don't have arrow keys or systems without the newer
! versions of curses(3) will require the user to substitute the letter
! \*(lqU\*(rq for \*(lqup arrow\*(rq and \*(lqN\*(rq for \*(lqdown
! arrow\*(rq.
  .PP
  There are four Pcomm support files that contain the dialing directory,
***************
*** 256,261
  these files in a directory of their choice.
  .I Pcomm
! also uses normal Unix shell scripts to perform the ``chat'' sequences
! necessary to automatically log a user onto a remote system.
  .I Pcomm
  uses the environmental variable PCOMM to search for the ``private''

--- 263,268 -----
  these files in a directory of their choice.
  .I Pcomm
! also uses normal Unix shell scripts to perform the \*(lqchat\*(rq
! sequences necessary to automatically log a user onto a remote system.
  .I Pcomm
  uses the environmental variable PCOMM to search for the
***************
*** 259,265
  necessary to automatically log a user onto a remote system.
  .I Pcomm
! uses the environmental variable PCOMM to search for the ``private''
! support file and the auto-login shell scripts.  The following directories
! are searched to find the files:
  .PP
  .RS 5

--- 266,272 -----
  sequences necessary to automatically log a user onto a remote system.
  .I Pcomm
! uses the environmental variable PCOMM to search for the
! \*(lqprivate\*(rq support file and the auto-login shell scripts.  The
! following directories are searched to find the files:
  .PP
  .RS 5
***************
*** 272,279
  .RE
  .PP
! The ``script'' field in the dialing directory serves two purposes.  The
! first use is to identify the shell script to use for auto-login.  The
! second use is to specify a TTY name for a given entry.  If the
! ``script'' is a valid device name, that device is used instead of
  searching the TTY database for a free port.
  .SH FILES

--- 279,286 -----
  .RE
  .PP
! The \*(lqscript\*(rq field in the dialing directory serves two purposes.
! The first use is to identify the shell script to use for auto-login.
! The second use is to specify a TTY name for a given entry.  If the
! \*(lqscript\*(rq is a valid device name, that device is used instead of
  searching the TTY database for a free port.
  .SH FILES
***************
*** 278,287
  searching the TTY database for a free port.
  .SH FILES
! .nf
! pcomm.dial_dir          the dialing directory
! pcomm.extrnl            the external file transfer programs
! pcomm.modem             the modem/TTY database
! pcomm.param             the start-up default parameters
! .fi
  .SH "SEE ALSO"
  Pcomm Reference Manual, xmodem(1), mdm(1)

--- 285,295 -----
  searching the TTY database for a free port.
  .SH FILES
! .TS
! l l.
! pcomm.dial_dir	the dialing directory
! pcomm.extrnl	the external file transfer programs
! pcomm.modem	the modem/TTY database
! pcomm.param	the start-up default parameters
! .TE
  .SH "SEE ALSO"
  Pcomm Reference Manual, xmodem(1), mdm(1)
*** old/Pcomm.modem	Fri Feb  3 07:22:04 1989
--- Pcomm.modem	Sun Sep  2 16:17:00 1990
***************
*** 2,7
  TTY_2=tty11;HAYES;0
  TTY_3=tty12;DIRECT;0
! TTY_4=tty13;TELEBIT;0
! TTY_5=tty13;FAST_TELEBIT;0
  MODEM_1a=HAYES;ATS7=45S11=70E0Q0V1X4&D2!;ATDT;!;~~+++~~ATH0!
  MODEM_1b=Y;CONNECT!;CONNECT 1200;CONNECT 2400;;;

--- 2,7 -----
  TTY_2=tty11;HAYES;0
  TTY_3=tty12;DIRECT;0
! TTY_4=tty13;TELEBIT;19200
! TTY_5=tty13;FAST_TELEBIT;19200
  MODEM_1a=HAYES;ATS7=45S11=70E0Q0V1X4&D2!;ATDT;!;~~+++~~ATH0!
  MODEM_1b=Y;CONNECT!;CONNECT 1200;CONNECT 2400;;;
***************
*** 10,17
  MODEM_2b=N;;;;;;
  MODEM_2c=;;;
! MODEM_3a=TELEBIT;%AAAAAATS50=0S2=43S95=0M1!;%AAAAAATDTW;!;~~+++~~ATH0!
! MODEM_3b=Y;CONNECT 300;CONNECT 1200;CONNECT 2400;;;
! MODEM_3c=BUSY;ERROR;NO CARRIER;
! MODEM_4a=FAST_TELEBIT;%AAAAAATS50=255S2=43S95=0M1!;%AAAAAATDTW;!;~~+++~~ATH0!
! MODEM_4b=N;;;;;CONNECT;CONNECT
! MODEM_4c=BUSY;ERROR;NO CARRIER;

--- 10,17 -----
  MODEM_2b=N;;;;;;
  MODEM_2c=;;;
! MODEM_3a=TELEBIT;ATZ!~~;ATDT;!;~~+++~~ATH0!
! MODEM_3b=Y;CONNECT 300;CONNECT 1200;CONNECT 2400;CONNECT 4800;;
! MODEM_3c=BUSY;ERROR;NO CARRIER;NO DIALTONE
! MODEM_4a=FAST_TELEBIT;ATZ!~~ATS50=255;ATDT;!;~~+++~~ATH0!
! MODEM_4b=Y;;;;;CONNECT 9600;CONNECT FAST
! MODEM_4c=BUSY;ERROR;NO CARRIER;NO DIALTONE
*** old/Readme	Tue Sep  4 07:59:28 1990
--- Readme	Sun Sep  2 16:55:56 1990
***************
*** 20,24
  	4) Copy (and rename to change the upper case letters to lower
  	case) the on-line manual pages Pcomm.1, Waitfor.1, Matches.1,
! 	and Modem_break.1 to the proper /usr/man directory.
  
  	5) Print the Doc file by piping the output of the Unix "pr"

--- 20,27 -----
  	4) Copy (and rename to change the upper case letters to lower
  	case) the on-line manual pages Pcomm.1, Waitfor.1, Matches.1,
! 	and Modem_break.1 to the proper /usr/man directory.  For those
! 	without access to nroff, I've included the output files called
! 	Pcomm.out, Waitfor.out, Matches.out, and Modem_break.ou in the
! 	last shell archive.
  
  	5) Print the Pcomm Reference Manual.  The Doc.nr file is the
***************
*** 22,28
  	and Modem_break.1 to the proper /usr/man directory.
  
! 	5) Print the Doc file by piping the output of the Unix "pr"
! 	command with the title separated by lots of white space (to help
! 	center it), for example:
  
  	pr -h "		   Pcomm Reference Manual	    " Doc | lp

--- 25,31 -----
  	last shell archive.
  
! 	5) Print the Pcomm Reference Manual.  The Doc.nr file is the
! 	nroff input which should be run thru tbl and the "me" macro
! 	package, as in:
  
  		tbl Doc.nr | nroff -me -Twhatever | lp
***************
*** 26,30
  	center it), for example:
  
! 	pr -h "		   Pcomm Reference Manual	    " Doc | lp
  
  How to configure Pcomm:

--- 29,36 -----
  	package, as in:
  
! 		tbl Doc.nr | nroff -me -Twhatever | lp
! 
! 	For those without access to nroff, I've included the output file
! 	called Doc.out in the last shell archive.
  
  How to configure Pcomm:
*** old/Release.notes	Tue Sep  4 07:58:16 1990
--- Release.notes	Wed Jan  3 07:37:52 1990
***************
*** 33,37
  
  	There is a new support file called "pcomm.extrnl" that allows
! 	the user to imbed the names of external file transfer programs
  	into the list of available protocols.  (The default file
  	"Pcomm.extrnl", supplied with the distribution package, contains

--- 33,37 -----
  
  	There is a new support file called "pcomm.extrnl" that allows
! 	the user to embed the names of external file transfer programs
  	into the list of available protocols.  (The default file
  	"Pcomm.extrnl", supplied with the distribution package, contains
*** old/Waitfor.1	Sun Jan 15 11:46:52 1989
--- Waitfor.1	Sat Dec 30 23:03:08 1989
***************
*** 27,38
  .SH EXAMPLE
  .nf
! 	# wait 5 seconds for the login prompt
! 	waitfor \-5 login:
! 	# test the exit code of the waitfor command
! 	if [ $? \-eq 0 ]
! 	then
! 		# send my user ID
! 		echo egray
! 	fi
  .fi
  .SH "SEE ALSO"

--- 27,42 -----
  .SH EXAMPLE
  .nf
! .RS 5
! # wait 5 seconds for the login prompt
! waitfor \-5 login:
! # test the exit code of the waitfor command
! if [ $? \-eq 0 ]
! then
! .RS 5
! # send my user ID
! echo egray
! .RE
! fi
! .RE
  .fi
  .SH "SEE ALSO"
*** old/curses.c	Tue Sep  4 07:59:01 1990
--- curses.c	Sun Sep  2 17:12:40 1990
***************
*** 403,407
  	char c;
  
! 	signal(SIGALRM, wk_force);
  	wk_flag = 0;
  

--- 403,407 -----
  	char c;
  
! 	signal(SIGALRM, (SIG_TYPE(*) ()) wk_force);
  	wk_flag = 0;
  
***************
*** 434,438
  	longjmp(wk_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, wk_force);
  	wk_flag = 1;
  #endif /* BSD */

--- 434,438 -----
  	longjmp(wk_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, (SIG_TYPE(*) ()) wk_force);
  	wk_flag = 1;
  #endif /* BSD */
*** old/init.c	Tue Sep  4 07:59:39 1990
--- init.c	Sun Sep  2 18:20:40 1990
***************
*** 27,31
  	void info();
  #ifdef SHAREDMEM
! 	int mode;
  	extern int shm_id;
  	char *memset();

--- 27,31 -----
  	void info();
  #ifdef SHAREDMEM
! 	int i, mode;
  	extern int shm_id;
  	char *memset();
***************
*** 73,77
  	s_ptr->row = 0;
  	s_ptr->col = 0;
! 	memset(s_ptr->vs, '\0', MAX_ROW * MAX_COL);
  #else /* SHAREDMEM */
  	strcpy(tempfile, TMP_FILE);

--- 73,78 -----
  	s_ptr->row = 0;
  	s_ptr->col = 0;
! 	for (i=0; i<MAX_ROW; i++)
! 		memset(s_ptr->vs[i], '\0', MAX_COL);
  #else /* SHAREDMEM */
  	strcpy(tempfile, TMP_FILE);
*** old/input.c	Tue Sep  4 07:59:40 1990
--- input.c	Sun Sep  2 17:13:28 1990
***************
*** 63,70
  	signal(SIGHUP,  SIG_IGN);
  	signal(SIGQUIT, SIG_IGN);
! 	signal(SIGUSR1, got_sig);
! 	signal(SIGUSR2, got_sig);
! 	signal(SIGINT,  got_sig);
! 	signal(SIGTERM, got_sig);
  
  	setbuf(stdout, (char *) NULL);

--- 63,70 -----
  	signal(SIGHUP,  SIG_IGN);
  	signal(SIGQUIT, SIG_IGN);
! 	signal(SIGUSR1, (SIG_TYPE(*) ()) got_sig);
! 	signal(SIGUSR2, (SIG_TYPE(*) ()) got_sig);
! 	signal(SIGINT,  (SIG_TYPE(*) ()) got_sig);
! 	signal(SIGTERM, (SIG_TYPE(*) ()) got_sig);
  
  	setbuf(stdout, (char *) NULL);
***************
*** 259,263
  	switch (sig) {
  		case SIGUSR1:
! 			signal(SIGUSR1, got_sig);
  			longjmp(i_jmp, 1);
  		case SIGUSR2:

--- 259,263 -----
  	switch (sig) {
  		case SIGUSR1:
! 			signal(SIGUSR1, (SIG_TYPE(*) ()) got_sig);
  			longjmp(i_jmp, 1);
  		case SIGUSR2:
***************
*** 262,266
  			longjmp(i_jmp, 1);
  		case SIGUSR2:
! 			signal(SIGUSR2, got_sig);
  			longjmp(i_jmp, 2);
  		case SIGINT:

--- 262,266 -----
  			longjmp(i_jmp, 1);
  		case SIGUSR2:
! 			signal(SIGUSR2, (SIG_TYPE(*) ()) got_sig);
  			longjmp(i_jmp, 2);
  		case SIGINT:
***************
*** 265,269
  			longjmp(i_jmp, 2);
  		case SIGINT:
! 			signal(SIGINT, got_sig);
  			longjmp(i_jmp, 3);
  		case SIGTERM:

--- 265,269 -----
  			longjmp(i_jmp, 2);
  		case SIGINT:
! 			signal(SIGINT, (SIG_TYPE(*) ()) got_sig);
  			longjmp(i_jmp, 3);
  		case SIGTERM:
***************
*** 268,272
  			longjmp(i_jmp, 3);
  		case SIGTERM:
! 			signal(SIGTERM, got_sig);
  			longjmp(i_jmp, 4);
  	}

--- 268,272 -----
  			longjmp(i_jmp, 3);
  		case SIGTERM:
! 			signal(SIGTERM, (SIG_TYPE(*) ()) got_sig);
  			longjmp(i_jmp, 4);
  	}
*** old/main.c	Tue Sep  4 07:59:41 1990
--- main.c	Tue Sep  4 08:18:24 1990
***************
*** 21,24
   *	Patch #7	13 Jan 90
   *	Patch #8	20 Jan 90
   */
  

--- 21,25 -----
   *	Patch #7	13 Jan 90
   *	Patch #8	20 Jan 90
+  *	Patch #9	 1 Sep 90
   */
  
***************
*** 88,93
  	signal(SIGINT, SIG_IGN);
  	signal(SIGQUIT, SIG_IGN);
! 	signal(SIGTERM, quit);
! 	signal(SIGHUP, quit);
  
  	sys_name = NULL;

--- 89,94 -----
  	signal(SIGINT, SIG_IGN);
  	signal(SIGQUIT, SIG_IGN);
! 	signal(SIGTERM, (SIG_TYPE(*) ()) quit);
! 	signal(SIGHUP, (SIG_TYPE(*) ()) quit);
  
  	sys_name = NULL;
***************
*** 173,180
  	status = init(sys_name);
  					/* get "msgs" status */
! 	mytty = ttyname(0);
! 	stat(mytty, &stbuf);
! 	msg_status = stbuf.st_mode & 0777;
! 	chmod(mytty, 0600);
  
  	mvaddstr(12, 31, "Initializing...");

--- 174,182 -----
  	status = init(sys_name);
  					/* get "msgs" status */
! 	if (mytty = ttyname(0)) {
! 		stat(mytty, &stbuf);
! 		msg_status = stbuf.st_mode & 0777;
! 		chmod(mytty, 0600);
! 	}
  
  	mvaddstr(12, 31, "Initializing...");
*** old/matches.c	Sun Jan 15 10:11:58 1989
--- matches.c	Wed Jan  3 07:39:50 1990
***************
*** 27,31
  #ifdef STRSTR
  /*
!  * Return a pointer to the first occurance of string str2 in str1.
   * Returns a NULL if str2 is not in str1.
   */

--- 27,31 -----
  #ifdef STRSTR
  /*
!  * Return a pointer to the first occurrence of string str2 in str1.
   * Returns a NULL if str2 is not in str1.
   */
*** old/modem_break.c	Tue Sep  4 07:58:39 1990
--- modem_break.c	Sun Sep  2 17:32:26 1990
***************
*** 5,8
  
  #include <stdio.h>
  #ifdef XENIX_3
  #include <sys/types.h>

--- 5,10 -----
  
  #include <stdio.h>
+ #include "config.h"
+ 
  #ifdef XENIX_3
  #include <sys/types.h>
*** old/passthru.c	Fri Jan 13 09:13:56 1989
--- passthru.c	Sun Sep  2 17:14:00 1990
***************
*** 101,105
  
  	cp_flag = 0;
! 	signal(SIGALRM, cp_force);
  					/* copy the stdin to TTYout */
  	while (1) {

--- 101,105 -----
  
  	cp_flag = 0;
! 	signal(SIGALRM, (SIG_TYPE(*) ()) cp_force);
  					/* copy the stdin to TTYout */
  	while (1) {
***************
*** 131,135
  	longjmp(cp_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, cp_force);
  	cp_flag = 1;
  #endif /* BSD */

--- 131,135 -----
  	longjmp(cp_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, (SIG_TYPE(*) ()) cp_force);
  	cp_flag = 1;
  #endif /* BSD */
*** old/pexit.c	Thu Jan 26 10:54:08 1989
--- pexit.c	Tue Sep  4 08:20:19 1990
***************
*** 52,56
  	extern int msg_status;
  	void release_port(), input_off(), exit();
! 	char *ttyname();
  #ifdef SHAREDMEM
  	extern int shm_id;

--- 52,56 -----
  	extern int msg_status;
  	void release_port(), input_off(), exit();
! 	char *mytty, *ttyname();
  #ifdef SHAREDMEM
  	extern int shm_id;
***************
*** 81,85
  		endwin();
  					/* return the TTY chmod */
! 		chmod(ttyname(0), msg_status);
  	}
  	exit(val);

--- 81,86 -----
  		endwin();
  					/* return the TTY chmod */
! 		if (mytty = ttyname(0))
! 			chmod(mytty, msg_status);
  	}
  	exit(val);
*** old/port.c	Tue Sep  4 07:59:06 1990
--- port.c	Tue Sep  4 08:16:35 1990
***************
*** 40,44
  	extern int fd;
  	register int i;
! 	int j, k, lfd, list[NUM_TTY], cmask, tbaud, is_dev, progpid;
  	char file[80], buf[80], message[80], *str_rep(), *last_c;
  	unsigned int sleep();

--- 40,44 -----
  	extern int fd;
  	register int i;
! 	int j, k, lfd, list[NUM_TTY], cmask, is_dev, progpid;
  	char file[80], buf[80], message[80], *str_rep(), *last_c;
  	void error_win(), line_set(), release_port(), send_str();
***************
*** 42,46
  	int j, k, lfd, list[NUM_TTY], cmask, tbaud, is_dev, progpid;
  	char file[80], buf[80], message[80], *str_rep(), *last_c;
- 	unsigned int sleep();
  	void error_win(), line_set(), release_port(), send_str();
  

--- 42,45 -----
  	int j, k, lfd, list[NUM_TTY], cmask, is_dev, progpid;
  	char file[80], buf[80], message[80], *str_rep(), *last_c;
  	void error_win(), line_set(), release_port(), send_str();
  
***************
*** 191,204
  
  					/* initialize the modem */
! 			if (modem->init_sp[modem->t_cur]) {
! 				tbaud = dir->baud[dir->d_cur];
! 				dir->baud[dir->d_cur] = modem->init_sp[modem->t_cur];
! 				line_set();
! 				send_str(modem->init[modem->m_cur], SLOW);
! 				dir->baud[dir->d_cur] = tbaud;
! 			}
! 			else
! 				send_str(modem->init[modem->m_cur], SLOW);
! 			sleep(1);
  			return(0);
  		}

--- 190,194 -----
  
  					/* initialize the modem */
! 			send_str(modem->init[modem->m_cur], SLOW);
  			return(0);
  		}
***************
*** 221,225
  	extern char *null_ptr;
  	char buf[80];
! 	void free_ptr(), hang_up();
  
  	/*

--- 211,215 -----
  	extern char *null_ptr;
  	char buf[80];
! 	void free_ptr(), hang_up(), reset_line();
  
  	/*
***************
*** 240,243
  		 */
  		hang_up(verbose);
  		close(fd);
  	}

--- 230,234 -----
  		 */
  		hang_up(verbose);
+ 		reset_line();
  		close(fd);
  	}
***************
*** 318,321
  	extern int errno;
  	int lfd, lckpid, n;
  	char buf[40];
  					/* doesn't exist */

--- 309,313 -----
  	extern int errno;
  	int lfd, lckpid, n;
+ 	unsigned int sleep();
  	char buf[40];
  					/* doesn't exist */
*** old/script.c	Tue Sep  4 07:59:07 1990
--- script.c	Sun Sep  2 17:07:48 1990
***************
*** 38,42
  	extern int fd, errno;
  	SIG_TYPE (*istat)(), (*qstat)();
! 	int epid, dup_pipe[2], want_out, sig_status;
  	char buf[80], *ttyname(), *strcpy(), *path, *findfile();
  	void _exit(), error_win(), input_off(), do_input();

--- 38,42 -----
  	extern int fd, errno;
  	SIG_TYPE (*istat)(), (*qstat)();
! 	int epid, dup_pipe[2], want_out;
  	char buf[80], *ttyname(), *strcpy(), *path, *findfile();
  	void _exit(), error_win(), input_off(), do_input();
*** old/strings.c	Thu Jan 12 08:06:52 1989
--- strings.c	Wed Jan  3 07:40:02 1990
***************
*** 121,125
  #ifdef STRSTR
  /*
!  * Return a pointer to the first occurance of string str2 in str1.
   * Returns a NULL if str2 is not in str1.
   */

--- 121,125 -----
  #ifdef STRSTR
  /*
!  * Return a pointer to the first occurrence of string str2 in str1.
   * Returns a NULL if str2 is not in str1.
   */
*** old/terminal.c	Tue Sep  4 07:59:31 1990
--- terminal.c	Tue Sep  4 08:09:45 1990
***************
*** 429,433
  	extern int fd;
  	void send_str(), st_line(), line_set();
! 	char buf[80], *strcpy(), *ttyname();
  	unsigned int sleep();
  					/* sanity checking */

--- 429,433 -----
  	extern int fd;
  	void send_str(), st_line(), line_set();
! 	char buf[80];
  	unsigned int sleep();
  					/* sanity checking */
***************
*** 450,454
  		 * The best I can do is close the port and start over.
  		 */
! 		strcpy(buf, ttyname(fd));
  		close(fd);
  		fd = open(buf, O_RDWR|O_NDELAY);

--- 450,454 -----
  		 * The best I can do is close the port and start over.
  		 */
! 		sprintf(buf, "/dev/%s", modem->tty[modem->t_cur]);
  		close(fd);
  		fd = open(buf, O_RDWR|O_NDELAY);
***************
*** 467,471
  		 */
  		sleep(1);
! 		close(open(ttyname(fd), O_RDWR));
  	}
  

--- 467,472 -----
  		 */
  		sleep(1);
! 		sprintf(buf, "/dev/%s", modem->tty[modem->t_cur]);
! 		close(open(buf, O_RDWR));
  	}
  
*** old/tty_att.c	Tue Sep  4 07:59:20 1990
--- tty_att.c	Mon Sep  3 20:14:39 1990
***************
*** 11,14
  #include <fcntl.h>
  #include "dial_dir.h"
  #include "param.h"
  

--- 11,15 -----
  #include <fcntl.h>
  #include "dial_dir.h"
+ #include "modem.h"
  #include "param.h"
  
***************
*** 13,16
  #include "param.h"
  
  /*
   * Change the communication line settings to the new values.

--- 14,19 -----
  #include "param.h"
  
+ struct termio hold;
+ 
  /*
   * Change the communication line settings to the new values.
***************
*** 20,23
  line_set()
  {
  	extern int fd;
  	struct termio tbuf;

--- 23,27 -----
  line_set()
  {
+ 	static int first = 1;
  	extern int fd;
  	struct termio tbuf;
***************
*** 22,25
  	extern int fd;
  	struct termio tbuf;
  
  	/*

--- 26,30 -----
  	extern int fd;
  	struct termio tbuf;
+ 	int baud;
  
  	if (first) {
***************
*** 23,26
  	struct termio tbuf;
  
  	/*
  	 * The manual dial entry also serves to store the previous

--- 28,36 -----
  	int baud;
  
+ 	if (first) {
+ 		ioctl(fd, TCGETA, &hold);
+ 		first = 0;
+ 	}
+ 
  	/*
  	 * The manual dial entry also serves to store the previous
***************
*** 52,55
  	if (*param->strip == 'Y')
  		tbuf.c_iflag |= ISTRIP;
  					/* the baud rate */
  	switch (dir->baud[dir->d_cur]) {

--- 62,66 -----
  	if (*param->strip == 'Y')
  		tbuf.c_iflag |= ISTRIP;
+ 
  					/* the baud rate */
  	baud = modem->init_sp[modem->m_cur];
***************
*** 53,57
  		tbuf.c_iflag |= ISTRIP;
  					/* the baud rate */
! 	switch (dir->baud[dir->d_cur]) {
  		case 300:
  			tbuf.c_cflag |= B300;

--- 64,72 -----
  
  					/* the baud rate */
! 	baud = modem->init_sp[modem->m_cur];
! 	if (baud == 0)
! 		baud = dir->baud[dir->d_cur];
! 
! 	switch (baud) {
  		case 300:
  			tbuf.c_cflag |= B300;
***************
*** 101,104
  					/* now set 'em! */
  	ioctl(fd, TCSETAF, &tbuf);
  	return;
  }

--- 116,130 -----
  					/* now set 'em! */
  	ioctl(fd, TCSETAF, &tbuf);
+ 	return;
+ }
+ 
+ /*
+  * Put things back the way they were.
+  */
+ 
+ void
+ reset_line()
+ {
+ 	ioctl(fd, TCSETAF, &hold);
  	return;
  }
*** old/tty_ucb.c	Tue Sep  4 07:59:32 1990
--- tty_ucb.c	Mon Sep  3 20:31:24 1990
***************
*** 7,10
  #include <fcntl.h>
  #include "dial_dir.h"
  #include "param.h"
  

--- 7,11 -----
  #include <fcntl.h>
  #include "dial_dir.h"
+ #include "modem.h"
  #include "param.h"
  
***************
*** 9,12
  #include "param.h"
  
  /*
   * Change the communication line settings to the new values.

--- 10,15 -----
  #include "param.h"
  
+ struct sgttyb hold;
+ 
  /*
   * Change the communication line settings to the new values.
***************
*** 16,19
  line_set()
  {
  	extern int fd;
  	struct sgttyb tbuf;

--- 19,23 -----
  line_set()
  {
+ 	static int first = 1;
  	extern int fd;
  	struct sgttyb tbuf;
***************
*** 18,21
  	extern int fd;
  	struct sgttyb tbuf;
  
  	/*

--- 22,26 -----
  	extern int fd;
  	struct sgttyb tbuf;
+ 	int baud;
  
  	if (first) {
***************
*** 19,22
  	struct sgttyb tbuf;
  
  	/*
  	 * The manual dial entry also serves to store the previous

--- 24,32 -----
  	int baud;
  
+ 	if (first) {
+ 		ioctl(fd, TIOCGETP, &hold);
+ 		first = 0;
+ 	}
+ 
  	/*
  	 * The manual dial entry also serves to store the previous
***************
*** 41,45
  		tbuf.sg_flags |= TANDEM;
  					/* the baud rate */
! 	switch (dir->baud[dir->d_cur]) {
  		case 300:
  			tbuf.sg_ispeed = B300;

--- 51,59 -----
  		tbuf.sg_flags |= TANDEM;
  					/* the baud rate */
! 	baud = modem->init_sp[modem->m_cur];
! 	if (baud == 0)
! 		baud = dir->baud[dir->d_cur];
! 
! 	switch (baud) {
  		case 300:
  			tbuf.sg_ispeed = B300;
***************
*** 88,91
  					/* now set 'em! */
  	ioctl(fd, TIOCSETP, &tbuf);
  	return;
  }

--- 102,117 -----
  					/* now set 'em! */
  	ioctl(fd, TIOCSETP, &tbuf);
+ 	ioctl(fd, TIOCHPCL, 0);
+ 	return;
+ }
+ 
+ /*
+  * Put things back the way they were.
+  */
+ 
+ void
+ reset_line()
+ {
+ 	ioctl(fd, TIOCSETP, &hold);
  	return;
  }
*** old/waitfor.c	Tue Sep  4 07:59:10 1990
--- waitfor.c	Tue Sep  4 11:43:37 1990
***************
*** 13,16
  #include <stdio.h>
  #include <signal.h>
  
  #ifdef BSD

--- 13,17 -----
  #include <stdio.h>
  #include <signal.h>
+ #include "config.h"
  
  #ifdef BSD
***************
*** 25,29
  	int i, j, timeout;
  	char c, buf[BUF_SIZ], *string, *strstr();
! 	long t;
  	void exit();
  

--- 26,30 -----
  	int i, j, timeout;
  	char c, buf[BUF_SIZ], *string, *strstr();
! 	long t, time();
  	void exit();
  
***************
*** 76,80
  	unsigned int alarm();
  
! 	signal(SIGALRM, wf_force);
  	wf_flag = 0;
  

--- 77,81 -----
  	unsigned int alarm();
  
! 	signal(SIGALRM, (SIG_TYPE(*) ()) wf_force);
  	wf_flag = 0;
  
***************
*** 104,108
  	longjmp(wf_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, wf_force);
  	wf_flag = 1;
  #endif /* BSD */

--- 105,109 -----
  	longjmp(wf_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, (SIG_TYPE(*) ()) wf_force);
  	wf_flag = 1;
  #endif /* BSD */
***************
*** 111,115
  #ifdef STRSTR
  /*
!  * Return a pointer to the first occurance of string str2 in str1.
   * Returns a NULL if str2 is not in str1.
   */

--- 112,116 -----
  #ifdef STRSTR
  /*
!  * Return a pointer to the first occurrence of string str2 in str1.
   * Returns a NULL if str2 is not in str1.
   */
*** old/x_ascii.c	Fri Jan 27 10:06:54 1989
--- x_ascii.c	Sun Sep  2 17:15:04 1990
***************
*** 263,267
  	unsigned int alarm();
  
! 	signal(SIGALRM, bl_force);
  	bl_flag = 0;
  

--- 263,267 -----
  	unsigned int alarm();
  
! 	signal(SIGALRM, (SIG_TYPE(*) ()) bl_force);
  	bl_flag = 0;
  
***************
*** 291,295
  	longjmp(bl_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, bl_force);
  	bl_flag = 1;
  #endif /* BSD */

--- 291,295 -----
  	longjmp(bl_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, (SIG_TYPE(*) ()) bl_force);
  	bl_flag = 1;
  #endif /* BSD */
*** old/x_batch.c	Tue Sep  4 07:58:50 1990
--- x_batch.c	Sun Sep  2 17:38:12 1990
***************
*** 189,193
  	unsigned char buf[133];
  					/* start with a clean block */
! 	memset(buf, '\0', 133);
  					/* the header */
  	buf[0] = SOH;

--- 189,193 -----
  	unsigned char buf[133];
  					/* start with a clean block */
! 	memset((char *) buf, '\0', 133);
  					/* the header */
  	buf[0] = SOH;
*** old/x_extrnl.c	Tue Sep  4 07:58:41 1990
--- x_extrnl.c	Tue Sep  4 10:33:16 1990
***************
*** 32,36
  	WINDOW *xt_win, *newwin();
  	SIG_TYPE (*istat)(), (*qstat)();
! 	int epid, want_out, sig_status;
  	char buf[80], *ttyname(), *strcpy();
  	unsigned int sleep();

--- 32,36 -----
  	WINDOW *xt_win, *newwin();
  	SIG_TYPE (*istat)(), (*qstat)();
! 	int epid, want_out;
  	char buf[80], *ttyname(), *strcpy();
  	unsigned int sleep();
***************
*** 42,47
  	touchwin(xt_win);
  	wrefresh(xt_win);
- 					/* out of curses mode */
- 	resetterm();
  
  	if (!(epid = fork())) {

--- 42,45 -----
  	touchwin(xt_win);
  	wrefresh(xt_win);
  
  	if (!(epid = fork())) {
***************
*** 121,125
  	signal(SIGINT, istat);
  	signal(SIGQUIT, qstat);
! 					/* back to curses mode */
  	sleep(1);
  	fixterm();

--- 119,123 -----
  	signal(SIGINT, istat);
  	signal(SIGQUIT, qstat);
! 					/* the tty may have been clobbered */
  	sleep(1);
  	fixterm();
*** old/xmodem.c	Tue Sep  4 07:59:11 1990
--- xmodem.c	Sun Sep  2 17:15:24 1990
***************
*** 105,109
  	unsigned int alarm();
  
! 	signal(SIGALRM, gl_force);
  	gl_flag = 0;
  

--- 105,109 -----
  	unsigned int alarm();
  
! 	signal(SIGALRM, (SIG_TYPE(*) ()) gl_force);
  	gl_flag = 0;
  
***************
*** 133,137
  	longjmp(gl_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, gl_force);
  	gl_flag = 1;
  #endif /* BSD */

--- 133,137 -----
  	longjmp(gl_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, (SIG_TYPE(*) ()) gl_force);
  	gl_flag = 1;
  #endif /* BSD */
***************
*** 154,158
  	unsigned int try, alarm();
  
! 	signal(SIGALRM, rl_force);
  	rl_flag = 0;
  

--- 154,158 -----
  	unsigned int try, alarm();
  
! 	signal(SIGALRM, (SIG_TYPE(*) ()) rl_force);
  	rl_flag = 0;
  
***************
*** 186,190
  	longjmp(rl_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, rl_force);
  	rl_flag = 1;
  #endif /* BSD */

--- 186,190 -----
  	longjmp(rl_buf, 1);
  #else /* BSD */
! 	signal(SIGALRM, (SIG_TYPE(*) ()) rl_force);
  	rl_flag = 1;
  #endif /* BSD */
End of Patch