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

egray@osiris.cso.uiuc.edu (Emmet P. Gray) (01/01/91)

This is patch #10 to the Pcomm v1.2 distribution package.  This patch
will add SVR4 UUCP lockfile support, a small amount of ANSI C rework,
and will fix a few other odds and ends.

Pcomm v1.2.4 appeared in comp.sources.unix as v20i067 thru v20i075 around
the 27th of October 1989.  Since then, patches 5 through 9 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).

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.9"
*** old/info.c	Fri Nov 16 14:51:26 1990
--- info.c	Sun Dec 30 12:38:35 1990
***************
*** 4,9
   */
  
! #define VERSION	"1.2.9"
! #define DATE	"1 Sep 90"
  
  #include <stdio.h>

--- 4,9 -----
   */
  
! #define VERSION	"1.2.10"
! #define DATE	"30 Dec 90"
  
  #include <stdio.h>
*** old/Makefile	Fri Nov 16 15:00:36 1990
--- Makefile	Sun Dec 30 16:05:26 1990
***************
*** 89,93
  	screen.c script.c st_line.c strings.c terminal.c tty_att.c \
  	x_ascii.c x_batch.c x_extrnl.c x_menu.c x_rcv.c x_send.c x_win.c \
! 	xmodem.c
  	lint -p -Dlint input.c vcs.c
  	lint -p -Dlint waitfor.c

--- 89,93 -----
  	screen.c script.c st_line.c strings.c terminal.c tty_att.c \
  	x_ascii.c x_batch.c x_extrnl.c x_menu.c x_rcv.c x_send.c x_win.c \
! 	xmodem.c $(CURSES)
  	lint -p -Dlint input.c vcs.c
  	lint -p -Dlint waitfor.c
*** old/Readme	Fri Nov 16 14:51:24 1990
--- Readme	Sun Dec 30 12:14:57 1990
***************
*** 106,109
  			file.  Newer version of XENIX may require this.
  
  	KEEP_PORT	If defined, the port will be kept open between
  			dialing attempts to save time.  Some systems

--- 106,112 -----
  			file.  Newer version of XENIX may require this.
  
+ 	SVR4_LOCKS	If defined, the new UUCP lockfile format
+ 			introduced in SVR4 will be used.
+ 
  	KEEP_PORT	If defined, the port will be kept open between
  			dialing attempts to save time.  Some systems
*** old/Unixpc.shar	Fri Nov 16 14:51:24 1990
--- Unixpc.shar	Sun Dec 30 12:36:26 1990
***************
*** 85,89
  fi
  fi
! echo shar: "extracting 'Makefile'" '(5239 characters)'
  if test -f 'Makefile'
  then

--- 85,89 -----
  fi
  fi
! echo shar: "extracting 'Makefile'" '(5482 characters)'
  if test -f 'Makefile'
  then
***************
*** 151,159
  X	cp matches $(BIN)
  X	cp modem_break $(BIN)
- X#	rm pcomm
- X#	rm pcomm_input
- X#	rm waitfor
- X#	rm matches
- X#	rm modem_break
  X
  Xlint:

--- 151,154 -----
  X	cp matches $(BIN)
  X	cp modem_break $(BIN)
  X
  Xclean:
***************
*** 157,160
  X#	rm modem_break
  X
  Xlint:
  X	lint -p -Dlint admin.c chg_dir.c curses.c d_delete.c d_lib.c \

--- 152,162 -----
  X	cp modem_break $(BIN)
  X
+ Xclean:
+ X	rm pcomm
+ X	rm pcomm_input
+ X	rm waitfor
+ X	rm matches
+ X	rm modem_break
+ X
  Xlint:
  X	lint -p -Dlint admin.c chg_dir.c curses.c d_delete.c d_lib.c \
***************
*** 173,177
  X
  Xshar:
! X	$(SHAR) Doc > pcomm_sh.1
  X	$(SHAR) Makefile Matches.1 Modem_break.1 Pcomm.1 Pcomm.dial_dir \
  X	Pcomm.extrnl Pcomm.modem Pcomm.param Readme Release.notes Sample \

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

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

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

--- 190,199 -----
  X	$(SHAR) s_axfer.c s_extrnl.c s_gen.c s_menu.c s_modem.c \
  X	s_prompt.c s_term.c s_tty.c screen.c script.c st_line.c status.h \
! X	strings.c terminal.c > pcomm_sh.6
! X	$(SHAR) tty_att.c tty_ucb.c vcs.c vcs.h waitfor.c x_ascii.c \
! X	x_batch.c x_extrnl.c x_menu.c > pcomm_sh.7
! X	$(SHAR) x_rcv.c x_send.c x_win.c xmodem.c xmodem.h > pcomm_sh.8
! X	$(SHAR) Doc.out Matches.out Modem_break.ou Pcomm.out Waitfor.out \
! X	> pcomm_sh.9
  X
  Xadmin.o:	config.h dial_dir.h param.h
***************
*** 210,213
  Xe_lib.o:	extrnl.h
  Xexpand.o:	config.h
  Xhelp.o:		config.h misc.h
  Xinit.o:		config.h misc.h status.h

--- 213,217 -----
  Xe_lib.o:	extrnl.h
  Xexpand.o:	config.h
+ Xgetopt.o:	config.h
  Xhelp.o:		config.h misc.h
  Xinit.o:		config.h misc.h status.h
***************
*** 213,216
  Xinit.o:		config.h misc.h status.h
  Xinput.o:	config.h misc.h status.h vcs.h
  Xls_menu.o:	config.h dial_dir.h misc.h param.h
  Xm_lib.o:	modem.h

--- 217,221 -----
  Xinit.o:		config.h misc.h status.h
  Xinput.o:	config.h misc.h status.h vcs.h
+ Xlist_dir.o:	config.h misc.h
  Xls_menu.o:	config.h dial_dir.h misc.h param.h
  Xm_lib.o:	modem.h
***************
*** 229,233
  Xs_modem.o:	config.h misc.h modem.h
  Xs_prompt.o:	config.h misc.h
! Xs_term.o:	config.h misc.h param.h status.h
  Xs_tty.o:	config.h misc.h modem.h
  Xscreen.o:	config.h param.h status.h

--- 234,238 -----
  Xs_modem.o:	config.h misc.h modem.h
  Xs_prompt.o:	config.h misc.h
! Xs_term.o:	config.h dial_dir.h misc.h param.h status.h
  Xs_tty.o:	config.h misc.h modem.h
  Xscreen.o:	config.h param.h status.h
***************
*** 236,241
  Xstrings.o:	config.h
  Xterminal.o:	config.h dial_dir.h misc.h modem.h param.h status.h xmodem.h
