*BSD News Article 65117


Return to BSD News archive

Newsgroups: comp.bugs.2bsd
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!hobyah.cc.uq.oz.au!bunyip.cc.uq.oz.au!munnari.OZ.AU!news.ecn.uoknor.edu!qns3.qns.com!imci4!newsfeed.internetmci.com!news.kei.com!nntp.coast.net!frankensun.altair.com!wlbr!moe!sms
From: sms@moe.2bsd.com (Steven M. Schultz)
Subject: sys_errlist[] wastes 2kb of D-space [+fix] (#311 3 of 4)
Organization: GTE Government Systems, Westlake Village
Message-ID: <Dp4GIF.G8p@moe.2bsd.com>
Date: Sun, 31 Mar 1996 07:51:51 GMT
Lines: 2023

Subject: sys_errlist[] wastes 2kb of D-space [+fix] (#311 3 of 4)
Index:	lib/libc/gen/errlst.c+many,many_more 2.11BSD

Description:
	The array of system error message strings occupies approximately
	2kb of Data space in any program which calls perror(), strerror()
	or explicitly references sys_errlist[] or sys_nerr.   Since sys_errlist
	is initialized data it also occupies ~4 sectors of disk space in
	each program's executable disk image.
	
Repeat-By:
	Observation.  Or by compiling these test programs and using size(1):

		extern char *sys_errlist[];
		main() { char *cp; cp = sys_errlist[0]; exit(0); }

		cc x.c
		size a.out

		text	data	bss	dec	hex
		362	2042	4	2408	968

		main() { perror("foo"); exit(0); }

		cc y.c
		size a.out

		text	data	bss	dec	hex
		3310	2298	4	5668	1624

	In both cases the 'data' segment is 100% sys_errlist[]'s contribution.

	After applying the updates in this kit the second program's size is:

		text	data	bss	dec	hex
		1008	60	68	1136	470

Fix:
	This is #311 (part 3 of 4).  This is the second of the three patch
	files in the update kit.  

	Refer to the instructions in #309.

-------------------------cut here-----------------------------
*** /usr/src/ucb/ex/ex_subr.c.old	Sun Sep  8 12:00:56 1991
--- /usr/src/ucb/ex/ex_subr.c	Fri Mar 22 17:30:38 1996
***************
*** 5,11 ****
   */
  
  #if	!defined(lint) && defined(DOSCCS)
! static char *sccsid = "@(#)ex_subr.c	7.10 (Berkeley) 6/7/85";
  #endif
  
  #include "ex.h"
--- 5,11 ----
   */
  
  #if	!defined(lint) && defined(DOSCCS)
! static char *sccsid = "@(#)ex_subr.c	7.10.1 (2.11BSD) 1996/3/22";
  #endif
  
  #include "ex.h"
***************
*** 646,661 ****
  
  syserror()
  {
- 	register int e = errno;
- 	extern int sys_nerr;
- 	extern char *sys_errlist[];
  
  	dirtcnt = 0;
  	putchar(' ');
! 	if (e >= 0 && e <= sys_nerr)
! 		error("%s", sys_errlist[e]);
! 	else
! 		error("System error %d", e);
  }
  
  /*
--- 646,655 ----
  
  syserror()
  {
  
  	dirtcnt = 0;
  	putchar(' ');
! 	error("%s", strerror(errno));
  }
  
  /*
*** /usr/src/ucb/ex/exrecover.c.old	Sun Sep  8 12:06:04 1991
--- /usr/src/ucb/ex/exrecover.c	Fri Mar 22 17:31:38 1996
***************
*** 9,15 ****
  "@(#) Copyright (c) 1980 Regents of the University of California.\n\
   All rights reserved.\n";
  
! static char *sccsid = "@(#)exrecover.c	7.9 (Berkeley) 6/7/85";
  #endif
  
  #include <stdio.h>	/* mjm: BUFSIZ: stdio = 512, VMUNIX = 1024 */
--- 9,15 ----
  "@(#) Copyright (c) 1980 Regents of the University of California.\n\
   All rights reserved.\n";
  
! static char *sccsid = "@(#)exrecover.c	7.9.1 (2.11BSD) 1996/3/22";
  #endif
  
  #include <stdio.h>	/* mjm: BUFSIZ: stdio = 512, VMUNIX = 1024 */
***************
*** 756,770 ****
  
  syserror()
  {
- 	extern int sys_nerr;
- 	extern char *sys_errlist[];
  
  	dirtcnt = 0;
  	write(2, " ", 1);
! 	if (errno >= 0 && errno <= sys_nerr)
! 		error("%s", sys_errlist[errno]);
! 	else
! 		error("System error %d", errno);
  	exit(1);
  }
  
--- 756,765 ----
  
  syserror()
  {
  
  	dirtcnt = 0;
  	write(2, " ", 1);
! 	error("%s", strerror(errno));
  	exit(1);
  }
  
*** /usr/src/ucb/pascal/pi/Makefile.old	Sat Jan 27 18:40:27 1996
--- /usr/src/ucb/pascal/pi/Makefile	Fri Mar 22 18:16:30 1996
***************
*** 1,5 ****
  #
! # pi Makefile - 1.1 1996/1/27
  #
  
  DESTDIR=
--- 1,5 ----
  #
! # pi Makefile - 1.2 1996/3/22
  #
  
  DESTDIR=
***************
*** 49,55 ****
  ERRORSTRINGS=	pi1.2strings
  ALL=		${INSTALL} ${UTILS} ${ERRORSTRINGS}
  
! all: ${ALL}
  
  .c.o:
  	rm -f ${TEMPDIR}/$*.c
--- 49,58 ----
  ERRORSTRINGS=	pi1.2strings
  ALL=		${INSTALL} ${UTILS} ${ERRORSTRINGS}
  
! all: ${TEMPDIR} ${ALL}
! 
! tmp:
! 	-mkdir tmp
  
  .c.o:
  	rm -f ${TEMPDIR}/$*.c
*** /usr/src/ucb/pascal/pi/subr.c.old	Fri Jul 10 13:58:45 1981
--- /usr/src/ucb/pascal/pi/subr.c	Fri Mar 22 18:19:15 1996
***************
*** 1,4 ****
! /*	@(#)subr.c	2.3	SCCS id keyword	*/
  /* Copyright (c) 1979 Regents of the University of California */
  #include "whoami"
  /*
--- 1,4 ----
! /*	@(#)subr.c	2.3.1	(2.11BSD) 1996/3/21 */
  /* Copyright (c) 1979 Regents of the University of California */
  #include "whoami"
  /*
***************
*** 96,102 ****
  #endif
  
  extern	int errno;
- extern	char *sys_errlist[];
  
  /*
   * Boom!
--- 96,101 ----
*** /usr/src/ucb/pascal/px/int.c.old	Sat May 31 15:03:44 1986
--- /usr/src/ucb/pascal/px/int.c	Fri Mar 22 18:50:01 1996
***************
*** 4,14 ****
--- 4,18 ----
   * Version 1.0 August 1977
   *
   * Bill Joy, Charles Haley, Ken Thompson
+  *
+  * 1996/3/22 - make Perror look like that in ../pi/subr.c
   */
  
  #include "0x.h"
  #include "opcode.h"
  #include "E.h"
+ #include <sys/types.h>
+ #include <sys/uio.h>
  
  int	display[20]	= { display };
  
***************
*** 108,122 ****
  	interpret(bp, size);
  }
  
  Perror(file, mesg)
  	char *file, *mesg;
  {
! 	extern int errno;
! 	extern char *sys_errlist[];
  
! 	errno = 0;
! 	sys_errlist[0] = mesg;
! 	perror(file);
  }
  
  /*
--- 112,136 ----
  	interpret(bp, size);
  }
  
+ /*
+  * Can't use 'fprintf(stderr...)' because that would require stdio.h and
+  * that can't be used because the 'ferror' macro would conflict with the routine
+  * of the same name.   But we don't want to use sys_errlist[] because that's
+  * ~2kb of D space.
+ */
+ 
  Perror(file, mesg)
  	char *file, *mesg;
  {
! 	struct	iovec	iov[3];
  
! 	iov[0].iov_base = file;
! 	iov[0].iov_len = strlen(file);
! 	iov[1].iov_base = ": ";
! 	iov[1].iov_len = 2;
! 	iov[2].iov_base = mesg;
! 	iov[2].iov_len = strlen(mesg);
! 	writev(2, iov, 3);
  }
  
  /*
*** /usr/src/ucb/pascal/pxp/subr.c.old	Sat Jul 25 11:40:47 1987
--- /usr/src/ucb/pascal/pxp/subr.c	Fri Mar 22 19:09:07 1996
***************
*** 9,17 ****
--- 9,21 ----
   *
   * Bill Joy UCB
   * Version 1.2 January 1979
+  *
+  * 1996/3/22 - make Perror look like that in ../pi/subr.c
   */
  
  #include "0.h"
+ #include <sys/types.h>
+ #include <sys/uio.h>
  
  #ifndef PI1
  /*
***************
*** 90,108 ****
  }
  #endif
  
- extern	int errno;
- extern	char *sys_errlist[];
- 
  /*
   * Boom!
!  */
! Perror(file, error)
! 	char *file, *error;
  {
  
! 	errno = 0;
! 	sys_errlist[0] = error;
! 	perror(file);
  }
  
  calloc(num, size)
--- 94,120 ----
  }
  #endif
  
  /*
   * Boom!
!  *
!  * Can't use 'fprintf(stderr...)' because that would require stdio.h and
!  * that can't be used because the 'ferror' macro would conflict with the routine
!  * of the same name.   But we don't want to use sys_errlist[] because that's
!  * ~2kb of D space.
! */
! 
! Perror(file, mesg)
! 	char *file, *mesg;
  {
+ 	struct	iovec	iov[3];
  
! 	iov[0].iov_base = file;
! 	iov[0].iov_len = strlen(file);
! 	iov[1].iov_base = ": ";
! 	iov[1].iov_len = 2;
! 	iov[2].iov_base = mesg;
! 	iov[2].iov_len = strlen(mesg);
! 	writev(2, iov, 3);
  }
  
  calloc(num, size)
