Patch #7 to Pcomm v1.2

egray at fthood.UUCP egray at fthood.UUCP
Mon Jan 15 04:38:26 AEST 1990


This is patch #7 to the Pcomm v1.2 distribution package.  This patch
will fix a few portability problems with Berkeley boxes, and will fix a
few other odds and ends.

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

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

------------------------------------------------------------------------------
Prereq: "1.2.6"
*** old/info.c	Mon Dec 11 09:23:27 1989
--- info.c	Wed Jan  3 09:55:43 1990
***************
*** 4,9
   */
  
! #define VERSION	"1.2.6"
! #define DATE	"8 Nov 89"
  
  #include <stdio.h>

--- 4,9 -----
   */
  
! #define VERSION	"1.2.7"
! #define DATE	"13 Jan 90"
  
  #include <stdio.h>
*** old/Makefile	Wed Jan 10 08:12:02 1990
--- Makefile	Wed Jan 10 08:11:02 1990
***************
*** 8,11
  #TERMLIB = -ltinfo -lx
  
  #for 80286 versions of Microsoft Xenix 3.0/3.5
  #CFLAGS = -O -Mme2 -Dresetterm=xresetterm -DXENIX_3

--- 8,17 -----
  #TERMLIB = -ltinfo -lx
  
+ #for 80386 versions of SCO Xenix
+ #CFLAGS = -O -DM_TERMINFO
+ #LDFLAGS = -s
+ #CURSES = -ltinfo -lx
+ #TERMLIB = -ltinfo -lx
+ 
  #for 80286 versions of Microsoft Xenix 3.0/3.5
  #CFLAGS = -O -Mme2 -Dresetterm=xresetterm -DXENIX_3
***************
*** 14,17
  CFLAGS = -O
  LDFLAGS = -s
  SHAR = shar -a
  BIN = /usr/local/bin

--- 20,24 -----
  CFLAGS = -O
  LDFLAGS = -s
+ #SHLIB = -lc_s
  SHAR = shar -a
  BIN = /usr/local/bin
***************
*** 47,51
  
  pcomm:	$(PCOMM)
! 	$(CC) $(LDFLAGS) $(PCOMM) -o pcomm $(CURSES)
  
  pcomm_input:	$(INPUT)

--- 54,58 -----
  
  pcomm:	$(PCOMM)
! 	$(CC) $(LDFLAGS) $(PCOMM) -o pcomm $(CURSES) $(SHLIB)
  
  pcomm_input:	$(INPUT)
***************
*** 50,54
  
  pcomm_input:	$(INPUT)
! 	$(CC) $(LDFLAGS) $(INPUT) -o pcomm_input $(TERMLIB)
  
  waitfor:

--- 57,61 -----
  
  pcomm_input:	$(INPUT)
! 	$(CC) $(LDFLAGS) $(INPUT) -o pcomm_input $(TERMLIB) $(SHLIB)
  
  waitfor:
***************
*** 53,57
  
  waitfor:
! 	$(CC) $(CFLAGS) $(BSD) $(LDFLAGS) waitfor.c -o waitfor
  
  matches:

--- 60,64 -----
  
  waitfor:
! 	$(CC) $(CFLAGS) $(BSD) $(LDFLAGS) waitfor.c -o waitfor $(SHLIB)
  
  matches:
***************
*** 56,60
  
  matches:
! 	$(CC) $(CFLAGS) $(LDFLAGS) matches.c -o matches
  
  modem_break:

--- 63,67 -----
  
  matches:
! 	$(CC) $(CFLAGS) $(LDFLAGS) matches.c -o matches $(SHLIB)
  
  modem_break:
***************
*** 59,63
  
  modem_break:
! 	$(CC) $(CFLAGS) $(BSD) $(LDFLAGS) modem_break.c -o modem_break
  
  install:

--- 66,70 -----
  
  modem_break:
! 	$(CC) $(CFLAGS) $(BSD) $(LDFLAGS) modem_break.c -o modem_break $(SHLIB)
  
  install:
***************
*** 128,131
  e_lib.o:	extrnl.h
  expand.o:	config.h
  help.o:		config.h misc.h
  init.o:		config.h misc.h status.h

--- 135,139 -----
  e_lib.o:	extrnl.h
  expand.o:	config.h
+ getopt.o:	config.h
  help.o:		config.h misc.h
  init.o:		config.h misc.h status.h
***************
*** 131,134
  init.o:		config.h misc.h status.h
  input.o:	config.h misc.h status.h vcs.h
  ls_menu.o:	config.h dial_dir.h misc.h param.h
  m_lib.o:	modem.h

--- 139,143 -----
  init.o:		config.h misc.h status.h
  input.o:	config.h misc.h status.h vcs.h