! Xtty_att.o:	dial_dir.h param.h
! Xtty_ucb.o:	dial_dir.h param.h
  Xvcs.o:		config.h vcs.h
  Xx_ascii.o:	config.h misc.h param.h

--- 241,246 -----
  Xstrings.o:	config.h
  Xterminal.o:	config.h dial_dir.h misc.h modem.h param.h status.h xmodem.h
! Xtty_att.o:	dial_dir.h modem.h param.h
! Xtty_ucb.o:	dial_dir.h modem.h param.h
  Xvcs.o:		config.h vcs.h
  Xx_ascii.o:	config.h misc.h param.h
***************
*** 247,250
  Xx_win.o:	config.h dial_dir.h misc.h xmodem.h
  Xxmodem.o:	config.h misc.h param.h xmodem.h
  SHAR_EOF
  if test 5239 -ne "`wc -c < 'Makefile'`"

--- 252,259 -----
  Xx_win.o:	config.h dial_dir.h misc.h xmodem.h
  Xxmodem.o:	config.h misc.h param.h xmodem.h
+ X
+ Xwaitfor:	config.h waitfor.c
+ Xmatches:	matches.c
+ Xmodem_break:	config.h modem_break.c
  SHAR_EOF
  if test 5482 -ne "`wc -c < 'Makefile'`"
***************
*** 248,252
  Xxmodem.o:	config.h misc.h param.h xmodem.h
  SHAR_EOF
! if test 5239 -ne "`wc -c < 'Makefile'`"
  then
  	echo shar: "error transmitting 'Makefile'" '(should have been 5239 characters)'

--- 257,261 -----
  Xmodem_break:	config.h modem_break.c
  SHAR_EOF
! if test 5482 -ne "`wc -c < 'Makefile'`"
  then
  	echo shar: "error transmitting 'Makefile'" '(should have been 5482 characters)'
***************
*** 250,254
  if test 5239 -ne "`wc -c < 'Makefile'`"
  then
! 	echo shar: "error transmitting 'Makefile'" '(should have been 5239 characters)'
  fi
  fi

--- 259,263 -----
  if test 5482 -ne "`wc -c < 'Makefile'`"
  then
! 	echo shar: "error transmitting 'Makefile'" '(should have been 5482 characters)'
  fi
  fi
***************
*** 273,277
  fi
  fi
! echo shar: "extracting 'Readme.7300'" '(5740 characters)'
  if test -f 'Readme.7300'
  then

--- 282,286 -----
  fi
  fi
! echo shar: "extracting 'Readme.7300'" '(6084 characters)'
  if test -f 'Readme.7300'
  then
***************
*** 433,436
  X	you're running HDB UUCP and have Pcomm set-user-id to uucp, you
  X	don't need to have SETUID_BROKE defined.
  SHAR_EOF
  if test 5740 -ne "`wc -c < 'Readme.7300'`"

--- 442,452 -----
  X	you're running HDB UUCP and have Pcomm set-user-id to uucp, you
  X	don't need to have SETUID_BROKE defined.
+ X
+ X	8. The default tunable parameters for the size of INBUF and
+ X	OUTBUF for the Unix PC are rather small in order to prevent a
+ X	"choppy" appearance on the screen.  However, if you have
+ X	installed the serial patch (called "serial_pat.Z" on osu-cis),
+ X	then the nominal sizes of 64 and 32 for INBUF and OUTBUF will
+ X	provide much better performance.
  SHAR_EOF
  if test 6084 -ne "`wc -c < 'Readme.7300'`"
***************
*** 434,438
  X	don't need to have SETUID_BROKE defined.
  SHAR_EOF
! if test 5740 -ne "`wc -c < 'Readme.7300'`"
  then
  	echo shar: "error transmitting 'Readme.7300'" '(should have been 5740 characters)'

--- 450,454 -----
  X	provide much better performance.
  SHAR_EOF
! if test 6084 -ne "`wc -c < 'Readme.7300'`"
  then
  	echo shar: "error transmitting 'Readme.7300'" '(should have been 6084 characters)'
***************
*** 436,440
  if test 5740 -ne "`wc -c < 'Readme.7300'`"
  then
! 	echo shar: "error transmitting 'Readme.7300'" '(should have been 5740 characters)'
  fi
  fi

--- 452,456 -----
  if test 6084 -ne "`wc -c < 'Readme.7300'`"
  then
! 	echo shar: "error transmitting 'Readme.7300'" '(should have been 6084 characters)'
  fi
  fi
***************
*** 439,443
  fi
  fi
! echo shar: "extracting 'config.h'" '(2273 characters)'
  if test -f 'config.h'
  then

--- 455,459 -----
  fi
  fi
! echo shar: "extracting 'config.h'" '(2308 characters)'
  if test -f 'config.h'
  then
***************
*** 481,485
  X
  X/* The path to the line printer program */
! X#define	LPR		"/usr/bin/lp"
  X
  X/* The path to the "pretty" printer program (if none, use same as LPR) */

--- 497,501 -----
  X
  X/* The path to the line printer program */
! X#define	LPR		"lp"
  X
  X/* The path to the "pretty" printer program (if none, use "pr | lp") */
***************
*** 483,488
  X#define	LPR		"/usr/bin/lp"
  X
! X/* The path to the "pretty" printer program (if none, use same as LPR) */
! X#define	LPRINT		"/usr/bin/lp"
  X
  X/* The path to the default directory containing the Pcomm support files */

--- 499,504 -----
  X#define	LPR		"lp"
  X
! X/* The path to the "pretty" printer program (if none, use "pr | lp") */
! X#define	LPRINT		"pr | lp"
  X
  X/* The path to the default directory containing the Pcomm support files */
***************
*** 495,500
  X#undef	ASCII_PID
  X
! X/* Fold the last character of the lock file to lower case? */
! X#undef XENIX_LOCKS
  X
  X/* Should Pcomm optimize redialing by keeping the TTY port open */

--- 511,516 -----
  X#undef	ASCII_PID
  X
! X/* Fold the last character of the lock to lower case? */
! X#undef	XENIX_LOCKS
  X
  X/* Use the new SVR4 lock format? */
***************
*** 498,501
  X#undef XENIX_LOCKS
  X
  X/* Should Pcomm optimize redialing by keeping the TTY port open */
  X#define	KEEP_PORT

--- 514,520 -----
  X#undef	XENIX_LOCKS
  X
+ X/* Use the new SVR4 lock format? */
+ X#undef	SVR4_LOCKS
+ X
  X/* Should Pcomm optimize redialing by keeping the TTY port open */
  X#define	KEEP_PORT
***************
*** 528,532
  X#endif /* OLDCURSES */
  SHAR_EOF