***************
*** 121,169 ****
  	return (p1);
  }
  
- /*
-  * Compare strings:  s1>s2: >0  s1==s2: 0  s1<s2: <0
-  */
- strcmp(s1, s2)
- 	register char *s1, *s2;
- {
- 
- 	while (*s1 == *s2++)
- 		if (*s1++=='\0')
- 			return (0);
- 	return (*s1 - *--s2);
- }
- 
- /*
-  * Copy string s2 to s1.
-  * S1 must be large enough.
-  * Return s1.
-  */
- strcpy(s1, s2)
- 	register char *s1, *s2;
- {
- 	register os1;
- 
- 	os1 = s1;
- 	while (*s1++ = *s2++)
- 		continue;
- 	return (os1);
- }
- 
- /*
-  * Strlen is currently a freebie of perror
-  * Take the length of a string.
-  * Note that this does not include the trailing null!
- strlen(cp)
- 	register char *cp;
- {
- 	register int i;
- 
- 	for (i = 0; *cp != 0; cp++)
- 		i++;
- 	return (i);
- }
-  */
  copy(to, from, bytes)
  	register char *to, *from;
  	register int bytes;
--- 133,138 ----
*** /usr/src/ucb/rdist/defs.h.old	Tue May  9 23:01:23 1995
--- /usr/src/ucb/rdist/defs.h	Fri Mar 22 18:01:58 1996
***************
*** 3,14 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)defs.h	5.2.2 (2.11BSD GTE) 1995/05/09
   */
  
  #include <stdio.h>
  #include <ctype.h>
  #include <errno.h>
  #include <pwd.h>
  #include <grp.h>
  #include <sys/param.h>
--- 3,15 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)defs.h	5.2.3 (2.11BSD GTE) 1996/3/22
   */
  
  #include <stdio.h>
  #include <ctype.h>
  #include <errno.h>
+ #include <string.h>
  #include <pwd.h>
  #include <grp.h>
  #include <sys/param.h>
***************
*** 116,123 ****
  extern struct group *gr;	/* pointer to static area used by getgrent */
  extern char host[];		/* host name of master copy */
  extern char buf[];		/* general purpose buffer */
- extern int errno;		/* system error number */
- extern char *strerror();
  
  char *makestr();
  struct namelist *makenl();
--- 117,122 ----
***************
*** 126,130 ****
  struct namelist *expand();
  char *exptilde();
  char *malloc();
- char *rindex();
- char *index();
--- 125,127 ----
*** /usr/src/ucb/talk/io.c.old	Tue Aug  2 15:33:50 1988
--- /usr/src/ucb/talk/io.c	Fri Mar 22 20:17:46 1996
***************
*** 4,12 ****
   * specifies the terms and conditions for redistribution.
   */
  
! #ifndef lint
! static char sccsid[] = "@(#)io.c	5.1 (Berkeley) 6/6/85";
! #endif not lint
  
  /*
   * This file contains the I/O handling and the exchange of 
--- 4,12 ----
   * specifies the terms and conditions for redistribution.
   */
  
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)io.c	5.1.1 (2.11BSD) 1996/3/22";
! #endif
  
  /*
   * This file contains the I/O handling and the exchange of 
***************
*** 17,22 ****
--- 17,23 ----
  #include "talk.h"
  #include <stdio.h>
  #include <errno.h>
+ #include <string.h>
  #include <sys/time.h>
  
  #define A_LONG_TIME 10000000
***************
*** 82,91 ****
  	}
  }
  
- extern	int errno;
- extern	int sys_nerr;
- extern	char *sys_errlist[];
- 
  /*
   * p_error prints the system error message on the standard location
   * on the screen and then exits. (i.e. a curses version of perror)
--- 83,88 ----
***************
*** 95,103 ****
  {
  	char *sys;
  
! 	sys = "Unknown error";
! 	if (errno < sys_nerr)
! 		sys = sys_errlist[errno];
  	wmove(my_win.x_win, current_line%my_win.x_nlines, 0);
  	wprintw(my_win.x_win, "[%s : %s (%d)]\n", string, sys, errno);
  	wrefresh(my_win.x_win);
--- 92,98 ----
  {
  	char *sys;
  
! 	sys = strerror(errno);
  	wmove(my_win.x_win, current_line%my_win.x_nlines, 0);
  	wprintw(my_win.x_win, "[%s : %s (%d)]\n", string, sys, errno);
  	wrefresh(my_win.x_win);
*** /usr/src/ucb/window/context.c.old	Tue Jun 14 09:43:38 1988
--- /usr/src/ucb/window/context.c	Fri Mar 22 19:28:11 1996
***************
*** 1,5 ****
! #ifndef lint
! static char sccsid[] = "@(#)context.c	3.7 4/24/85";
  #endif
  
  /*
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)context.c	3.7.1 1996/3/22";
  #endif
  
  /*
***************
*** 17,24 ****
  /*
   * Context push/pop for nested command files.
   */