+ list_dir.o:	config.h misc.h
  ls_menu.o:	config.h dial_dir.h misc.h param.h
  m_lib.o:	modem.h
***************
*** 147,151
  s_modem.o:	config.h misc.h modem.h
  s_prompt.o:	config.h misc.h
! s_term.o:	config.h misc.h param.h status.h
  s_tty.o:	config.h misc.h modem.h
  screen.o:	config.h param.h status.h

--- 156,160 -----
  s_modem.o:	config.h misc.h modem.h
  s_prompt.o:	config.h misc.h
! s_term.o:	config.h dial_dir.h misc.h param.h status.h
  s_tty.o:	config.h misc.h modem.h
  screen.o:	config.h param.h status.h
*** old/Readme	Fri Jan 12 12:49:29 1990
--- Readme	Fri Jan 12 12:54:19 1990
***************
*** 12,19
  	go.  A good location might be /usr/local/lib/pcomm.
  
! 	3) Copy the sample support files Pcomm.dial_dir, Pcomm.extrnl,
! 	Pcomm.modem, and Pcomm.param to the default directory and rename
! 	them to change the upper case "P" to a lower case "p".  The files
! 	should *not* have write permission to all.
  
  	4) Copy (and rename as appropriate) the Pcomm.1, Waitfor.1, 

--- 12,20 -----
  	go.  A good location might be /usr/local/lib/pcomm.
  
! 	3) Copy (and rename to change the upper case 'P' to lower case)
! 	the four sample support files Pcomm.dial_dir, Pcomm.extrnl,
! 	Pcomm.modem, and Pcomm.param to the default directory.  The
! 	files should *not* have write permission to all.  Please
! 	remember these are just sample files...
  
  	4) Copy (and rename to change the upper case letters to lower
***************
*** 17,23
  	should *not* have write permission to all.
  
! 	4) Copy (and rename as appropriate) the Pcomm.1, Waitfor.1, 
! 	Matches.1, and Modem_break.1 nroff manuals to the proper /usr/man
! 	directory.
  
  	5) Print the Doc file by piping the output of the Unix "pr"

--- 18,24 -----
  	remember these are just sample files...
  
! 	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"
***************
*** 210,213
  	return value.
  
  Emmet P. Gray				US Army, HQ III Corps & Fort Hood
  ...!uunet!uiucuxc!fthood!egray		Attn: AFZF-DE-ENV

--- 211,258 -----
  	return value.
  