! if test 2273 -ne "`wc -c < 'config.h'`"
  then
  	echo shar: "error transmitting 'config.h'" '(should have been 2273 characters)'

--- 547,551 -----
  X#endif /* OLDCURSES */
  SHAR_EOF
! if test 2308 -ne "`wc -c < 'config.h'`"
  then
  	echo shar: "error transmitting 'config.h'" '(should have been 2308 characters)'
***************
*** 530,534
  if test 2273 -ne "`wc -c < 'config.h'`"
  then
! 	echo shar: "error transmitting 'config.h'" '(should have been 2273 characters)'
  fi
  fi

--- 549,553 -----
  if test 2308 -ne "`wc -c < 'config.h'`"
  then
! 	echo shar: "error transmitting 'config.h'" '(should have been 2308 characters)'
  fi
  fi
*** old/admin.c	Fri Nov 16 14:51:24 1990
--- admin.c	Sun Dec 30 14:00:32 1990
***************
*** 23,27
  #ifdef LOG_CALLS
  	FILE *fp;
! 	char *number, *build_num(), *date, *ctime(), *getlogin(), buf[80];
  	long now, time();
  	void error_win();

--- 23,28 -----
  #ifdef LOG_CALLS
  	FILE *fp;
! 	char *number, *date, *ctime(), *getlogin(), buf[80];
! 	static char *build_num();
  	long now, time();
  	void error_win();
***************
*** 57,61
  {
  #ifdef LIMIT_LD
! 	char *number, *build_num(), *name, *getlogin();
  	struct group *getgrnam(), *grpbuf;
  

--- 58,63 -----
  {
  #ifdef LIMIT_LD
! 	char *number, *name, *getlogin();
! 	static char *build_num();
  	struct group *getgrnam(), *grpbuf;
  
*** old/config.h	Fri Nov 16 14:51:25 1990
--- config.h	Sun Dec 30 12:52:04 1990
***************
*** 51,54
  /* Fold the last character of the lock to lower case? */
  #undef	XENIX_LOCKS
  
  /* Should Pcomm optimize redialing by keeping the TTY port open */

--- 51,57 -----
  /* Fold the last character of the lock to lower case? */
  #undef	XENIX_LOCKS
+ 
+ /* Use the new SVR4 lock format? */
+ #undef	SVR4_LOCKS
  
  /* Should Pcomm optimize redialing by keeping the TTY port open */
*** old/curses.c	Fri Nov 16 14:51:25 1990
--- curses.c	Sun Dec 30 13:58:45 1990
***************
*** 399,403
  unsigned int sec;
  {
! 	int key, wk_force();
  	unsigned int alarm();
  	char c;

--- 399,404 -----
  unsigned int sec;
  {
! 	int key;
! 	static int wk_force();
  	unsigned int alarm();
  	char c;
*** old/d_manual.c	Fri Nov 16 14:51:25 1990
--- d_manual.c	Sun Dec 30 14:01:07 1990
***************
*** 18,22
  	WINDOW *m_win, *newwin();
  	char *number, *str_rep(), *get_str(), ld_code, *strchr();
! 	void fix_xmc(), free_ptr();
  
  	m_win = newwin(5, 50, 0, 20);

--- 18,23 -----
  	WINDOW *m_win, *newwin();
  	char *number, *str_rep(), *get_str(), ld_code, *strchr();
! 	void free_ptr();
! 	static void fix_xmc();
  
  	m_win = newwin(5, 50, 0, 20);
*** old/d_menu.c	Fri Nov 16 14:51:25 1990
--- d_menu.c	Sun Dec 30 14:02:06 1990
***************
*** 23,27
  	char buf[5], ld_code;
  	int ans, start, needs_repair, count, x, y, i, ret_code;
! 	void dir_scroll(), active_ld(), disp_ld(), print_dir(), st_line();
  
  	touchwin(stdscr);

--- 23,28 -----
  	char buf[5], ld_code;
  	int ans, start, needs_repair, count, x, y, i, ret_code;
! 	void print_dir(), st_line();
! 	static void dir_scroll(), active_ld(), disp_ld();
  
  	touchwin(stdscr);
*** old/d_print.c	Fri Nov 16 14:51:25 1990
--- d_print.c	Sun Dec 30 14:02:43 1990
***************
*** 18,22
  	FILE *fp, *popen(), *my_fopen();
  	WINDOW *p_win, *newwin();
! 	char *ans, *file, *e_get_str(), buf[100], *expand();
  	int is_printer, i;
  	void error_win();

--- 18,23 -----
  	FILE *fp, *popen(), *my_fopen();
  	WINDOW *p_win, *newwin();
! 	char *ans, *file, buf[100], *expand();
! 	static char *e_get_str();
  	int is_printer, i;
  	void error_win();
*** old/d_revise.c	Fri Nov 16 14:51:25 1990
--- d_revise.c	Sun Dec 30 14:03:19 1990
***************
*** 16,20
  	WINDOW *r_win, *newwin();
  	int count, dir_flag, param_flag, num, x, y, save;
! 	char ans, buf[40], *ld, *ld_prompt(), *str_rep();
  
  	r_win = newwin(7, 77, 7, 2);

--- 16,21 -----
  	WINDOW *r_win, *newwin();
  	int count, dir_flag, param_flag, num, x, y, save;
! 	char ans, buf[40], *ld, *str_rep();
! 	static char *ld_prompt();
  
  	r_win = newwin(7, 77, 7, 2);
*** old/di_win.c	Fri Nov 16 14:51:26 1990
--- di_win.c	Sun Dec 30 14:04:41 1990
***************
*** 26,29
  	WINDOW *di_win, *newwin();
  	int i, j, key, want_out, pass, tic, baud;
  	long now, time();
  	char *tbuf, *ctime(), *str, cr=13, *read_codes();

--- 26,30 -----
  	WINDOW *di_win, *newwin();
  	int i, j, key, want_out, pass, tic, baud;
+ 	static int can_sync();
  	long now, time();
  	char *tbuf, *ctime(), *str, cr=13, *read_codes();
***************
*** 28,32
  	long now, time();
  	char *tbuf, *ctime(), *str, cr=13, *read_codes();
! 	void disp_queue(), dial_it(), delay_times(), input_off();
  	void error_win(), line_set(), hang_up(), zap_vs(), log_calls();
  	void st_line();

--- 29,33 -----
  	long now, time();
  	char *tbuf, *ctime(), *str, cr=13, *read_codes();
! 	void dial_it(), delay_times(), input_off();
  	void error_win(), line_set(), hang_up(), zap_vs(), log_calls();
  	static void disp_queue();
***************
*** 30,34
  	void disp_queue(), dial_it(), delay_times(), input_off();
  	void error_win(), line_set(), hang_up(), zap_vs(), log_calls();
! 	void st_line();
  	unsigned int sleep();
  					/* are we already talking? */

--- 31,35 -----
  	void dial_it(), delay_times(), input_off();
  	void error_win(), line_set(), hang_up(), zap_vs(), log_calls();
! 	static void disp_queue();
  	unsigned int sleep();
  					/* are we already talking? */
*** old/dial.c	Fri Nov 16 14:51:26 1990
--- dial.c	Sun Dec 30 15:39:03 1990
***************
*** 126,129
  			n++;
  		}
  		return;
  	}

--- 126,135 -----
  			n++;
  		}
+ 		/*
+ 		 * It seems that the OBM doesn't always talk reliably to
+ 		 * other types of modems (most notibly Telebits).  Here
+ 		 * is some witchcraft to fix the problem.
+ 		 */
+ 		ioctl(fd, PIOCOVSPD);
  		return;
  	}