- 
- char *malloc();
  
  cx_alloc()
  {
--- 17,22 ----
*** /usr/src/ucb/window/ttinit.c.old	Tue Jun 14 09:43:39 1988
--- /usr/src/ucb/window/ttinit.c	Fri Mar 22 19:35:00 1996
***************
*** 1,5 ****
! #ifndef lint
! static char sccsid[] = "@(#)ttinit.c	3.14 4/24/85";
  #endif
  
  /*
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)ttinit.c	3.14.1 1996/3/22";
  #endif
  
  /*
***************
*** 50,56 ****
  		p++;
  	for (q = p; *q && *q != '|' && *q != ':'; q++)
  		;
! 	if (q != p && (t = malloc((unsigned) (q - p + 1))) != 0) {
  		wwterm = t;
  		while (p < q)
  			*t++ = *p++;
--- 50,56 ----
  		p++;
  	for (q = p; *q && *q != '|' && *q != ':'; q++)
  		;
! 	if (q != p && (t = (char *)malloc((unsigned) (q - p + 1))) != 0) {
  		wwterm = t;
  		while (p < q)
  			*t++ = *p++;
*** /usr/src/ucb/window/ww.h.old	Sat Jan  1 01:57:55 1994
--- /usr/src/ucb/window/ww.h	Fri Mar 22 19:24:14 1996
***************
*** 1,5 ****
  /*
!  * @(#)ww.h	3.37 5/2/86	
   */
  
  /*
--- 1,5 ----
  /*
!  * @(#)ww.h	3.37.1 1996/3/22
   */
  
  /*
***************
*** 10,15 ****
--- 10,18 ----
  
  #include <sgtty.h>
  #include <setjmp.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <errno.h>
  
  #ifdef pdp11
  #define NWW	9		/* maximum number of windows */
***************
*** 247,260 ****
  char *wwerror();
  
  	/* c library functions */
- char *malloc();
- char *calloc();
- char *getenv();
  char *tgetstr();
- char *rindex();
- char *strcpy();
- char *strcat();
- char *sprintf();
  
  #undef MIN
  #undef MAX
--- 250,256 ----
*** /usr/src/ucb/window/wwerror.c.old	Mon Feb 16 22:10:55 1987
--- /usr/src/ucb/window/wwerror.c	Fri Mar 22 19:23:56 1996
***************
*** 1,5 ****
! #ifndef lint
! static char sccsid[] = "@(#)wwerror.c	3.3 4/24/85";
  #endif
  
  /*
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)wwerror.c	3.3.1 1996/3/22";
  #endif
  
  /*
***************
*** 14,26 ****
  wwerror()
  {
  	extern errno;
- 	extern char *sys_errlist[];
  
  	switch (wwerrno) {
  	case WWE_NOERR:
  		return "No error";
  	case WWE_SYS:
! 		return sys_errlist[errno];
  	case WWE_NOMEM:
  		return "Out of memory";
  	case WWE_TOOMANY:
--- 14,25 ----
  wwerror()
  {
  	extern errno;
  
  	switch (wwerrno) {
  	case WWE_NOERR:
  		return "No error";
  	case WWE_SYS:
! 		return strerror(errno);
  	case WWE_NOMEM:
  		return "Out of memory";
  	case WWE_TOOMANY:
*** /usr/src/ucb/window/wwinit.c.old	Mon Feb 16 22:10:48 1987
--- /usr/src/ucb/window/wwinit.c	Fri Mar 22 19:39:52 1996
***************
*** 1,5 ****
! #ifndef lint
! static char sccsid[] = "@(#)wwinit.c	3.26 5/1/86";
  #endif
  
  /*
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)wwinit.c	3.26.1 1996/3/22";
  #endif
  
  /*
***************
*** 81,87 ****
  	else if (wwavailmodes & WWM_UL)
  		wwcursormodes = WWM_UL;
  
! 	if ((wwib = malloc((unsigned) 512)) == 0)
  		goto bad;
  	wwibe = wwib + 512;
  	wwibq = wwibp = wwib;
--- 81,87 ----
  	else if (wwavailmodes & WWM_UL)
  		wwcursormodes = WWM_UL;
  
! 	if ((wwib = (char *)malloc((unsigned) 512)) == 0)
  		goto bad;
  	wwibe = wwib + 512;
  	wwibq = wwibp = wwib;
***************
*** 107,113 ****
  		for (j = 0; j < wwncol; j++)
  			wwns[i][j].c_w = ' ';
  
! 	wwtouched = malloc((unsigned) wwnrow);
  	if (wwtouched == 0) {
  		wwerrno = WWE_NOMEM;
  		goto bad;
--- 107,113 ----
  		for (j = 0; j < wwncol; j++)
  			wwns[i][j].c_w = ' ';
  
! 	wwtouched = (char *)malloc((unsigned) wwnrow);
  	if (wwtouched == 0) {
  		wwerrno = WWE_NOMEM;
  		goto bad;
*** /usr/src/ucb/window/wwopen.c.old	Tue Jun 14 09:54:10 1988
--- /usr/src/ucb/window/wwopen.c	Fri Mar 22 19:42:27 1996
***************
*** 1,5 ****
! #ifndef lint
! static char sccsid[] = "@(#)wwopen.c	3.21 4/24/85";
  #endif
  
  /*
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)wwopen.c	3.21.1 1996/3/22";
  #endif
  
  /*
***************
*** 88,94 ****
  		w->ww_socket = d[1];
  	}
  	if (flags & (WWO_PTY|WWO_SOCKET)) {
! 		if ((w->ww_ob = malloc(512)) == 0) {
  			wwerrno = WWE_NOMEM;
  			goto bad;
  		}
--- 88,94 ----
  		w->ww_socket = d[1];
  	}
  	if (flags & (WWO_PTY|WWO_SOCKET)) {
! 		if ((w->ww_ob = (char *)malloc(512)) == 0) {
  			wwerrno = WWE_NOMEM;
  			goto bad;
  		}
*** /usr/src/usr.bin/Makefile.old	Fri Feb 23 20:33:28 1996
--- /usr/src/usr.bin/Makefile	Wed Mar 20 21:54:19 1996
***************
*** 1,4 ****
! #	Makefile	1.3 (2.11BSD GTE) 1996/02/23
  #
  DESTDIR=
  CFLAGS=	-O
--- 1,4 ----
! #	Makefile	1.4 (2.11BSD GTE) 1996/03/20
  #
  DESTDIR=
  CFLAGS=	-O
***************
*** 8,13 ****
--- 8,14 ----
  #
  SUBDIR=	at calendar dc diction diff3 eqn f77 find graph learn lex lint \
  	m4 neqn plot printf prof ranlib ratfor refer roff spell struct tbl \
+ 	mkerrlst \
  	tip uucp uname yacc xargs xinstall
  
  # Shell scripts that need only be installed and are never removed.
*** /usr/src/usr.bin/file.c.old	Wed Dec 19 10:28:00 1990
--- /usr/src/usr.bin/file.c	Fri Mar 22 21:07:16 1996
***************
*** 1,6 ****
! #ifndef lint
! /* static	char sccsid[] = "@(#)file.c	4.12 (Berkeley) 11/17/85"; */
! static	char sccsid[] = "@(#)file.c	2.11BSD (Contel) 11/24/90";
  #endif
  /*
   * file - determine type of file
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static	char sccsid[] = "@(#)file.c	4.12.2 (2.11BSD) 1996/3/22";
  #endif
  /*
   * file - determine type of file
***************
*** 11,19 ****
  #include <stdio.h>
  #include <ctype.h>
  #include <a.out.h>
! int	errno;
! int	sys_nerr;
! char	*sys_errlist[];
  int in;
  int i  = 0;
  char buf[BUFSIZ];
--- 10,18 ----
  #include <stdio.h>
  #include <ctype.h>
  #include <a.out.h>
! #include <errno.h>
! #include <string.h>
! 
  int in;
  int i  = 0;
  char buf[BUFSIZ];
***************
*** 87,94 ****
  
  	ifile = -1;
  	if (lstat(file, &mbuf) < 0) {
! 		printf("%s\n",
! 		(unsigned)errno < sys_nerr? sys_errlist[errno]: "Cannot stat");
  		return;
  	}
  	switch (mbuf.st_mode & S_IFMT) {
--- 86,92 ----
  
  	ifile = -1;
  	if (lstat(file, &mbuf) < 0) {
! 		printf("%s\n", strerror(errno));
  		return;
  	}
  	switch (mbuf.st_mode & S_IFMT) {
***************
*** 123,130 ****
  
  	ifile = open(file, 0);
  	if(ifile < 0) {
! 		printf("%s\n",
! 		(unsigned)errno < sys_nerr? sys_errlist[errno]: "Cannot read");
  		return;
  	}
  	in = read(ifile, buf, BUFSIZ);
--- 121,127 ----
  
  	ifile = open(file, 0);
  	if(ifile < 0) {
! 		printf("%s\n", strerror(errno));
  		return;
  	}
  	in = read(ifile, buf, BUFSIZ);
*** /usr/src/usr.bin/uucp/acucntrl.c.old	Mon Jan 10 22:48:07 1994
--- /usr/src/usr.bin/uucp/acucntrl.c	Fri Mar 22 20:25:18 1996
***************
*** 1,5 ****
  #if	defined(DOSCCS) && !defined(lint)
! static char sccsid[] = "@(#)acucntrl.c	5.8.1 (2.11BSD GTE) 1/1/94";
  #endif
  
  /*  acucntrl - turn around tty line between dialin and dialout
--- 1,5 ----
  #if	defined(DOSCCS) && !defined(lint)
! static char sccsid[] = "@(#)acucntrl.c	5.8.2 (2.11BSD GTE) 1996/3/22";
  #endif
  
  /*  acucntrl - turn around tty line between dialin and dialout
***************
*** 65,70 ****
--- 65,72 ----
  #include <pwd.h>
  #include <stdio.h>
  #include <sys/file.h>
+ #include <errno.h>
+ #include <string.h>
  
  #define NDZLINE	8	/* lines/dz */
  #define NDHLINE	16	/* lines/dh */
***************
*** 130,138 ****
  off_t utmploc;
  off_t ttyslnbeg;
  
- extern int errno;
- extern char *sys_errlist[];
- 
  #define NAMSIZ	sizeof(utmp.ut_name)
  #define	LINSIZ	sizeof(utmp.ut_line)
  
--- 132,137 ----
***************
*** 183,189 ****
  	/* Chdir to /dev */
  	if(chdir(Devhome) < 0) {
  		fprintf(stderr, "Cannot chdir to %s: %s\r\n",
! 			Devhome, sys_errlist[errno]);
  		exit(1);
  	}
  
--- 182,188 ----
  	/* Chdir to /dev */
  	if(chdir(Devhome) < 0) {
  		fprintf(stderr, "Cannot chdir to %s: %s\r\n",
! 			Devhome, strerror(errno));
  		exit(1);
  	}
  
***************
*** 209,215 ****
  	/* check to see if line is being used */
  	if( (etcutmp = open(Etcutmp, 2)) < 0) {
  		fprintf(stderr, "On open %s open: %s\n",
! 			Etcutmp, sys_errlist[errno]);
  		exit(1);
  	}
  
--- 208,214 ----
  	/* check to see if line is being used */
  	if( (etcutmp = open(Etcutmp, 2)) < 0) {
  		fprintf(stderr, "On open %s open: %s\n",
! 			Etcutmp, strerror(errno));
  		exit(1);
  	}
  
***************
*** 242,248 ****
  	if (enable) {
  		if((devfile = open(device, 1)) < 0) {
  			fprintf(stderr, "On open of %s: %s\n",
! 				device, sys_errlist[errno]);
  			(void)setmodem(device, resetmodem);
  			exit(1);
  		}
--- 241,247 ----
  	if (enable) {
  		if((devfile = open(device, 1)) < 0) {
  			fprintf(stderr, "On open of %s: %s\n",
! 				device, strerror(errno));
  			(void)setmodem(device, resetmodem);
  			exit(1);
  		}
***************
*** 249,265 ****
  		/* Try one last time to hang up */
  		if (ioctl(devfile, TIOCCDTR, (char *)0) < 0)
  			fprintf(stderr, "On TIOCCDTR ioctl: %s\n",
! 				sys_errlist[errno]);
  
  		if (ioctl(devfile, TIOCNXCL, (char *)0) < 0)
  			fprintf(stderr,
  			    "Cannot clear Exclusive Use on %s: %s\n",
! 				device, sys_errlist[errno]);
  
  		if (ioctl(devfile, TIOCHPCL, (char *)0) < 0)
  			fprintf(stderr,
  			    "Cannot set hangup on close on %s: %s\n",
! 				device, sys_errlist[errno]);
  
  		i = resetmodem;
  
--- 248,264 ----
  		/* Try one last time to hang up */
  		if (ioctl(devfile, TIOCCDTR, (char *)0) < 0)
  			fprintf(stderr, "On TIOCCDTR ioctl: %s\n",
! 				strerror(errno));
  
  		if (ioctl(devfile, TIOCNXCL, (char *)0) < 0)
  			fprintf(stderr,
  			    "Cannot clear Exclusive Use on %s: %s\n",
! 				device, strerror(errno));
  
  		if (ioctl(devfile, TIOCHPCL, (char *)0) < 0)
  			fprintf(stderr,
  			    "Cannot set hangup on close on %s: %s\n",
! 				device, strerror(errno));
  
  		i = resetmodem;
  
***************
*** 287,293 ****
  
  			if((devfile = open(device, 1)) < 0) {
  				fprintf(stderr, "On open of %s: %s\n",
! 					device, sys_errlist[errno]);
  				(void)setmodem(device, resetmodem);
  				exit(1);
  			}
--- 286,292 ----
  
  			if((devfile = open(device, 1)) < 0) {
  				fprintf(stderr, "On open of %s: %s\n",
! 					device, strerror(errno));
  				(void)setmodem(device, resetmodem);
  				exit(1);
  			}
***************
*** 306,312 ****
  		/* chown device */
  		if(chown(device, uid, gid) < 0)
  			fprintf(stderr, "Cannot chown %s: %s\n",
! 				device, sys_errlist[errno]);
  
  
  		/* poke init */
--- 305,311 ----
  		/* chown device */
  		if(chown(device, uid, gid) < 0)
  			fprintf(stderr, "Cannot chown %s: %s\n",
! 				device, strerror(errno));
  
  
  		/* poke init */
***************
*** 318,329 ****
  		post(device, Uname);
  		if((devfile = open(device, O_RDWR|O_NDELAY)) < 0) {
  			fprintf(stderr, "On %s open: %s\n",
! 				device, sys_errlist[errno]);
  		} else {
  			if(ioctl(devfile, TIOCSDTR, (char *)0) < 0)
  				fprintf(stderr,
  				    "Cannot set DTR on %s: %s\n",
! 					device, sys_errlist[errno]);
  		}
  	}
  
--- 317,328 ----
  		post(device, Uname);
  		if((devfile = open(device, O_RDWR|O_NDELAY)) < 0) {
  			fprintf(stderr, "On %s open: %s\n",
! 				device, strerror(errno));
  		} else {
  			if(ioctl(devfile, TIOCSDTR, (char *)0) < 0)
  				fprintf(stderr,
  				    "Cannot set DTR on %s: %s\n",
! 					device, strerror(errno));
  		}
  	}
  
***************
*** 350,359 ****
  	strncpy(utmp.ut_name, name,  NAMSIZ);
  	if (lseek(etcutmp, utmploc, 0) < 0)
  		fprintf(stderr, "on lseek in /etc/utmp: %s",
! 			sys_errlist[errno]);
  	if (write(etcutmp, (char *)&utmp, sizeof(utmp)) < 0)
  		fprintf(stderr, "on write in /etc/utmp: %s",
! 			sys_errlist[errno]);
  }
  	
  /* poke process 1 and wait for it to do its thing */
