[unix-pc.sources] Patch #1 to Pcomm v1.2

egray@fthood.UUCP (02/17/89)

This is patch #1 to the Pcomm v1.2 distribution package.  After this
patch is installed, the version number will change from 1.2.0 to 1.2.1.

This patch will fix a problem with ymodem transfers on 16 bit systems,
and will fix a bug in the redial function.

Many thanks to Larry Clark (...killer!larryd1) for pointing these bugs
out to me.

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

-----------------------------------------------------------------------------
Prereq: "1.2.0"
*** old/info.c	Fri Feb 10 11:33:36 1989
--- info.c	Sun Feb 12 10:07:13 1989
***************
*** 4,9
   */
  
! #define VERSION	"1.2.0"
! #define DATE	"4 Feb 89"
  
  #include <stdio.h>

--- 4,9 -----
   */
  
! #define VERSION	"1.2.1"
! #define DATE	"18 Feb 89"
  
  #include <stdio.h>
*** old/main.c	Fri Feb 10 11:33:37 1989
--- main.c	Sun Feb 12 10:07:07 1989
***************
*** 13,16
   *	Release v1.1	21 Aug 88
   *	Release v1.2.0	 4 Feb 89
   */
  

--- 13,17 -----
   *	Release v1.1	21 Aug 88
   *	Release v1.2.0	 4 Feb 89
+  *	Patch #1	18 Feb 89
   */
  
*** old/redial.c	Fri Feb 10 11:28:38 1989
--- redial.c	Fri Feb 10 07:22:18 1989
***************
*** 52,56
  		entry = strtok(ans, " \t");
  		for (i=0; i<NUM_QUEUE; i++) {
! 			if (*entry == '\0') {
  				dir->q_num[i] = -1;
  				continue;

--- 52,56 -----
  		entry = strtok(ans, " \t");
  		for (i=0; i<NUM_QUEUE; i++) {
! 			if (entry == NULL) {
  				dir->q_num[i] = -1;
  				continue;
*** old/script.c	Fri Feb 10 11:28:38 1989
--- script.c	Tue Feb  7 10:26:44 1989
***************
*** 41,45
  	char buf[80], *ttyname(), *strcpy(), *path, *findfile();
  	void _exit(), error_win(), input_off(), do_input();
- 	unsigned int sleep();
  
  					/* if empty */

--- 41,44 -----
  	char buf[80], *ttyname(), *strcpy(), *path, *findfile();
  	void _exit(), error_win(), input_off(), do_input();
  
  					/* if empty */
***************
*** 153,157
  	close(dup_pipe[0]);
  	close(dup_pipe[1]);
- 	sleep(1);
  	beep();
  	return;

--- 152,155 -----
  	close(dup_pipe[0]);
  	close(dup_pipe[1]);
  	beep();
  	return;
*** old/terminal.c	Mon Feb 13 08:05:19 1989
--- terminal.c	Mon Feb 13 08:11:33 1989
***************
*** 15,18
  #include "xmodem.h"
  
  #ifdef UNIXPC
  #include <sys/phone.h>

--- 15,24 -----
  #include "xmodem.h"
  
+ #ifdef BSD
+ #include <sys/file.h>
+ #else /* BSD */
+ #include <fcntl.h>
+ #endif /* BSD */
+ 
  #ifdef UNIXPC
  #include <sys/phone.h>
***************
*** 17,21
  #ifdef UNIXPC
  #include <sys/phone.h>
- #include <fcntl.h>
  #endif /* UNIXPC */
  

--- 23,26 -----
  #ifdef UNIXPC
  #include <sys/phone.h>
  #endif /* UNIXPC */
  
***************
*** 408,411
  	void send_str(), st_line(), line_set();
  	char buf[80], *strcpy(), *ttyname();
  					/* sanity checking */
  	if (modem == NULL)

--- 413,417 -----
  	void send_str(), st_line(), line_set();
  	char buf[80], *strcpy(), *ttyname();
+ 	unsigned int sleep();
  					/* sanity checking */
  	if (modem == NULL)
***************
*** 436,439
  #endif /* UNIXPC */
  		send_str(modem->hang_up[modem->m_cur], SLOW);
  
  	if (verbose)

--- 442,453 -----
  #endif /* UNIXPC */
  		send_str(modem->hang_up[modem->m_cur], SLOW);
+ 
+ 	/*
+ 	 * Some modems do "damage" to the tty driver when they hang up by
+ 	 * flashing the modem control lines on the port.  The following is
+ 	 * some witchcraft designed to put the driver back the way it was.
+ 	 */
+ 	sleep(1);
+ 	close(open(ttyname(fd), O_RDWR));
  
  	if (verbose)
*** old/x_rcv.c	Fri Feb 10 11:28:38 1989
--- x_rcv.c	Fri Feb 10 07:19:12 1989
***************
*** 29,33
  	int i, default_err, is_batch, max_block, code, file_count, got_hdr;
  	int hours, mins, secs, len;
! 	long block, recv;
  	float percent, performance;
  	unsigned char blk;

--- 29,33 -----
  	int i, default_err, is_batch, max_block, code, file_count, got_hdr;
  	int hours, mins, secs, len;
! 	long block, recv, partial;
  	float percent, performance;
  	unsigned char blk;
***************
*** 194,199
  			if (!code) {
  				if (file_length != 0L) {
! 					len = file_length - recv;
! 					if (len > block_size)
  						len = block_size;
  				}

--- 194,199 -----
  			if (!code) {
  				if (file_length != 0L) {
! 					partial = file_length - recv;
! 					if (partial > (long) block_size)
  						len = block_size;
  					else
***************
*** 197,200
  					if (len > block_size)
  						len = block_size;
  				}
  				else

--- 197,202 -----
  					if (partial > (long) block_size)
  						len = block_size;
+ 					else
+ 						len = partial;
  				}
  				else
***************
*** 252,257
  				wattrstr(win, A_BOLD, "TRUNCATE ERROR");
  				wrefresh(win);
! 					/* fatal */
! 				return(1);
  			}
  		}

--- 254,258 -----
  				wattrstr(win, A_BOLD, "TRUNCATE ERROR");
  				wrefresh(win);
! 				sleep(1);
  			}
  		}
*** old/Release.notes	Fri Feb 10 11:28:37 1989
--- Release.notes	Fri Feb 10 07:42:26 1989
***************
*** 38,42
  	definitions for zmodem).
  
! 	The pcomm.input program has been changed to use multiple
  	character buffered writes to the screen.  Both the input and
  	output buffer sizes are tunable parameters in config.h

--- 38,42 -----
  	definitions for zmodem).
  
! 	The pcomm_input program has been changed to use multiple
  	character buffered writes to the screen.  Both the input and
  	output buffer sizes are tunable parameters in config.h