***************
*** 148,152
  	char *strchr();
  	unsigned int sleep();
! 	void do_pause();
  					/* empty string? */
  	if (s == NULL || *s == '\0')

--- 154,158 -----
  	char *strchr();
  	unsigned int sleep();
! 	static void do_pause();
  					/* empty string? */
  	if (s == NULL || *s == '\0')
***************
*** 241,245
   */
  
- char rc_buf[512];
  int rc_index;
  

--- 247,250 -----
   */
  
  int rc_index;
  
***************
*** 249,252
  	extern int fd;
  	int i;
  	char c;
  #ifdef UNIXPC

--- 254,258 -----
  	extern int fd;
  	int i;
+ 	static int match();
  	char c;
  	static char rc_buf[512];
***************
*** 250,253
  	int i;
  	char c;
  #ifdef UNIXPC
  	unsigned int sleep();

--- 256,260 -----
  	static int match();
  	char c;
+ 	static char rc_buf[512];
  #ifdef UNIXPC
  	unsigned int sleep();
***************
*** 394,398
   */
  
! void
  do_pause()
  {

--- 401,405 -----
   */
  
! static void
  do_pause()
  {
*** old/ls_menu.c	Fri Nov 16 14:51:27 1990
--- ls_menu.c	Sun Dec 30 14:05:32 1990
***************
*** 21,25
  	WINDOW *l_win, *newwin();
  	int num, ret_code;
! 	void disp_settings();
  
  	l_win = newwin(20, 47, 0, 16);

--- 21,25 -----
  	WINDOW *l_win, *newwin();
  	int num, ret_code;
! 	static void disp_settings();
  
  	l_win = newwin(20, 47, 0, 16);
*** old/macro.c	Fri Nov 16 14:51:27 1990
--- macro.c	Sun Dec 30 14:05:58 1990
***************
*** 17,21
  	WINDOW *ma_win, *newwin();
  	int ans, changed;
! 	char *mac, *str_rep(), *mac_prompt();
  
  	ma_win = newwin(18, 65, 2, 15);

--- 17,22 -----
  	WINDOW *ma_win, *newwin();
  	int ans, changed;
! 	char *mac, *str_rep();
! 	static char *mac_prompt();
  
  	ma_win = newwin(18, 65, 2, 15);
*** old/main.c	Fri Nov 16 14:51:27 1990
--- main.c	Sun Dec 30 15:35:52 1990
***************
*** 22,25
   *	Patch #8	20 Jan 90
   *	Patch #9	 1 Sep 90
   */
  

--- 22,26 -----
   *	Patch #8	20 Jan 90
   *	Patch #9	 1 Sep 90
+  *	Patch #10	30 Dec 90
   */
  
***************
*** 72,76
  {
  	extern char *optarg;
! 	int c, i, code, quit();
  	char *mytty, *ttyname(), *term, *getenv(), *sys_name, *str_dup();
  	char *extra_dir, buf[80], message[80];

--- 73,78 -----
  {
  	extern char *optarg;
! 	int c, i, code;
! 	static int quit(), match_ci();
  	char *mytty, *ttyname(), *term, *getenv(), *sys_name, *str_dup();
  	char *extra_dir, buf[80], message[80];
***************
*** 223,227
   */
  
! int
  quit()
  {

--- 225,229 -----
   */
  
! static int
  quit()
  {
***************
*** 326,329
   */
  
  match_ci(s1, s2)
  char *s1, *s2;

--- 328,332 -----
   */
  
+ static int
  match_ci(s1, s2)
  char *s1, *s2;
*** old/passthru.c	Fri Nov 16 14:51:28 1990
--- passthru.c	Sun Dec 30 14:07:15 1990
***************
*** 22,26
  	WINDOW *pt_win, *newwin();
  	int num;
! 	void cpio(), error_win();
  
  	pt_win = newwin(5, 70, 5, 5);

--- 22,27 -----
  	WINDOW *pt_win, *newwin();
  	int num;
! 	void error_win();
! 	static void cpio();
  
  	pt_win = newwin(5, 70, 5, 5);
***************
*** 80,84
  {
  	extern int fd;
! 	int cpid, n, cp_force();
  	char buf[CLIST_SIZ];
  	unsigned int alarm(), sleep();

--- 81,86 -----
  {
  	extern int fd;
! 	int cpid, n;
! 	static int cp_force();
  	char buf[CLIST_SIZ];
  	unsigned int alarm(), sleep();
*** old/port.c	Fri Nov 16 14:51:28 1990
--- port.c	Sun Dec 30 14:08:37 1990
***************
*** 27,30
  #endif /* XENIX_LOCKS */
  
  static int getty_status = 0;
  static char *lock_path = NULL;

--- 27,36 -----
  #endif /* XENIX_LOCKS */
  
+ #ifdef SVR4_LOCKS
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/mkdev.h>
+ #endif /* SVR4_LOCKS */
+ 
  static int getty_status = 0;
  static char *lock_path = NULL;
***************
*** 41,44
  	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();

--- 47,51 -----
  	register int i;
  	int j, k, lfd, list[NUM_TTY], cmask, is_dev, progpid;
+ 	static int set_getty(), checklock(), ck_speed();
  	char file[80], buf[80], message[80], *str_rep(), *last_c;
  	void error_win(), line_set(), release_port(), send_str();
***************
*** 117,120
  	while (list[i] != -1) {
  					/* create a lock file name */
  		sprintf(file, "%s/LCK..%s", LOCK_DIR, modem->tty[list[i]]);
  

--- 124,133 -----
  	while (list[i] != -1) {
  					/* create a lock file name */
+ #ifdef SVR4_LOCKS
+ 		struct stat sbuf;
+ 		sprintf(buf, "/dev/%s", modem->tty[list[i]]);
+ 		stat(buf, &sbuf);
+ 		sprintf(file, "%s/LK.%03d.%03d.%03d", LOCK_DIR, major(sbuf.st_dev), major(sbuf.st_rdev), minor(sbuf.st_rdev));
+ #else /* SVR4_LOCKS */
  		sprintf(file, "%s/LCK..%s", LOCK_DIR, modem->tty[list[i]]);
  #endif /* SVR4_LOCKS */
***************
*** 118,121
  					/* create a lock file name */
  		sprintf(file, "%s/LCK..%s", LOCK_DIR, modem->tty[list[i]]);
  
  #ifdef XENIX_LOCKS

--- 131,135 -----
  #else /* SVR4_LOCKS */
  		sprintf(file, "%s/LCK..%s", LOCK_DIR, modem->tty[list[i]]);
+ #endif /* SVR4_LOCKS */
  
  #ifdef XENIX_LOCKS
***************
*** 211,215
  	extern char *null_ptr;
  	char buf[80];
! 	void free_ptr(), hang_up(), reset_line();
  
  	/*

--- 225,229 -----
  	extern char *null_ptr;
  	char buf[80];
! 	void free_ptr(), hang_up(), reset_line(), error_win();
  
  	/*
***************
*** 367,370
  	int i, mod;
  	char buf[60];
  					/* find the modem database */
  	mod = -1;

--- 381,385 -----
  	int i, mod;
  	char buf[60];
+ 	void error_win();
  					/* find the modem database */
  	mod = -1;
*** old/s_extrnl.c	Fri Nov 16 14:51:28 1990
--- s_extrnl.c	Sun Dec 30 14:09:38 1990
***************
*** 16,19
  	WINDOW *ext_win, *newwin();
  	int i, ret_code;
  	char *str, *get_str();
  	void disp_ext();

--- 16,20 -----
  	WINDOW *ext_win, *newwin();
  	int i, ret_code;
+ 	static int ext_prompt();
  	char *str, *get_str();
  	static void disp_ext();
***************
*** 17,21
  	int i, ret_code;
  	char *str, *get_str();
! 	void disp_ext();
  
  	ext_win = newwin(23, 80, 0, 0);

--- 18,22 -----
  	static int ext_prompt();
  	char *str, *get_str();
! 	static void disp_ext();
  
  	ext_win = newwin(23, 80, 0, 0);
*** old/s_gen.c	Fri Nov 16 14:51:28 1990
--- s_gen.c	Sun Dec 30 13:08:16 1990
***************
*** 95,98
  					ret_code++;
  				}
  			case 9:
  				if ((ans = menu_prompt(g_win, 14, 50, "Aborted downloads", v_abort)) != NULL) {

--- 95,99 -----
  					ret_code++;
  				}
+ 				break;
  			case 9:
  				if ((ans = menu_prompt(g_win, 14, 50, "Aborted downloads", v_abort)) != NULL) {
*** old/s_menu.c	Fri Nov 16 14:51:28 1990
--- s_menu.c	Sun Dec 30 15:39:55 1990
***************
*** 17,21
  	int ret_code;
  	static int param_flag = 0, modem_flag = 0, ext_flag = 0;
! 	void top_line();
  
  	s_win = newwin(23, 80, 0, 0);

--- 17,21 -----
  	int ret_code;
  	static int param_flag = 0, modem_flag = 0, ext_flag = 0;
! 	static void top_line();
  
  	s_win = newwin(23, 80, 0, 0);
***************
*** 142,146
   */
  
! void
  top_line(win)
  WINDOW *win;

--- 142,146 -----
   */
  
! static void
  top_line(win)
  WINDOW *win;
*** old/s_modem.c	Fri Nov 16 14:51:29 1990
--- s_modem.c	Sun Dec 30 14:10:31 1990
***************
*** 14,18
  {
  	WINDOW *mo_win, *newwin();
! 	int i, j, ret_code, mod_prompt();
  	char *ans, *str_rep(), *str_prompt(), *menu_prompt();
  	void disp_modem();

--- 14,19 -----
  {
  	WINDOW *mo_win, *newwin();
! 	int i, j, ret_code;
! 	static int mod_prompt();
  	char *ans, *str_rep(), *str_prompt(), *menu_prompt();
  	static void disp_modem();
***************
*** 16,20
  	int i, j, ret_code, mod_prompt();
  	char *ans, *str_rep(), *str_prompt(), *menu_prompt();
! 	void disp_modem();
  	extern char *v_yn[];
  					/* the current modem */

--- 17,21 -----
  	static int mod_prompt();
  	char *ans, *str_rep(), *str_prompt(), *menu_prompt();
! 	static void disp_modem();
  	extern char *v_yn[];
  					/* the current modem */
***************
*** 159,162
  	char ans;
  	int i;
  					/* print prompt lines */
  	mvwaddstr(win, 22, 0, "Press any key to change, or <CR> to accept");

--- 160,164 -----
  	char ans;
  	int i;
+ 	void disp_modem();
  					/* print prompt lines */
  	mvwaddstr(win, 22, 0, "Press any key to change, or <CR> to accept");
*** old/s_tty.c	Fri Nov 16 14:51:29 1990
--- s_tty.c	Sun Dec 30 14:11:42 1990
***************
*** 16,21
  	char message[80], *str, *get_str();
  	int num, i, j, ret_code;
! 	void disp_tty(), create_modem(), del_modem(), error_win();
! 	void del_tty();
  
  	tt_win = newwin(23, 80, 0, 0);

--- 16,22 -----
  	char message[80], *str, *get_str();
  	int num, i, j, ret_code;
! 	static int tty_prompt();
! 	void create_modem(), del_modem(), error_win();
! 	static void disp_tty(), del_tty();
  
  	tt_win = newwin(23, 80, 0, 0);
*** old/script.c	Fri Nov 16 14:51:29 1990
--- script.c	Thu Nov 29 19:06:17 1990
***************
*** 27,30
  
  #ifdef BSD
  #include <sys/file.h>
  #else /* BSD */

--- 27,33 -----
  
  #ifdef BSD
+ #ifndef SIGCLD
+ #define SIGCLD SIGCHLD
+ #endif /* SIGCLD */
  #include <sys/file.h>
  #else /* BSD */
***************
*** 37,41
  {
  	extern int fd, errno;
! 	SIG_TYPE (*istat)(), (*qstat)();
  	int epid, dup_pipe[2], want_out;
  	char buf[80], *ttyname(), *strcpy(), *path, *findfile();

--- 40,44 -----
  {
  	extern int fd, errno;
! 	SIG_TYPE (*istat)(), (*qstat)(), (*cstat)();
  	int epid, dup_pipe[2], want_out;
  	char buf[80], *path, *findfile();
***************
*** 39,43
  	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();
  

--- 42,46 -----
  	SIG_TYPE (*istat)(), (*qstat)(), (*cstat)();
  	int epid, dup_pipe[2], want_out;
! 	char buf[80], *path, *findfile();
  	void _exit(), error_win(), input_off(), do_input();
  
***************
*** 78,84
  		setpgrp();
  #endif /* BSD */
- 					/* recreate the device name */
- 		strcpy(buf, ttyname(fd));
- 		close(fd);
  					/* swap the stdin */
  		close(0);

--- 81,84 -----
  		setpgrp();
  #endif /* BSD */
  					/* swap the stdin */
  		close(0);
***************
*** 86,101
  					/* swap the stdout */
  		close(1);
! #ifdef UNIXPC
! /*
!  * Some strange things here... The OBM uses the second parameter of 
!  * open() to determine if the the port should be in the DATA mode or
!  * the VOICE mode.  Therefore, we must always open with read and write.
!  */
! 		if (!strncmp(buf, "/dev/ph", 7))
! 			open(buf, O_RDWR);
! 		else
! #endif /* UNIXPC */
! 
! 		open(buf, O_WRONLY);
  #ifdef SETUGID
  		setgid(getgid());

--- 86,90 -----
  					/* swap the stdout */
  		close(1);
! 		dup(fd);
  #ifdef SETUGID
  		setgid(getgid());
***************
*** 108,111
  	istat = signal(SIGINT, SIG_IGN);
  	qstat = signal(SIGQUIT, SIG_IGN);
  
  	/*

--- 97,101 -----
  	istat = signal(SIGINT, SIG_IGN);
  	qstat = signal(SIGQUIT, SIG_IGN);
+ 	cstat = signal(SIGCLD, SIG_IGN);
  
  	/*
***************
*** 134,138
  			break;
  					/* see if the process it still active */
- #ifdef BSD
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
  #else /* BSD */

--- 124,127 -----
  			break;
  					/* see if the process it still active */
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
  			break;
***************
*** 136,142
  #ifdef BSD
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
- #else /* BSD */
- 		if ((kill(-epid, 0) == -1) && errno == ESRCH) 
- #endif /* BSD */
  			break;
  	}

--- 125,128 -----
  					/* see if the process it still active */
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
  			break;
  	}
***************
*** 144,147
  	signal(SIGINT, istat);
  	signal(SIGQUIT, qstat);
  					/* shut down the duplication of input */
  	status->dup_fd = -1;

--- 130,134 -----
  	signal(SIGINT, istat);
  	signal(SIGQUIT, qstat);
+ 	signal(SIGCLD, cstat);
  					/* shut down the duplication of input */
  	status->dup_fd = -1;
*** old/terminal.c	Fri Nov 16 14:51:29 1990
--- terminal.c	Fri Nov 16 14:52:59 1990
***************
*** 428,431
  {
  	extern int fd;
  	void send_str(), st_line(), line_set();
  	char buf[80];

--- 428,432 -----
  {
  	extern int fd;
+ 	int junk;
  	void send_str(), st_line(), line_set();
  	char buf[80];
***************
*** 468,472
  		sleep(1);
  		sprintf(buf, "/dev/%s", modem->tty[modem->t_cur]);
! 		close(open(buf, O_RDWR));
  	}
  

--- 469,474 -----
  		sleep(1);
  		sprintf(buf, "/dev/%s", modem->tty[modem->t_cur]);
! 		junk = open(buf, O_RDWR);
! 		close(junk);
  	}
  
*** old/tty_att.c	Fri Nov 16 14:51:29 1990
--- tty_att.c	Sun Dec 30 13:40:34 1990
***************
*** 14,18
  #include "param.h"
  
! struct termio hold;
  
  /*

--- 14,18 -----
  #include "param.h"
  
! static struct termio hold;
  
  /*
***************
*** 126,129
  reset_line()
  {
  	ioctl(fd, TCSETAF, &hold);
  	return;

--- 126,131 -----
  reset_line()
  {
+ 	extern int fd;
+ 
  	ioctl(fd, TCSETAF, &hold);
  	return;
*** old/tty_ucb.c	Fri Nov 16 14:51:30 1990
--- tty_ucb.c	Sun Dec 30 13:40:40 1990
***************
*** 10,14
  #include "param.h"
  
! struct sgttyb hold;
  
  /*

--- 10,14 -----
  #include "param.h"
  
! static struct sgttyb hold;
  
  /*
***************
*** 113,116
  reset_line()
  {
  	ioctl(fd, TIOCSETP, &hold);
  	return;

--- 113,118 -----
  reset_line()
  {
+ 	extern int fd;
+ 
  	ioctl(fd, TIOCSETP, &hold);
  	return;
*** old/vcs.c	Fri Nov 16 14:51:30 1990
--- vcs.c	Sun Dec 30 16:02:17 1990
***************
*** 29,33
  	extern int vcs_codes[NUM_VCS][VCS_SIZE], vcs_leadin[NUM_VCS];
  	extern int num_leadin;
! 	static int vcs_buf[VCS_SIZE];
  	static int ptr = 0;
  	register int i;

--- 29,33 -----
  	extern int vcs_codes[NUM_VCS][VCS_SIZE], vcs_leadin[NUM_VCS];
  	extern int num_leadin;
! 	static int vcs_buf[VCS_SIZE], match_codes();
  	static int ptr = 0;
  	register int i;
***************
*** 186,189
  	extern int vcs_leadin[NUM_VCS], num_leadin, max_row, max_col;
  	int i, j, k, match, temp[VCS_SIZE];
  	char *p, *strcpy(), buf[VCS_SIZE], *getenv();
  	char *tparm();			/* comment out, if required */

--- 186,190 -----
  	extern int vcs_leadin[NUM_VCS], num_leadin, max_row, max_col;
  	int i, j, k, match, temp[VCS_SIZE];
+ 	static int substr();
  	char *p, *strcpy(), buf[VCS_SIZE], *getenv();
  	char *tparm();			/* comment out, if required */
***************
*** 188,192
  	char *p, *strcpy(), buf[VCS_SIZE], *getenv();
  	char *tparm();			/* comment out, if required */
! 	void fake_it();
  
  #ifdef OLDCURSES

--- 189,193 -----
  	char *p, *strcpy(), buf[VCS_SIZE], *getenv();
  	char *tparm();			/* comment out, if required */
! 	static void fake_it();
  
  #ifdef OLDCURSES
***************
*** 457,460
   * the padding removed.
   */
  static void
  fake_it(s)

--- 458,462 -----
   * the padding removed.
   */
+ 
  static void
  fake_it(s)
***************
*** 461,465
  char *s;
  {
! 	int fake_putc();
  
  	putc_cnt = 0;

--- 463,467 -----
  char *s;
  {
! 	static int fake_putc();
  
  	putc_cnt = 0;
*** old/waitfor.c	Fri Nov 16 14:51:30 1990
--- waitfor.c	Sun Dec 30 15:44:51 1990
***************
*** 98,102
  
  /* ARGSUSED */
! static int
  wf_force(dummy)
  int dummy;

--- 98,102 -----
  
  /* ARGSUSED */
! int
  wf_force(dummy)
  int dummy;
*** old/x_ascii.c	Fri Nov 16 14:51:30 1990
--- x_ascii.c	Sun Dec 30 14:24:05 1990
***************
*** 23,27
  	int cr_lf;
  	char *file, *strtok();
! 	void send_ascii(), rcv_ascii(), line_set(), st_line(), suspend();
  	void load_vs(), ascii_mode(), input_off(), term_mode();
  	unsigned int sleep();

--- 23,27 -----
  	int cr_lf;
  	char *file, *strtok();
! 	void line_set(), st_line(), suspend();
  	void load_vs(), ascii_mode(), input_off(), term_mode();
  	static void send_ascii(), rcv_ascii();
***************
*** 25,28
  	void send_ascii(), rcv_ascii(), line_set(), st_line(), suspend();
  	void load_vs(), ascii_mode(), input_off(), term_mode();
  	unsigned int sleep();
  

--- 25,29 -----
  	void line_set(), st_line(), suspend();
  	void load_vs(), ascii_mode(), input_off(), term_mode();
+ 	static void send_ascii(), rcv_ascii();
  	unsigned int sleep();
  
***************
*** 177,180
  	FILE *fp, *my_fopen();
  	int i, strip_cr, strip_lf, add_cr, add_lf, got_first;
  	unsigned int delay;
  	char c, buf[80];

--- 178,182 -----
  	FILE *fp, *my_fopen();
  	int i, strip_cr, strip_lf, add_cr, add_lf, got_first;
+ 	static int bgetc_line();
  	unsigned int delay;
  	char c, buf[80];
***************
*** 260,264
  unsigned int sec;
  {
! 	int c, bl_force();
  	unsigned int alarm();
  

--- 262,267 -----
  unsigned int sec;
  {
! 	int c;
! 	static int buf_read(), bl_force();
  	unsigned int alarm();
  
*** old/x_batch.c	Fri Nov 16 14:51:30 1990
--- x_batch.c	Sun Dec 30 15:34:38 1990
***************
*** 20,24
  char *name;
  {
! 	char *new_name, *fix_name();
  	unsigned char sum, calc_sum();
  

--- 20,25 -----
  char *name;
  {
! 	char *new_name;
! 	static char *fix_name();
  	unsigned char sum, calc_sum();
  
***************
*** 85,89
  	unsigned char sum, calc_sum();
  	char temp_name[13];
! 	void change_name(), unfix_name();
  
  	err_method = default_err;

--- 86,90 -----
  	unsigned char sum, calc_sum();
  	char temp_name[13];
! 	static void change_name(), unfix_name();
  
  	err_method = default_err;
***************
*** 109,112
  				wrefresh(win);
  				err_count++;
  			case ACK:	/* ready to go... */
  				got_it++;

--- 110,114 -----
  				wrefresh(win);
  				err_count++;
+ 				break;
  			case ACK:	/* ready to go... */
  				got_it++;
***************
*** 118,121
  				err_count++;
  		}
  	}
  	if (!got_it)

--- 120,125 -----
  				err_count++;
  		}
+ 		if (got_it)
+ 			break;
  	}
  	if (!got_it)
***************
*** 229,232
  	int code, length_is_at;
  	long atol();
  
  	file_length = 0L;

--- 233,237 -----
  	int code, length_is_at;
  	long atol();
+ 	static void change_name();
  
  	file_length = 0L;
***************
*** 261,265
   */
  
! void
  change_name(win, str)
  WINDOW *win;

--- 266,270 -----
   */
  
! static void
  change_name(win, str)
  WINDOW *win;
***************
*** 323,327
   */
  
! char *
  fix_name(path)
  char *path;

--- 328,332 -----
   */
  
! static char *
  fix_name(path)
  char *path;
***************
*** 368,372
   */
  
! void
  unfix_name(cpm_name)
  char *cpm_name;

--- 373,377 -----
   */
  
! static void
  unfix_name(cpm_name)
  char *cpm_name;
***************
*** 375,379
  	register int i, n;
  	int dot;
! 	char temp[15];
  
  	file_name[0] = '\0';

--- 380,384 -----
  	register int i, n;
  	int dot;
! 	char temp[15], *strcpy();
  
  	file_name[0] = '\0';
*** old/x_extrnl.c	Fri Nov 16 14:51:30 1990
--- x_extrnl.c	Thu Nov 29 19:05:22 1990
***************
*** 20,23
  
  #ifdef BSD
  #include <sys/file.h>
  #else /* BSD */

--- 20,26 -----
  
  #ifdef BSD
+ #ifndef SIGCLD
+ #define SIGCLD SIGCHLD
+ #endif /* SIGCLD */
  #include <sys/file.h>
  #else /* BSD */
***************
*** 31,35
  	extern int fd, errno;
  	WINDOW *xt_win, *newwin();
! 	SIG_TYPE (*istat)(), (*qstat)();
  	int epid, want_out;
  	char buf[80], *ttyname(), *strcpy();

--- 34,38 -----
  	extern int fd, errno;
  	WINDOW *xt_win, *newwin();
! 	SIG_TYPE (*istat)(), (*qstat)(), (*cstat)();
  	int epid, want_out;
  	unsigned int sleep();
***************
*** 33,37
  	SIG_TYPE (*istat)(), (*qstat)();
  	int epid, want_out;
- 	char buf[80], *ttyname(), *strcpy();
  	unsigned int sleep();
  	void _exit(), input_off();

--- 36,39 -----
  	SIG_TYPE (*istat)(), (*qstat)(), (*cstat)();
  	int epid, want_out;
  	unsigned int sleep();
  	void _exit(), input_off();
***************
*** 40,43
  					/* a full window */
  	xt_win = newwin(LINES, COLS, 0, 0);
  	touchwin(xt_win);
  	wrefresh(xt_win);

--- 42,46 -----
  					/* a full window */
  	xt_win = newwin(LINES, COLS, 0, 0);
+ 	nl();
  	touchwin(xt_win);
  	wrefresh(xt_win);
***************
*** 50,56
  		setpgrp();
  #endif /* BSD */
- 					/* recreate the device name */
- 		strcpy(buf, ttyname(fd));
- 		close(fd);
  					/* swap the stdin */
  		close(0);

--- 53,56 -----
  		setpgrp();
  #endif /* BSD */
  					/* swap the stdin */
  		close(0);
***************
*** 55,69
  					/* swap the stdin */
  		close(0);
! #ifdef UNIXPC
! /*
!  * Some strange things here... The OBM uses the second parameter of 
!  * open() to determine if the port should be in the DATA mode or
!  * the VOICE mode.  Therefore, we must always open with read and write.
!  */
! 		if (!strncmp(buf, "/dev/ph", 7))
! 			open(buf, O_RDWR);
! 		else
! #endif /* UNIXPC */
! 		open(buf, O_RDONLY);
  					/* swap the stdout */
  		close(1);

--- 55,59 -----
  					/* swap the stdin */
  		close(0);
! 		dup(fd);
  					/* swap the stdout */
  		close(1);
***************
*** 68,77
  					/* swap the stdout */
  		close(1);
! #ifdef UNIXPC
! 		if (!strncmp(buf, "/dev/ph", 7))
! 			open(buf, O_RDWR);
! 		else
! #endif /* UNIXPC */
! 		open(buf, O_WRONLY);
  #ifdef SETUGID
  		setgid(getgid());

--- 58,62 -----
  					/* swap the stdout */
  		close(1);
! 		dup(fd);
  #ifdef SETUGID
  		setgid(getgid());
***************
*** 83,86
  	istat = signal(SIGINT, SIG_IGN);
  	qstat = signal(SIGQUIT, SIG_IGN);
  
  	/*

--- 68,72 -----
  	istat = signal(SIGINT, SIG_IGN);
  	qstat = signal(SIGQUIT, SIG_IGN);
+ 	cstat = signal(SIGCLD, SIG_IGN);
  
  	/*
***************
*** 109,113
  			break;
  					/* see if the process it still active */
- #ifdef BSD
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
  #else /* BSD */

--- 95,98 -----
  			break;
  					/* see if the process it still active */
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
  			break;
***************
*** 111,117
  #ifdef BSD
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
- #else /* BSD */
- 		if ((kill(-epid, 0) == -1) && errno == ESRCH) 
- #endif /* BSD */
  			break;
  	}

--- 96,99 -----
  					/* see if the process it still active */
  		if ((kill(epid, 0) == -1) && errno == ESRCH) 
  			break;
  	}
***************
*** 119,122
  	signal(SIGINT, istat);
  	signal(SIGQUIT, qstat);
  					/* the tty may have been clobbered */
  	sleep(1);

--- 101,105 -----
  	signal(SIGINT, istat);
  	signal(SIGQUIT, qstat);
+ 	signal(SIGCLD, cstat);
  					/* the tty may have been clobbered */
  	sleep(1);
***************
*** 122,125
  	sleep(1);
  	fixterm();
  
  	clearok(curscr, TRUE);

--- 105,109 -----
  	sleep(1);
  	fixterm();
+ 	nonl();
  
  	clearok(curscr, TRUE);
*** old/x_menu.c	Fri Nov 16 14:51:30 1990
--- x_menu.c	Sun Dec 30 14:14:34 1990
***************
*** 21,26
  	extern char *null_ptr;
  	WINDOW *xm_win, *newwin();
! 	char buf[2048], *list, *get_names(), *get_extrnl(), *strcat();
! 	char *strcpy();
  	int type, is_batch, i, ans, num_extrnl, n, ret_code;
  	void xfer_win(), xfer_ascii(), do_extrnl(), error_win();

--- 21,26 -----
  	extern char *null_ptr;
  	WINDOW *xm_win, *newwin();
! 	char buf[2048], *list, *strcat(), *strcpy();
! 	static char *get_names(), *get_extrnl();
  	int type, is_batch, i, ans, num_extrnl, n, ret_code;
  	void xfer_win(), xfer_ascii(), do_extrnl(), error_win();
*** old/x_rcv.c	Fri Nov 16 14:51:30 1990
--- x_rcv.c	Sun Dec 30 14:15:17 1990
***************
*** 29,32
  	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;

--- 29,33 -----
  	int i, default_err, is_batch, max_block, code, file_count, got_hdr;
  	int hours, mins, secs, len;
+ 	static int send_first();
  	long block, recv, partial;
  	float percent, performance;
*** old/x_send.c	Fri Nov 16 14:51:30 1990
--- x_send.c	Sun Dec 30 14:15:56 1990
***************
*** 27,30
  	int small_blocks, err_count, got_it, num, is_batch, code;
  	int max_block, default_err;
  	long size, block, sent, xmit_size;
  	char *file, *strtok(), *name, *strrchr();

--- 27,31 -----
  	int small_blocks, err_count, got_it, num, is_batch, code;
  	int max_block, default_err;
+ 	static int rcv_first();
  	long size, block, sent, xmit_size;
  	char *file, *strtok(), *name, *strrchr();
***************
*** 445,448
  	int i, err_count;
  	void cancel_xfer();
  
  	err_count = 0;

--- 446,450 -----
  	int i, err_count;
  	void cancel_xfer();
+ 	unsigned int sleep();
  
  	err_count = 0;
*** old/xmodem.c	Fri Nov 16 14:51:31 1990
--- xmodem.c	Sun Dec 30 15:35:20 1990
***************
*** 101,105
  {
  	extern int fd;
! 	int gl_force();
  	char c;
  	unsigned int alarm();

--- 101,105 -----
  {
  	extern int fd;
! 	static int gl_force();
  	char c;
  	unsigned int alarm();
***************
*** 151,155
  {
  	extern int fd;
! 	int n, rl_force();
  	unsigned int try, alarm();
  

--- 151,156 -----
  {
  	extern int fd;
! 	int n;
! 	static int rl_force();
  	unsigned int try, alarm();
  
***************
*** 242,245
  	FILE *fp, *tempfp, *my_fopen();
  	register int num;
  	char *mktemp(), tempfile[128], buf[BUFSIZ], *strcpy();
  	char *s, *strrchr(), *strcat();

--- 243,247 -----
  	FILE *fp, *tempfp, *my_fopen();
  	register int num;
+ 	static int uid_link(), uid_unlink();
  	char *mktemp(), tempfile[128], buf[BUFSIZ], *strcpy();
  	char *s, *strrchr(), *strcat();
***************
*** 301,304
  }
  
  uid_link(path1, path2)
  char *path1, *path2;

--- 303,307 -----
  }
  
+ static int
  uid_link(path1, path2)
  char *path1, *path2;
***************
*** 342,345
  }
  
  uid_unlink(path)
  char *path;

--- 345,349 -----
  }
  
+ static int
  uid_unlink(path)
  char *path;
End of Patch