--- 349,358 ----
  	strncpy(utmp.ut_name, name,  NAMSIZ);
  	if (lseek(etcutmp, utmploc, 0) < 0)
  		fprintf(stderr, "on lseek in /etc/utmp: %s",
! 			strerror(errno));
  	if (write(etcutmp, (char *)&utmp, sizeof(utmp)) < 0)
  		fprintf(stderr, "on write in /etc/utmp: %s",
! 			strerror(errno));
  }
  	
  /* poke process 1 and wait for it to do its thing */
***************
*** 369,375 ****
  	if (kill(1, SIGHUP)) {
  		fprintf(stderr,
  		    "Cannot send hangup to init process: %s\n",
! 			sys_errlist[errno]);
  		(void)settys(resettty);
  		(void)setmodem(device, resetmodem);
  		exit(1);
--- 368,374 ----
  	if (kill(1, SIGHUP)) {
  		fprintf(stderr,
  		    "Cannot send hangup to init process: %s\n",
! 			strerror(errno));
  		(void)settys(resettty);
  		(void)setmodem(device, resetmodem);
  		exit(1);
***************
*** 384,393 ****
  		sleep(1);
  		if (lseek(etcutmp, utmploc, 0) < 0)
  			fprintf(stderr, "On lseek in /etc/utmp: %s",
! 				sys_errlist[errno]);
  		if (read(etcutmp, (char *)&utmp, sizeof utmp) < 0)
  			fprintf(stderr, "On read from /etc/utmp: %s",
! 				sys_errlist[errno]);
  	} while (utmp.ut_name[0] != '\0' && --i > 0);
  }
  
--- 383,392 ----
  		sleep(1);
  		if (lseek(etcutmp, utmploc, 0) < 0)
  			fprintf(stderr, "On lseek in /etc/utmp: %s",
! 				strerror(errno));
  		if (read(etcutmp, (char *)&utmp, sizeof utmp) < 0)
  			fprintf(stderr, "On read from /etc/utmp: %s",
! 				strerror(errno));
  	} while (utmp.ut_name[0] != '\0' && --i > 0);
  }
  
***************
*** 410,416 ****
  		ttysfile = fopen(Etcttys, "r");
  		if(ttysfile == NULL) {
  			fprintf(stderr, "Cannot open %s: %s\n", Etcttys,
! 				sys_errlist[errno]);
  			exit(1);
  		}
  	} while (flock(fileno(ttysfile), LOCK_NB|LOCK_EX) < 0);