+ Notes for Sun users...  There are several problems that apparently only
+ surface with SunOS.  Here are some notes to help out.
+ 
+ 	1) Pcomm was really designed to work in an AT&T world.  If you
+ 	compile the code with the /usr/5bin/cc compiler, you'll end up
+ 	with a better product.  To do so, you'll need to use default
+ 	config.h parameters (undef OLDCURSES and undef BSD) plus the
+ 	default Makefile parameters (CURSES, TERMLIB, and TTY).
+ 
+ 	2) Patch #5 introduced a new pre-processor definition in dial.c
+ 	called USLEEP.  SunOS no longer supports the AT&T version of the
+ 	times() system call, so usleep() should be used to generate the
+ 	delay.
+ 
+ 	3) Some Sun users report that their version of curses (perhaps
+ 	limited to the sys5 version?) has a bug that henders the quick
+ 	transition between the "curses mode" and "terminal mode".  If
+ 	you have troubles with Pcomm getting out-of-sync after a file
+ 	transfer here is hack to bludgeon the code into submission.  I
+ 	have no idea why this works...
+ 
+ 		change line 53 in terminal.c:
+ 			while (1) {
+ 				read(0, &c, 1);
+ 				c &= 0x7f;
+ 		to read:
+ 			while (1) {
+ 				c = getch();
+ 				c &= 0x7f;
+ 
+ 	Please don't use this unless you're having a problem!
+ 
+ Note for some 4.2BSD and Ultrix 1.2 systems:
+ 
+ 	Apparently, there is a bug in the /usr/include/curses.h file on
+ 	some systems that does not define the nl() and nonl() macros
+ 	correctly.  If this is the case with your system, edit
+ 	/usr/include/curses.h to include the following:
+ 
+ 	#undef nl
+ 	#undef nonl
+ 	#define nl()	(_tty.sg_flags |= CRMOD,_pfast = _rawmode,stty(_tty_ch, &_tty))
+ 	#define nonl()	(_tty.sg_flags &= ~CRMOD, _pfast = TRUE, stty(_tty_ch, &_tty))
+ 
  Emmet P. Gray				US Army, HQ III Corps & Fort Hood
  ...!uunet!uiucuxc!fthood!egray		Attn: AFZF-DE-ENV
***************
*** 212,216
  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

--- 257,261 -----
  Emmet P. Gray				US Army, HQ III Corps & Fort Hood
  ...!uunet!uiucuxc!fthood!egray		Attn: AFZF-DE-ENV
! fthood!egray at uxc.cso.uiuc.edu		Directorate of Engineering & Housing
  					Environmental Management Office
  					Fort Hood, TX 76544-5057
*** old/dial.c	Mon Dec 11 09:23:28 1989
--- dial.c	Fri Dec 22 12:32:46 1989
***************
*** 7,14
  
  #include <stdio.h>
- #ifndef USLEEP
- #include <sys/types.h>
- #include <sys/times.h>
- #endif /* USLEEP */
  #include "config.h"
  #include "dial_dir.h"

--- 7,10 -----
  
  #include <stdio.h>
  #include "config.h"
  #include "dial_dir.h"
***************
*** 17,20
  #include "param.h"
  
  #ifdef UNIXPC
  #include <sys/phone.h>

--- 13,23 -----
  #include "param.h"
  
+ #ifdef BSD
+ #include <sys/time.h>
+ #else /* BSD */
+ #include <sys/types.h>
+ #include <sys/times.h>
+ #endif /* BSD */
+ 
  #ifdef UNIXPC
  #include <sys/phone.h>
***************
*** 397,400
  	usleep(100000);
  #else /* USLEEP */
  	struct tms t;
  	long t1;

--- 400,415 -----
  	usleep(100000);
  #else /* USLEEP */
+ 				/* Hey! I know these routines are a hack */
+ #ifdef BSD
+ 	struct timeval tv;
+ 	struct timezone tz;
+ 	double t1;
+ 
+ 	gettimeofday(&tv, &tz);
+ 	t1 = tv.tv_sec + (tv.tv_usec / 1000000.0);
+ 	do
+ 		gettimeofday(&tv, &tz);
+ 	while ((tv.tv_sec + (tv.tv_usec / 1000000.0) - t1) < 0.1);
+ #else /* BSD */
  	struct tms t;
  	long t1;
***************
*** 403,406
  	while ((times(&t) - t1) < HZ/10)
  		;
  #endif /* USLEEP */
  	return;

--- 418,422 -----
  	while ((times(&t) - t1) < HZ/10)
  		;
+ #endif /* BSD */
  #endif /* USLEEP */
  	return;
*** old/e_lib.c	Sun Dec 31 12:51:52 1989
--- e_lib.c	Wed Jan  3 09:10:17 1990
***************
*** 141,144
  	char buf[200];
  	void error_win();
  					/* open for write */
  	if (!(fp = my_fopen(extrnl->e_path, "w"))) {

--- 141,154 -----
  	char buf[200];
  	void error_win();
+ 
+ 	/* 
+ 	 * I don't remember why I made this file optional.  For the next
+ 	 * release, it will be mandatory!  The following is kludge to tell
+ 	 * the user that there is no file to save anything to.
+ 	 */
+ 	if (extrnl->e_path == NULL) {
+ 		error_win(0, "No \"pcomm.extrnl\" file in use", "");
+ 		return(1);
+ 	}
  					/* open for write */
  	if (!(fp = my_fopen(extrnl->e_path, "w"))) {
***************
*** 144,148
  	if (!(fp = my_fopen(extrnl->e_path, "w"))) {
  		sprintf(buf, "\"%s\"", extrnl->e_path);
! 		error_win(0, "No write permission on externl program file", buf);
  		return(1);
  	}

--- 154,158 -----
  	if (!(fp = my_fopen(extrnl->e_path, "w"))) {
  		sprintf(buf, "\"%s\"", extrnl->e_path);
! 		error_win(0, "No write permission on external program file", buf);
  		return(1);
  	}
*** old/init.c	Thu Dec 21 11:16:08 1989
--- init.c	Thu Dec 21 11:16:25 1989
***************
*** 29,33
  	int mode;
  	extern int shm_id;
! 	char *shmat(), *memset();
  	void perror(), exit();
  

--- 29,33 -----
  	int mode;
  	extern int shm_id;
! 	char *memset();
  	void perror(), exit();
  
*** old/input.c	Thu Dec 21 11:16:08 1989
--- input.c	Thu Dec 21 11:16:44 1989
***************
*** 56,60
  #ifdef SHAREDMEM
  	int shm_id;
- 	char *shmat();
  	void perror();
  #endif /* SHAREDMEM */

--- 56,59 -----
  #ifdef SHAREDMEM
  	int shm_id;
  	void perror();
  #endif /* SHAREDMEM */
*** old/main.c	Mon Dec 11 09:23:27 1989
--- main.c	Wed Jan  3 09:55:30 1990
***************
*** 19,22
   *	Patch #5	30 Oct 89
   *	Patch #6	 8 Nov 89
   */
  

--- 19,23 -----
   *	Patch #5	30 Oct 89
   *	Patch #6	 8 Nov 89
+  *	Patch #7	13 Jan 90
   */
  
*** old/terminal.c	Thu Dec 21 12:01:08 1989
--- terminal.c	Fri Dec 22 11:57:58 1989
***************
*** 16,19
  
  #ifdef BSD
  #include <sys/file.h>
  #else /* BSD */

--- 16,22 -----
  
  #ifdef BSD
+ #ifndef SIGCLD
+ #define SIGCLD SIGCHLD
+ #endif /* SIGCLD */
  #include <sys/file.h>
  #else /* BSD */
***************
*** 328,332
  			write(fd, &lf, 1);
  			/*
! 			 * Since you don't type it... it doesn't get echoed
  			 * by the driver.
  			 */

--- 331,335 -----
  			write(fd, &lf, 1);
  			/*
! 			 * Since you didn't type it... it doesn't get echoed
  			 * by the driver.
  			 */
*** old/tty_ucb.c	Fri Dec 22 08:35:00 1989
--- tty_ucb.c	Wed Jan  3 09:36:07 1990
***************
*** 104,109
  	ioctl(0, TIOCGETP, &tbuf);
  	
! 	tbuf.sg_flags |= CBREAK;
! 	tbuf.sg_flags &= ~(RAW|CRMOD|ECHO);
  
  	if (dir->duplex[dir->d_cur] == 'H')

--- 104,109 -----
  	ioctl(0, TIOCGETP, &tbuf);
  	
! 	tbuf.sg_flags |= RAW;
! 	tbuf.sg_flags &= ~(CRMOD|ECHO);
  
  	if (dir->duplex[dir->d_cur] == 'H')
***************
*** 171,175
  /*
   * Flush the file descriptor.  Very messy... flushing the input causes a
!  * wait for the ouput to drain, and there is no output flushing.
   */
  

--- 171,175 -----
  /*
   * Flush the file descriptor.  Very messy... flushing the input causes a
!  * wait for the output to drain, and there is no output flushing.
   */
  
*** old/vcs.c	Mon Dec 11 09:23:28 1989
--- vcs.c	Wed Jan  3 09:37:11 1990
***************
*** 175,179
   * Notice that the "%p1" and "%p2" parameters get translated to 2000 and
   * 2001.  This is to signify that the parameters are multiple digit ASCII
!  * encoded numbers.  The "%i" and "%d" codes are imbedded into the vcs_opt[]
   * array in somewhat of a loose manner.  In other words, there is no set
   * format for the vcs_opt[] array.  The padding info "$<5>" is ignored.

--- 175,179 -----
   * Notice that the "%p1" and "%p2" parameters get translated to 2000 and
   * 2001.  This is to signify that the parameters are multiple digit ASCII
!  * encoded numbers.  The "%i" and "%d" codes are embedded into the vcs_opt[]
   * array in somewhat of a loose manner.  In other words, there is no set
   * format for the vcs_opt[] array.  The padding info "$<5>" is ignored.
***************
*** 294,298
  	fake_it(tgoto(cursor_address, 12, 34));
  #else /* OLDCURSES */
! 	fake_it(tparm(cursor_address, 12, 34));
  #endif /* OLDCURSES */
  

--- 294,298 -----
  	fake_it(tgoto(cursor_address, 12, 34));
  #else /* OLDCURSES */
! 	fake_it((char *)tparm(cursor_address, 12, 34));
  #endif /* OLDCURSES */
  
***************
*** 340,344
  		fake_it(tgoto(cursor_address, 13, 34));
  #else /* OLDCURSES */
! 		fake_it(tparm(cursor_address, 13, 34));
  #endif /* OLDCURSES */
  					/* where are they different */

--- 340,344 -----
  		fake_it(tgoto(cursor_address, 13, 34));
  #else /* OLDCURSES */
! 		fake_it((char *)tparm(cursor_address, 13, 34));
  #endif /* OLDCURSES */
  					/* where are they different */
***************
*** 365,369
  		fake_it(tgoto(cursor_address, 12, 35));
  #else /* OLDCURSES */
! 		fake_it(tparm(cursor_address, 12, 35));
  #endif /* OLDCURSES */
  					/* where are they different */

--- 365,369 -----
  		fake_it(tgoto(cursor_address, 12, 35));
  #else /* OLDCURSES */
! 		fake_it((char *)tparm(cursor_address, 12, 35));
  #endif /* OLDCURSES */
  					/* where are they different */
End Of Patch



More information about the Comp.sources.bugs mailing list