--- 409,415 ----
  		ttysfile = fopen(Etcttys, "r");
  		if(ttysfile == NULL) {
  			fprintf(stderr, "Cannot open %s: %s\n", Etcttys,
! 				strerror(errno));
  			exit(1);
  		}
  	} while (flock(fileno(ttysfile), LOCK_NB|LOCK_EX) < 0);
***************
*** 417,423 ****
  	nttysfile = fopen(NEtcttys, "w");
  	if(nttysfile == NULL) {
  		fprintf(stderr, "Cannot open %s: %s\n", Etcttys,
! 			sys_errlist[errno]);
  		exit(1);
  	}
  
--- 416,422 ----
  	nttysfile = fopen(NEtcttys, "w");
  	if(nttysfile == NULL) {
  		fprintf(stderr, "Cannot open %s: %s\n", Etcttys,
! 			strerror(errno));
  		exit(1);
  	}
  
***************
*** 436,442 ****
  			utmploc += sizeof(utmp);
  		if (fputs(linebuf, nttysfile) == NULL) {
  			fprintf(stderr, "On %s write: %s\n",
! 				Etcttys, sys_errlist[errno]);
  			exit(1);
  		}
  		
--- 435,441 ----
  			utmploc += sizeof(utmp);
  		if (fputs(linebuf, nttysfile) == NULL) {
  			fprintf(stderr, "On %s write: %s\n",
! 				Etcttys, strerror(errno));
  			exit(1);
  		}
  		
***************
*** 457,463 ****
  	(void) fseek(ttysfile, ttyslnbeg, 0);
  	if(fgets(lbuf, BUFSIZ, ttysfile) == NULL) {
  		fprintf(stderr, "On %s read: %s\n",
! 			Etcttys, sys_errlist[errno]);
  		exit(1);
  	}
  	/* format is now */
--- 456,462 ----
  	(void) fseek(ttysfile, ttyslnbeg, 0);
  	if(fgets(lbuf, BUFSIZ, ttysfile) == NULL) {
  		fprintf(stderr, "On %s read: %s\n",
! 			Etcttys, strerror(errno));
  		exit(1);
  	}
  	/* format is now */
***************
*** 499,511 ****
  	fprintf(nttysfile,"%s%c%s%c%s", lbuf, c1, enable ? "on" : "off", c2, cp);
  	if (ferror(nttysfile)) {
  		fprintf(stderr, "On %s fprintf: %s\n",
! 			NEtcttys, sys_errlist[errno]);
  		exit(1);
  	}
  	while(fgets(lbuf, sizeof(lbuf) - 1, ttysfile) != NULL) {
  		if (fputs(lbuf, nttysfile) == NULL) {
  			fprintf(stderr, "On %s write: %s\n",
! 				NEtcttys, sys_errlist[errno]);
  			exit(1);
  		}
  	}
--- 498,510 ----
  	fprintf(nttysfile,"%s%c%s%c%s", lbuf, c1, enable ? "on" : "off", c2, cp);
  	if (ferror(nttysfile)) {
  		fprintf(stderr, "On %s fprintf: %s\n",
! 			NEtcttys, strerror(errno));
  		exit(1);
  	}
  	while(fgets(lbuf, sizeof(lbuf) - 1, ttysfile) != NULL) {
  		if (fputs(lbuf, nttysfile) == NULL) {
  			fprintf(stderr, "On %s write: %s\n",
! 				NEtcttys, strerror(errno));
  			exit(1);
  		}
  	}
***************
*** 540,546 ****
  	ttysfile = fopen(Etcttys, "r");
  	if(ttysfile == NULL) {
  		fprintf(stderr, "Cannot open %s: %s\n", Etcttys,
! 			sys_errlist[errno]);
  		exit(1);
  	}
  
--- 539,545 ----
  	ttysfile = fopen(Etcttys, "r");
  	if(ttysfile == NULL) {
  		fprintf(stderr, "Cannot open %s: %s\n", Etcttys,
! 			strerror(errno));
  		exit(1);
  	}
  
***************
*** 573,585 ****
  	ittysfil = open(Etcttys, 2);
  	if(ittysfil < 0) {
  		fprintf(stderr, "Cannot open %s for output: %s\n",
! 			Etcttys, sys_errlist[errno]);
  		exit(1);
  	}
  	(void)lseek(ittysfil, ttyslnbeg, 0);
  	if(read(ittysfil, &in, 1)<0) {
  		fprintf(stderr, "On %s write: %s\n",
! 			Etcttys, sys_errlist[errno]);
  		exit(1);
  	}
  	resettty = (in == '1');
--- 572,584 ----
  	ittysfil = open(Etcttys, 2);
  	if(ittysfil < 0) {
  		fprintf(stderr, "Cannot open %s for output: %s\n",
! 			Etcttys, strerror(errno));
  		exit(1);
  	}
  	(void)lseek(ittysfil, ttyslnbeg, 0);
  	if(read(ittysfil, &in, 1)<0) {
  		fprintf(stderr, "On %s write: %s\n",
! 			Etcttys, strerror(errno));
  		exit(1);
  	}
  	resettty = (in == '1');
***************
*** 587,593 ****
  	(void)lseek(ittysfil, ttyslnbeg, 0);
  	if(write(ittysfil, &out, 1)<0) {
  		fprintf(stderr, "On %s write: %s\n",
! 			Etcttys, sys_errlist[errno]);
  		exit(1);
  	}
  	(void)close(ittysfil);
--- 586,592 ----
  	(void)lseek(ittysfil, ttyslnbeg, 0);
  	if(write(ittysfil, &out, 1)<0) {
  		fprintf(stderr, "On %s write: %s\n",
! 			Etcttys, strerror(errno));
  		exit(1);
  	}
  	(void)close(ittysfil);
***************
*** 648,659 ****
  	}
  
  	if((kmem = open("/dev/kmem", 2)) < 0) {
! 		fprintf(stderr, "/dev/kmem open: %s\n", sys_errlist[errno]);
  		return(-1);
  	}
  
  	if(stat(ttyline, &statb) < 0) {
! 		fprintf(stderr, "%s stat: %s\n", ttyline, sys_errlist[errno]);
  		return(-1);
  	}
  
--- 647,658 ----
  	}
  
  	if((kmem = open("/dev/kmem", 2)) < 0) {
! 		fprintf(stderr, "/dev/kmem open: %s\n", strerror(errno));
  		return(-1);
  	}
  
  	if(stat(ttyline, &statb) < 0) {
! 		fprintf(stderr, "%s stat: %s\n", ttyline, strerror(errno));
  		return(-1);
  	}
  
*** /usr/src/usr.bin/uucp/aculib/bsdtcp.c.old	Mon Jan 10 22:47:48 1994
--- /usr/src/usr.bin/uucp/aculib/bsdtcp.c	Fri Mar 22 20:21:49 1996
***************
*** 1,5 ****
  #if	defined(DOSCCS) && !defined(lint)
! static char sccsid[] = "@(#)bsdtcp.c	4.3.1 (2.11BSD GTE) 1/1/94";
  #endif
  
  #include "../condevs.h"
--- 1,5 ----
  #if	defined(DOSCCS) && !defined(lint)
! static char sccsid[] = "@(#)bsdtcp.c	4.3.2 (2.11BSD GTE) 1996/3/22";
  #endif
  
  #include "../condevs.h"
***************
*** 24,30 ****
  	struct	sockaddr_in hisctladdr;
  	int s = -1, port;
  	extern int errno;
- 	extern char *sys_errlist[];
  
  	sp = getservbyname(flds[F_CLASS], "tcp");
  	if (sp == NULL) {
--- 24,29 ----
***************
*** 78,84 ****
  	alarm(0);
  	bsdtcpcls(s);
  	DEBUG(5, "tcpopen failed: errno %d\n", errno);
! 	logent(sys_errlist[errno], _FAILED);
  	return CF_DIAL;
  }
  
--- 77,83 ----
  	alarm(0);
  	bsdtcpcls(s);
  	DEBUG(5, "tcpopen failed: errno %d\n", errno);
! 	logent(strerror(errno), _FAILED);
  	return CF_DIAL;
  }
  
*** /usr/src/usr.bin/uucp/condevs.c.old	Mon Feb 16 16:21:44 1987
--- /usr/src/usr.bin/uucp/condevs.c	Fri Mar 22 20:29:09 1996
***************
*** 1,10 ****
! #ifndef lint
! static char sccsid[] = "@(#)condevs.c	5.15 (Berkeley) 2/12/86";
  #endif
  
- extern int errno;
- extern char *sys_errlist[];
- 
  /*
   * Here are various dialers to establish the machine-machine connection.
   * conn.c/condevs.c was glued together by Mike Mitchell.
--- 1,7 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)condevs.c	5.15.1 (2.11BSD) 1996/3/22";
  #endif
  
  /*
   * Here are various dialers to establish the machine-machine connection.
   * conn.c/condevs.c was glued together by Mike Mitchell.
***************
*** 27,32 ****
--- 24,30 ----
   * THE FIX: Don't declare variables to be register
   */
  
+ #include <string.h>
  #include "condevs.h"
  
  struct condev condevs[] = {
***************
*** 437,451 ****
  {
  #ifdef	USG
  	if (ioctl(fn, TCSBRK, STBNULL) < 0)
! 		DEBUG(5, "break TCSBRK %s\n", sys_errlist[errno]);
  #else	!USG
  # ifdef	TIOCSBRK
  	if (ioctl(fn, TIOCSBRK, STBNULL) < 0)
! 		DEBUG(5, "break TIOCSBRK %s\n", sys_errlist[errno]);
  # ifdef	TIOCCBRK
  	uucpdelay(bnulls, 10);
  	if (ioctl(fn, TIOCCBRK, STBNULL) < 0)
! 		DEBUG(5, "break TIOCCBRK %s\n", sys_errlist[errno]);
  # endif TIOCCBRK
  	DEBUG(4, "ioctl %f second break\n", (float) bnulls/10 );
  # else !TIOCSBRK
--- 435,449 ----
  {
  #ifdef	USG
  	if (ioctl(fn, TCSBRK, STBNULL) < 0)
! 		DEBUG(5, "break TCSBRK %s\n", strerror(errno));
  #else	!USG
  # ifdef	TIOCSBRK
  	if (ioctl(fn, TIOCSBRK, STBNULL) < 0)
! 		DEBUG(5, "break TIOCSBRK %s\n", strerror(errno));
  # ifdef	TIOCCBRK
  	uucpdelay(bnulls, 10);
  	if (ioctl(fn, TIOCCBRK, STBNULL) < 0)
! 		DEBUG(5, "break TIOCCBRK %s\n", strerror(errno));
  # endif TIOCCBRK
  	DEBUG(4, "ioctl %f second break\n", (float) bnulls/10 );
  # else !TIOCSBRK
***************
*** 453,472 ****
  	register int sospeed;
  
  	if (ioctl(fn, TIOCGETP, &ttbuf) < 0)
! 		DEBUG(5, "break TIOCGETP %s\n", sys_errlist[errno]);
  	sospeed = ttbuf.sg_ospeed;
  	ttbuf.sg_ospeed = BSPEED;
  	if (ioctl(fn, TIOCSETP, &ttbuf) < 0)
! 		DEBUG(5, "break TIOCSETP %s\n", sys_errlist[errno]);
  	if (write(fn, "\0\0\0\0\0\0\0\0\0\0\0\0", bnulls) != bnulls) {
  badbreak:
! 		logent(sys_errlist[errno], "BAD WRITE genbrk");
  		alarm(0);
  		longjmp(Sjbuf, 3);
  	}
  	ttbuf.sg_ospeed = sospeed;
  	if (ioctl(fn, TIOCSETP, &ttbuf) < 0)
! 		DEBUG(5, "break ioctl %s\n", sys_errlist[errno]);
  	if (write(fn, "@", 1) != 1)
  		goto badbreak;
  	DEBUG(4, "sent BREAK nulls - %d\n", bnulls);
--- 451,470 ----
  	register int sospeed;
  
  	if (ioctl(fn, TIOCGETP, &ttbuf) < 0)
! 		DEBUG(5, "break TIOCGETP %s\n", strerror(errno));
  	sospeed = ttbuf.sg_ospeed;
  	ttbuf.sg_ospeed = BSPEED;
  	if (ioctl(fn, TIOCSETP, &ttbuf) < 0)
! 		DEBUG(5, "break TIOCSETP %s\n", strerror(errno));
  	if (write(fn, "\0\0\0\0\0\0\0\0\0\0\0\0", bnulls) != bnulls) {
  badbreak:
! 		logent(strerror(errno), "BAD WRITE genbrk");
  		alarm(0);
  		longjmp(Sjbuf, 3);
  	}
  	ttbuf.sg_ospeed = sospeed;
  	if (ioctl(fn, TIOCSETP, &ttbuf) < 0)
! 		DEBUG(5, "break ioctl %s\n", strerror(errno));
  	if (write(fn, "@", 1) != 1)
  		goto badbreak;
  	DEBUG(4, "sent BREAK nulls - %d\n", bnulls);
*** /usr/src/usr.bin/uucp/condevs.h.old	Sat Jan  1 02:22:01 1994
--- /usr/src/usr.bin/uucp/condevs.h	Fri Mar 22 20:31:55 1996
***************
*** 1,4 ****
! /*	condevs.h	4.7	1/1/94	*/
  
  #include "uucp.h"
  #include <errno.h>
--- 1,4 ----
! /*	condevs.h	4.7.1	1996/3/22	*/
  
  #include "uucp.h"
  #include <errno.h>
***************
*** 14,20 ****
  #endif
  
  extern char devSel[];	/* name to pass to delock() in close */
! extern int errno, next_fd;
  extern jmp_buf Sjbuf;
  extern int alarmtr();
  int nulldev(), nodev(), Acuopn(), diropn(), dircls();
--- 14,20 ----
  #endif
  
  extern char devSel[];	/* name to pass to delock() in close */
! extern int next_fd;
  extern jmp_buf Sjbuf;
  extern int alarmtr();
  int nulldev(), nodev(), Acuopn(), diropn(), dircls();
*** /usr/src/usr.bin/uucp/conn.c.old	Mon Mar  9 07:00:14 1987
--- /usr/src/usr.bin/uucp/conn.c	Fri Mar 22 20:30:18 1996
***************
*** 1,5 ****
! #ifndef lint
! static char sccsid[] = "@(#)conn.c	5.10 (Berkeley) 1/24/86";
  #endif
  
  #include <signal.h>
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)conn.c	5.10.1 (2.11BSD) 1996/3/22";
  #endif
  
  #include <signal.h>
***************
*** 24,31 ****
  
  extern jmp_buf Sjbuf;
  jmp_buf Cjbuf;
! extern int errno, onesys;
! extern char *sys_errlist[];
  extern char MaxGrade, DefMaxGrade;
  
  /* Parity control during login procedure */
--- 24,30 ----
  
  extern jmp_buf Sjbuf;
  jmp_buf Cjbuf;
! extern int onesys;
  extern char MaxGrade, DefMaxGrade;
  
  /* Parity control during login procedure */
***************
*** 276,282 ****
  	 */
  #ifdef	TIOCNXCL
  	if (!IsTcpIp && Dcf >= 0 && ioctl(Dcf, TIOCNXCL, STBNULL) < 0)
! 		DEBUG(5, "clsacu ioctl %s\n", sys_errlist[errno]);
  #endif
  	if  (setjmp(Sjbuf))
  		logent(Rmtname, "CLOSE TIMEOUT");
--- 275,281 ----
  	 */
  #ifdef	TIOCNXCL
  	if (!IsTcpIp && Dcf >= 0 && ioctl(Dcf, TIOCNXCL, STBNULL) < 0)
! 		DEBUG(5, "clsacu ioctl %s\n", strerror(errno));
  #endif
  	if  (setjmp(Sjbuf))
  		logent(Rmtname, "CLOSE TIMEOUT");
***************
*** 812,818 ****
  {
  	c = par_tab[c&0177];
  	if (write(fd, &c, 1) != 1) {
! 		logent(sys_errlist[errno], "BAD WRITE");
  		longjmp(Cjbuf, 2);
  	}
  }
--- 811,817 ----
  {
  	c = par_tab[c&0177];
  	if (write(fd, &c, 1) != 1) {
! 		logent(strerror(errno), "BAD WRITE");
  		longjmp(Cjbuf, 2);
  	}
  }
*** /usr/src/usr.bin/uucp/pk1.c.old	Sun Jul  3 21:19:20 1988
--- /usr/src/usr.bin/uucp/pk1.c	Fri Mar 22 20:45:34 1996
***************
*** 1,5 ****
! #ifndef lint
! static char sccsid[] = "@(#)pk1.c	5.9 (Berkeley) 5/30/86";
  #endif
  
  #include <signal.h>
--- 1,5 ----
! #if	!defined(lint) && defined(DOSCCS)
! static char sccsid[] = "@(#)pk1.c	5.9.1 (2.11BSD) 1996/3/22";
  #endif
  
  #include <signal.h>
***************
*** 6,11 ****
--- 6,13 ----
  #include "uucp.h"
  #include "pk.h"
  #include <setjmp.h>
+ #include <errno.h>
+ #include <string.h>
  #ifdef BSD4_2
  #include <sys/time.h>
  #endif BSD4_2
***************
*** 22,30 ****
  #define CONNODATA 10
  #define MAXTIMEOUT 32
  
- extern int errno;
  extern int Retries;
- extern char *sys_errlist[];
  extern jmp_buf Sjbuf;
  extern	char *malloc();
  
--- 24,30 ----
***************
*** 293,299 ****
  	if (x < 0) {
  		if(write(pk->p_ofn, p, HDRSIZ) != HDRSIZ) {
  			alarm(0);
! 			logent("PKXSTART write failed", sys_errlist[errno]);
  			longjmp(Sjbuf, 4);
  		}
  	} else {
--- 293,299 ----
  	if (x < 0) {
  		if(write(pk->p_ofn, p, HDRSIZ) != HDRSIZ) {
  			alarm(0);
! 			logent("PKXSTART write failed", strerror(errno));
  			longjmp(Sjbuf, 4);
  		}
  	} else {
***************
*** 310,316 ****
  		if (write(pk->p_ofn, buf, pk->p_xsize + HDRSIZ + TAILSIZE)
  		    != (HDRSIZ + TAILSIZE + pk->p_xsize)) {
  			alarm(0);
! 			logent("PKXSTART write failed", sys_errlist[errno]);
  			longjmp(Sjbuf, 5);
  		}
  		Connodata = 0;
--- 310,316 ----
  		if (write(pk->p_ofn, buf, pk->p_xsize + HDRSIZ + TAILSIZE)
  		    != (HDRSIZ + TAILSIZE + pk->p_xsize)) {
  			alarm(0);
! 			logent("PKXSTART write failed", strerror(errno));
  			longjmp(Sjbuf, 5);
  		}
  		Connodata = 0;
***************
*** 420,426 ****
  		}
  		if (ret <= 0) {
  			alarm(0);
! 			logent(sys_errlist[errno],"FAILED pkcget Read");
  			longjmp(Sjbuf, 6);
  		}
   		b += ret;
--- 420,426 ----
  		}
  		if (ret <= 0) {
  			alarm(0);
! 			logent(strerror(errno),"FAILED pkcget Read");
  			longjmp(Sjbuf, 6);
  		}
   		b += ret;
*** /usr/src/usr.lib/Makefile.old	Thu Oct 21 20:47:49 1993
--- /usr/src/usr.lib/Makefile	Wed Mar 20 20:30:53 1996
***************
*** 3,9 ****
  # All rights reserved.  The Berkeley software License Agreement
  # specifies the terms and conditions for redistribution.
  #
! #	@(#)Makefile	5.11 (2.11BSD GTE) 10/21/93
  #
  DESTDIR=
  CFLAGS=	-O
--- 3,9 ----
  # All rights reserved.  The Berkeley software License Agreement
  # specifies the terms and conditions for redistribution.
  #
! #	@(#)Makefile	5.12 (2.11BSD GTE) 1996/3/20
  #
  DESTDIR=
  CFLAGS=	-O
***************
*** 14,20 ****
  # master tags file (/usr/lib/tags); the Fortran libraries should
  # be on this list, but we don't control them....
  #
! TAGSDIR=libcurses libdbm libln libm libmp libpc libtermlib libutil libvmf
  
  # Programs that live in subdirectories, and have makefiles of their own.
  #
--- 14,21 ----
  # master tags file (/usr/lib/tags); the Fortran libraries should
  # be on this list, but we don't control them....
  #
! TAGSDIR=libcurses libdbm libln libm libmp libpc libtermlib libutil libvmf \
! 	liberrlst
  
  # Programs that live in subdirectories, and have makefiles of their own.
  #
***************
*** 22,28 ****
  # the 4.3BSD version of ucb/pascal.
  #
  SUBDIR=	learn lib2648 libF77 libI77 libU77 libcurses libdbm libln \
! 	libom libmp libplot libtermlib liby lpr me sendmail libutil libvmf
  
  # Shell scripts that need only be installed and are never removed.
  #
--- 23,30 ----
  # the 4.3BSD version of ucb/pascal.
  #
  SUBDIR=	learn lib2648 libF77 libI77 libU77 libcurses libdbm libln \
! 	libom libmp libplot libtermlib liby lpr me sendmail libutil libvmf \
! 	liberrlst
  
  # Shell scripts that need only be installed and are never removed.
  #
*** /usr/src/usr.lib/libI77/err.c.old	Sun Dec 25 23:45:34 1988
--- /usr/src/usr.lib/libI77/err.c	Fri Mar 22 21:14:39 1996
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)err.c	5.2	7/30/85
   */
  
  /*
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)err.c	5.2.1	1996/3/22
   */
  
  /*
***************
*** 47,59 ****
  
  /*error messages*/
  
- extern char *sys_errlist[];
- extern int sys_nerr;
- 
  extern char *f_errlist[];
  extern int f_nerr;
  
- 
  fatal(n,s) char *s;
  {
  	ftnint lu;
--- 47,55 ----
***************
*** 62,73 ****
  		flush_(&lu);
  	if(n<0)
  		fprintf(stderr,"%s: [%d] end of file\n",s,n);
- 	else if(n>=0 && n<sys_nerr)
- 		fprintf(stderr,"%s: [%d] %s\n",s,n,sys_errlist[n]);
  	else if(n>=F_ER && n<F_MAXERR)
  		fprintf(stderr,"%s: [%d] %s\n",s,n,f_errlist[n-F_ER]);
  	else
! 		fprintf(stderr,"%s: [%d] unknown error number\n",s,n);
  	if(external)
  	{
  		if(!lfname) switch (lunit)
--- 58,67 ----
  		flush_(&lu);
  	if(n<0)
  		fprintf(stderr,"%s: [%d] end of file\n",s,n);
  	else if(n>=F_ER && n<F_MAXERR)
  		fprintf(stderr,"%s: [%d] %s\n",s,n,f_errlist[n-F_ER]);
  	else
! 		fprintf(stderr,"%s: [%d] %s\n",s,n,strerror(n));
  	if(external)
  	{
  		if(!lfname) switch (lunit)
*** /usr/src/usr.lib/libU77/gerror_.c.old	Wed Feb 18 01:09:59 1987
--- /usr/src/usr.lib/libU77/gerror_.c	Fri Mar 22 22:02:49 1996
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)gerror_.c	5.1	6/7/85
   */
  
  /*
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)gerror_.c	5.1.1	1996/3/22
   */
  
  /*
***************
*** 20,28 ****
  
  #include	<stdio.h>
  #include	"../libI77/f_errno.h"
  
- extern char *sys_errlist[];
- extern int sys_nerr;
  extern char *f_errlist[];
  extern int f_nerr;
  
--- 20,27 ----
  
  #include	<stdio.h>
  #include	"../libI77/f_errno.h"
+ #include	<string.h>
  
  extern char *f_errlist[];
  extern int f_nerr;
  
***************
*** 31,41 ****
  {
  	char *mesg;
  
! 	if (errno >=0 && errno < sys_nerr)
! 		mesg = sys_errlist[errno];
! 	else if (errno >= F_ER && errno < (F_ER + f_nerr))
  		mesg = f_errlist[errno - F_ER];
  	else
! 		mesg = "unknown error number";
  	b_char(mesg, s, len);
  }
--- 30,38 ----
  {
  	char *mesg;
  
! 	if (errno >= F_ER && errno < (F_ER + f_nerr))
  		mesg = f_errlist[errno - F_ER];
  	else
! 		mesg = strerror(errno);
  	b_char(mesg, s, len);
  }
*** /usr/src/usr.lib/libU77/perror_.c.old	Wed Feb 18 01:09:55 1987
--- /usr/src/usr.lib/libU77/perror_.c	Fri Mar 22 22:01:12 1996
***************
*** 3,9 ****
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)perror_.c	5.1	6/7/85
   */
  
  /*
--- 3,9 ----
   * All rights reserved.  The Berkeley software License Agreement
   * specifies the terms and conditions for redistribution.
   *
!  *	@(#)perror_.c	5.1.1	1996/3/22
   */
  
  /*
***************
*** 18,26 ****
  #include	<stdio.h>
  #include	"../libI77/fiodefs.h"
  #include	"../libI77/f_errno.h"
  
- extern char *sys_errlist[];
- extern int sys_nerr;
  extern char *f_errlist[];
  extern int f_nerr;
  extern unit units[];
--- 18,25 ----
  #include	<stdio.h>
  #include	"../libI77/fiodefs.h"
  #include	"../libI77/f_errno.h"
+ #include	<string.h>
  
  extern char *f_errlist[];
  extern int f_nerr;
  extern unit units[];
***************
*** 28,52 ****
  perror_(s, len)
  char *s; long len;
  {
! 	unit	*lu;
! 	char	buf[40];
! 	char	*mesg = s + len;
  
  	while (len > 0 && *--mesg == ' ')
  		len--;
! 	if (errno >=0 && errno < sys_nerr)
! 		mesg = sys_errlist[errno];
! 	else if (errno >= F_ER && errno < (F_ER + f_nerr))
  		mesg = f_errlist[errno - F_ER];
  	else
! 	{
! 		sprintf(buf, "%d: unknown error number", errno);
! 		mesg = buf;
! 	}
  	lu = &units[STDERR];
  	if (!lu->uwrt)
  		nowwriting(lu);
  	while (len-- > 0)
! 		putc(*s++, lu->ufd);
  	fprintf(lu->ufd, ": %s\n", mesg);
  }
--- 27,45 ----
  perror_(s, len)
  char *s; long len;
  {
! 	register unit	*lu;
! 	register char	*mesg = s + len;
  
  	while (len > 0 && *--mesg == ' ')
  		len--;
! 	if (errno >= F_ER && errno < (F_ER + f_nerr))
  		mesg = f_errlist[errno - F_ER];
  	else
! 		mesg = strerror(errno);
  	lu = &units[STDERR];
  	if (!lu->uwrt)
  		nowwriting(lu);
  	while (len-- > 0)
! 		fputc(*s++, lu->ufd);
  	fprintf(lu->ufd, ": %s\n", mesg);
  }
*** /usr/src/usr.lib/lpr/startdaemon.c.old	Mon Jan 10 23:09:34 1994
--- /usr/src/usr.lib/lpr/startdaemon.c	Fri Mar 22 21:35:57 1996
***************
*** 5,11 ****
   */
  
  #if	defined(DOSCCS) && !defined(lint)
! static char sccsid[] = "@(#)startdaemon.c	5.1.1 (2.11BSD GTE) 1/1/94";
  #endif
  
  /*
--- 5,11 ----
   */
  
  #if	defined(DOSCCS) && !defined(lint)
! static char sccsid[] = "@(#)startdaemon.c	5.1.2 (2.11BSD GTE) 1996/3/22";
  #endif
  
  /*
***************
*** 85,95 ****
  	char *msg;
  {
  	extern char *name;
- 	extern int sys_nerr;
- 	extern char *sys_errlist[];
- 	extern int errno;
  
! 	printf("%s: %s: ", name, msg);
! 	fputs(errno < sys_nerr ? sys_errlist[errno] : "Unknown error" , stdout);
! 	putchar('\n');
  }
--- 85,90 ----
  	char *msg;
  {
  	extern char *name;
  
! 	printf("%s: %s: %s\n", name, msg, strerror(errno));
  }
*** /usr/src/usr.lib/sendmail.MX/src/err.c.old	Sat Jan  1 01:12:38 1994
--- /usr/src/usr.lib/sendmail.MX/src/err.c	Sat Mar 23 00:43:39 1996
***************
*** 15,21 ****
   */
  
  #if !defined(lint) && !defined(NOSCCS)
! static char sccsid[] = "@(#)err.c	5.8.1 (2.11BSD) 1/1/94";
  #endif
  
  # include "sendmail.h"
--- 15,21 ----
   */
  
  #if !defined(lint) && !defined(NOSCCS)
! static char sccsid[] = "@(#)err.c	5.8.2 (2.11BSD) 1996/3/23";
  #endif
  
  # include "sendmail.h"
***************
*** 41,50 ****
  **		sets ExitStat.
  */
  
- # ifdef lint
- int	sys_nerr;
- char	*sys_errlist[];
- # endif lint
  #ifdef pdp11
  char	MsgBuf[BUFSIZ/2];	/* text of most recent message */
  #else
--- 41,46 ----
***************
*** 320,327 ****
  errstring(errno)
  	int errno;
  {
- 	extern char *sys_errlist[];
- 	extern int sys_nerr;
  	static char buf[100];
  # ifdef SMTP
  	extern char *SmtpPhase;
--- 316,321 ----
***************
*** 339,345 ****
  	{
  	  case ETIMEDOUT:
  	  case ECONNRESET:
! 		(void) strcpy(buf, sys_errlist[errno]);
  		if (SmtpPhase != NULL)
  		{
  			(void) strcat(buf, " during ");
--- 333,339 ----
  	{
  	  case ETIMEDOUT:
  	  case ECONNRESET:
! 		(void) strcpy(buf, strerror(errno));
  		if (SmtpPhase != NULL)
  		{
  			(void) strcat(buf, " during ");
***************
*** 371,379 ****
  # endif VMUNIX
  # endif DAEMON
  
! 	if (errno > 0 && errno < sys_nerr)
! 		return (sys_errlist[errno]);
! 
! 	(void) sprintf(buf, "Error %d", errno);
! 	return (buf);
  }
--- 365,369 ----
  # endif VMUNIX
  # endif DAEMON
  
! 	return (strerror(errno));
  }
*** /usr/src/usr.lib/sendmail/src/Makefile.m4.old	Thu Sep  7 23:11:18 1995
--- /usr/src/usr.lib/sendmail/src/Makefile.m4	Fri Mar 22 22:38:47 1996
***************
*** 7,13 ****
  #  All rights reserved.  The Berkeley software License Agreement
  #  specifies the terms and conditions for redistribution.
  #
! #	@(#)Makefile.m4	5.10.3 (2.11BSD GTE) 3/07/95
  #
  #
  #  SENDMAIL Makefile.
--- 7,13 ----
  #  All rights reserved.  The Berkeley software License Agreement
  #  specifies the terms and conditions for redistribution.
  #
! #	@(#)Makefile.m4	5.10.4 (2.11BSD GTE) 1996/3/22
  #
  #
  #  SENDMAIL Makefile.
***************
*** 32,41 ****
  
  SBASE=	conf.o parseaddr.o alias.o deliver.o headers.o \
  	recipient.o srvrsmtp.o queue.o util.o \
! 	envelope.o sysexits.o arpadate.o convtime.o Version.o \
  	$(EXTRACT) str.o
  SOV1=	main.o readcf.o macro.o ctime.o
! SOV2=	daemon.o savemail.o usersmtp.o err.o clock.o stats.o trace.o stab.o
  SOV3=	collect.o
  
  SRCS=	\
--- 32,42 ----
  
  SBASE=	conf.o parseaddr.o alias.o deliver.o headers.o \
  	recipient.o srvrsmtp.o queue.o util.o \
! 	envelope.o sysexits.o convtime.o Version.o \
  	$(EXTRACT) str.o
  SOV1=	main.o readcf.o macro.o ctime.o
! SOV2=	daemon.o savemail.o usersmtp.o err.o clock.o stats.o trace.o stab.o \
! 	arpadate.o
  SOV3=	collect.o
  
  SRCS=	\
*** /VERSION.old	Sun Mar 10 20:00:16 1996
--- /VERSION	Sat Mar 30 21:51:29 1996
***************
*** 1,4 ****
! Current Patch Level: 308
  
  2.11 BSD
  ============
--- 1,4 ----
! Current Patch Level: 312
  
  2.11 BSD
  ============