Subject: Re: error function re-factoring.
To: Christos Zoulas <christos@zoulas.com>
From: Jason Thorpe <thorpej@shagadelic.org>
List: tech-userlevel
Date: 07/10/2006 09:17:49
On Jul 9, 2006, at 3:11 PM, Christos Zoulas wrote:
> Hello,
>
> I just finished moving all the e* functions used in the code to
> libutil.
> I am planning to commit this in the next couple of days, so speak
> up if
> you have concerns.
Library routines should NOT be printing error messages.
Honestly, I don't see the big deal in duplicating error handling code
like this. Especially since that once you remove the error message
printing (which you should do -- printing error messages in library
routines has negative security implications), then there's not added
value to these new, non-standard routines.
>
> christos
>
> delete:
> cvs diff: sbin/rcorder/ealloc.c was removed, no comparison available
> cvs diff: sbin/rcorder/ealloc.h was removed, no comparison available
> cvs diff: usr.sbin/netgroup_mkdb/util.c was removed, no comparison
> available
> cvs diff: usr.sbin/netgroup_mkdb/util.h was removed, no comparison
> available
>
> add:
> --- /dev/null 2006-07-09 18:06:04.000000000 -0400
> +++ lib/libutil/efun.c 2006-07-03 13:05:19.000000000 -0400
> @@ -0,0 +1,135 @@
> +/* $NetBSD$ */
> +
> +/*-
> + * Copyright (c) 2006 The NetBSD Foundation, Inc.
> + * All rights reserved.
> + *
> + * This code is derived from software contributed to The NetBSD
> Foundation
> + * by Christos Zoulas.
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following conditions
> + * are met:
> + * 1. Redistributions of source code must retain the above copyright
> + * notice, this list of conditions and the following disclaimer.
> + * 2. Redistributions in binary form must reproduce the above
> copyright
> + * notice, this list of conditions and the following disclaimer
> in the
> + * documentation and/or other materials provided with the
> distribution.
> + * 3. All advertising materials mentioning features or use of this
> software
> + * must display the following acknowledgement:
> + * This product includes software developed by the NetBSD
> + * Foundation, Inc. and its contributors.
> + * 4. Neither the name of The NetBSD Foundation nor the names of its
> + * contributors may be used to endorse or promote products derived
> + * from this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
> CONTRIBUTORS
> + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT
> NOT LIMITED
> + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
> PARTICULAR
> + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
> CONTRIBUTORS
> + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
> EXEMPLARY, OR
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
> PROCUREMENT OF
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
> BUSINESS
> + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
> WHETHER IN
> + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> OTHERWISE)
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
> ADVISED OF THE
> + * POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#include <sys/cdefs.h>
> +__RCSID("$NetBSD$");
> +
> +#include <err.h>
> +#include <errno.h>
> +#include <string.h>
> +#include <stdlib.h>
> +#include <stdio.h>
> +#include <stdarg.h>
> +
> +size_t
> +estrlcpy(char *dst, const char *src, size_t len)
> +{
> + size_t rv;
> + if ((rv = strlcpy(dst, src, len)) >= len) {
> + errno = ENAMETOOLONG;
> + err(1, "Cannot copy `%s'", src);
> + }
> + return rv;
> +}
> +
> +size_t
> +estrlcat(char *dst, const char *src, size_t len)
> +{
> + size_t rv;
> + if ((rv = strlcat(dst, src, len)) >= len) {
> + errno = ENAMETOOLONG;
> + err(1, "Cannot append `%s'", src);
> + }
> + return rv;
> +}
> +
> +char *
> +estrdup(const char *s)
> +{
> + char *d = strdup(s);
> + if (d == NULL)
> + err(1, "Cannot copy `%s'", s);
> + return d;
> +}
> +
> +void *
> +emalloc(size_t n)
> +{
> + void *p = malloc(n);
> + if (p == NULL)
> + err(1, "Cannot allocate %zu bytes", n);
> + return p;
> +}
> +
> +void *
> +ecalloc(size_t n, size_t s)
> +{
> + void *p = malloc(n *= s);
> + if (p == NULL)
> + err(1, "Cannot allocate %zu bytes", n);
> + return memset(p, 0, n);
> +}
> +
> +void *
> +erealloc(void *p, size_t n)
> +{
> + void *q = realloc(p, n);
> + if (q == NULL)
> + err(1, "Cannot re-allocate %zu bytes", n);
> + return q;
> +}
> +
> +FILE *
> +efopen(const char *p, const char *m)
> +{
> + FILE *fp = fopen(p, m);
> + if (fp == NULL)
> + err(1, "Cannot open `%s'", p);
> + return fp;
> +}
> +
> +int
> +easprintf(char ** __restrict ret, const char * __restrict
> format, ...)
> +{
> + int rv;
> + va_list ap;
> + va_start(ap, format);
> + if ((rv = vasprintf(ret, format, ap)) == -1)
> + err(1, "Cannot format string");
> + va_end(ap);
> + return rv;
> +}
> +
> +int
> +evasprintf(char ** __restrict ret, const char * __restrict format,
> va_list ap)
> +{
> + int rv;
> + if ((rv = vasprintf(ret, format, ap)) == -1)
> + err(1, "Cannot format string");
> + return rv;
> +}
> --- /dev/null 2006-07-09 18:06:04.000000000 -0400
> +++ lib/libutil/efun.3 2006-07-03 13:04:32.000000000 -0400
> @@ -0,0 +1,98 @@
> +.\" $NetBSD$
> +.\"
> +.\" Copyright (c) 2006 The NetBSD Foundation, Inc.
> +.\" All rights reserved.
> +.\"
> +.\" This code is derived from software contributed to The NetBSD
> Foundation
> +.\" by Christos Zoulas.
> +.\"
> +.\" Redistribution and use in source and binary forms, with or
> without
> +.\" modification, are permitted provided that the following
> conditions
> +.\" are met:
> +.\" 1. Redistributions of source code must retain the above copyright
> +.\" notice, this list of conditions and the following disclaimer.
> +.\" 2. Redistributions in binary form must reproduce the above
> copyright
> +.\" notice, this list of conditions and the following
> disclaimer in the
> +.\" documentation and/or other materials provided with the
> distribution.
> +.\" 3. All advertising materials mentioning features or use of
> this software
> +.\" must display the following acknowledgement:
> +.\" This product includes software developed by the NetBSD
> +.\" Foundation, Inc. and its contributors.
> +.\" 4. Neither the name of The NetBSD Foundation nor the names of its
> +.\" contributors may be used to endorse or promote products
> derived
> +.\" from this software without specific prior written permission.
> +.\"
> +.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
> CONTRIBUTORS
> +.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
> BUT NOT LIMITED
> +.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> A PARTICULAR
> +.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
> CONTRIBUTORS
> +.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
> EXEMPLARY, OR
> +.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
> PROCUREMENT OF
> +.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
> OR BUSINESS
> +.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
> WHETHER IN
> +.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
> OTHERWISE)
> +.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
> ADVISED OF THE
> +.\" POSSIBILITY OF SUCH DAMAGE.
> +.\"
> +.Dd July 3, 2006
> +.Dt EFUN 3
> +.Os
> +.Sh NAME
> +.Nm easprintf ,
> +.Nm efopen ,
> +.Nm emalloc ,
> +.Nm ecalloc ,
> +.Nm erealloc ,
> +.Nm estrdup ,
> +.Nm estrlcat ,
> +.Nm estrlcpy ,
> +.Nm evasprintf
> +.Nd error-checked utility functions
> +.Sh LIBRARY
> +.Lb libutil
> +.Sh SYNOPSIS
> +.Ft int
> +.Fn easprintf "char ** restrict str" "const char * restrict fmt"
> "..."
> +.Ft FILE *
> +.Fn efopen "const char *p" "const char *m"
> +.Ft void *
> +.Fn ecalloc "size_t n" "size_t c"
> +.Ft void *
> +.Fn emalloc "size_t n"
> +.Ft void *
> +.Fn erealloc "void *p" "size_t n"
> +.Ft char *
> +.Fn estrdup "const char *s"
> +.Ft size_t
> +.Fn estrlcat "char *dst" "const char *src" "size_t len"
> +.Ft size_t
> +.Fn estrlcpy "char *dst" "const char *src" "size_t len"
> +.Ft int
> +.Fn evasprintf "char ** restrict str" "const char * restrict fmt"
> "..."
> +.Sh DESCRIPTION
> +The
> +.Nm easprintf ,
> +.Nm efopen ,
> +.Nm ecalloc ,
> +.Nm emalloc ,
> +.Nm erealloc ,
> +.Nm estrdup ,
> +.Nm estrlcat ,
> +.Nm estrlcpy ,
> +.Nm evasprintf
> +operate exactly as the correspoding functions that do not start
> with an
> +.Dq e
> +except that they call
> +.Xr err 3
> +on failure.
> +.Sh SEE ALSO
> +.Xr asprintf 3 ,
> +.Xr err 3 ,
> +.Xr fopen 3 ,
> +.Xr calloc 3 ,
> +.Xr malloc 3 ,
> +.Xr realloc 3 ,
> +.Xr strdup 3 ,
> +.Xr strlcat 3 ,
> +.Xr strlcpy 3 ,
> +.Xr vasprintf 3 .
>
> diff:
> Index: include/err.h
> ===================================================================
> RCS file: /cvsroot/src/include/err.h,v
> retrieving revision 1.14
> diff -u -u -r1.14 err.h
> --- include/err.h 3 Feb 2005 04:39:32 -0000 1.14
> +++ include/err.h 9 Jul 2006 22:01:50 -0000
> @@ -61,6 +61,25 @@
> __attribute__((__format__(__printf__, 1, 2)));
> void vwarnx(const char *, _BSD_VA_LIST_)
> __attribute__((__format__(__printf__, 1, 0)));
> +
> +#ifdef _BSD_SIZE_T_
> +typedef _BSD_SIZE_T_ size_t;
> +#undef _BSD_SIZE_T_
> +#endif
> +
> +size_t estrlcpy(char *, const char *src, size_t);
> +size_t estrlcat(char *, const char *src, size_t);
> +char *estrdup(const char *);
> +void *ecalloc(size_t, size_t);
> +void *emalloc(size_t);
> +void *erealloc(void *, size_t);
> +struct __sFILE *efopen(const char *, const char *);
> +int easprintf(char ** __restrict, const char * __restrict, ...)
> + __attribute__((__format__(__printf__, 2, 3)));
> +int evasprintf(char ** __restrict, const char * __restrict,
> + _BSD_VA_LIST_)
> + __attribute__((__format__(__printf__, 2, 0)));
> +
> __END_DECLS
>
> #endif /* !_ERR_H_ */
> Index: lib/libasn1/asn1_compile/Makefile
> ===================================================================
> RCS file: /cvsroot/src/lib/libasn1/asn1_compile/Makefile,v
> retrieving revision 1.19
> diff -u -u -r1.19 Makefile
> --- lib/libasn1/asn1_compile/Makefile 10 Jan 2005 03:11:17 -0000 1.19
> +++ lib/libasn1/asn1_compile/Makefile 9 Jul 2006 22:01:50 -0000
> @@ -31,8 +31,7 @@
> print_version.c \
> warnerr.c \
> strupr.c \
> - get_window_size.c \
> - emalloc.c
> + get_window_size.c
>
> SRCS= $(asn1_compile_SRCS) \
> $(roken_SRCS)
> Index: lib/libroken/Makefile
> ===================================================================
> RCS file: /cvsroot/src/lib/libroken/Makefile,v
> retrieving revision 1.13
> diff -u -u -r1.13 Makefile
> --- lib/libroken/Makefile 10 Jan 2005 03:11:17 -0000 1.13
> +++ lib/libroken/Makefile 9 Jul 2006 22:01:55 -0000
> @@ -11,16 +11,19 @@
>
> LIB= roken
>
> +.if ${OBJECT_FMT} == "ELF"
> +LIBDPLIBS= util ${.CURDIR}/../libutil
> +.else
> +.PATH: ${NETBSDSRCDIR}/lib/libutil
> +SRCS+= efun.c
> +.endif
> +
> SRCS= \
> base64.c \
> concat.c \
> - ecalloc.c \
> - emalloc.c \
> environment.c \
> eread.c \
> - erealloc.c \
> esetenv.c \
> - estrdup.c \
> ewrite.c \
> get_default_username.c \
> get_window_size.c \
> Index: lib/libutil/Makefile
> ===================================================================
> RCS file: /cvsroot/src/lib/libutil/Makefile,v
> retrieving revision 1.49
> diff -u -u -r1.49 Makefile
> --- lib/libutil/Makefile 14 Sep 2005 18:45:40 -0000 1.49
> +++ lib/libutil/Makefile 9 Jul 2006 22:01:55 -0000
> @@ -8,7 +8,7 @@
> WARNS=3
> LIB= util
> CPPFLAGS+=-DLIBC_SCCS
> -SRCS= getbootfile.c getlabelsector.c getmaxpartitions.c \
> +SRCS= efun.c getbootfile.c getlabelsector.c getmaxpartitions.c \
> getmntopts.c getrawpartition.c \
> disklabel_dkcksum.c disklabel_scan.c \
> if_media.c \
> @@ -17,7 +17,7 @@
> passwd.c pw_scan.c pw_policy.c pidfile.c pidlock.c pty.c \
> secure_path.c snprintb.c sockaddr_snprintf.c ttyaction.c ttymsg.c
>
> -MAN= getbootfile.3 getlabelsector.3 getmaxpartitions.3 \
> +MAN= efun.3 getbootfile.3 getlabelsector.3 getmaxpartitions.3 \
> getmntopts.3 \
> getrawpartition.3 \
> login.3 login_cap.3 loginx.3 \
> @@ -55,5 +55,13 @@
> MLINKS+=pw_lock.3 pw_setprefix.3
> MLINKS+=pidlock.3 ttylock.3
> MLINKS+=pidlock.3 ttyunlock.3
> +MLINKS+=efun.3 easprintf.3
> +MLINKS+=efun.3 estrlcpy.3
> +MLINKS+=efun.3 estrlcat.3
> +MLINKS+=efun.3 estrdup.3
> +MLINKS+=efun.3 emalloc.3
> +MLINKS+=efun.3 erealloc.3
> +MLINKS+=efun.3 efopen.3
> +MLINKS+=efun.3 evasprintf.3
>
> .include <bsd.lib.mk>
> Index: lib/libutil/shlib_version
> ===================================================================
> RCS file: /cvsroot/src/lib/libutil/shlib_version,v
> retrieving revision 1.39
> diff -u -u -r1.39 shlib_version
> --- lib/libutil/shlib_version 18 Feb 2006 10:52:48 -0000 1.39
> +++ lib/libutil/shlib_version 9 Jul 2006 22:01:55 -0000
> @@ -2,4 +2,4 @@
> # Remember to update distrib/sets/lists/base/shl.* when changing
> #
> major=7
> -minor=9
> +minor=10
> Index: libexec/makewhatis/Makefile
> ===================================================================
> RCS file: /cvsroot/src/libexec/makewhatis/Makefile,v
> retrieving revision 1.17
> diff -u -u -r1.17 Makefile
> --- libexec/makewhatis/Makefile 18 May 2003 07:57:32 -0000 1.17
> +++ libexec/makewhatis/Makefile 9 Jul 2006 22:01:56 -0000
> @@ -10,8 +10,10 @@
> MAN= ${PROG}.8
>
> .ifndef HOSTPROG
> -DPADD= ${LIBZ}
> -LDADD= -lz
> +DPADD+= ${LIBZ}
> +LDADD+= -lz
> .endif
> +DPADD+= ${LIBUTIL}
> +LDADD+= -lutil
>
> .include <bsd.prog.mk>
> Index: libexec/makewhatis/makewhatis.c
> ===================================================================
> RCS file: /cvsroot/src/libexec/makewhatis/makewhatis.c,v
> retrieving revision 1.39
> diff -u -u -r1.39 makewhatis.c
> --- libexec/makewhatis/makewhatis.c 10 Apr 2006 14:39:06 -0000 1.39
> +++ libexec/makewhatis/makewhatis.c 9 Jul 2006 22:01:56 -0000
> @@ -110,8 +110,6 @@
> static char *getwhatisdata(char *);
> static void processmanpages(manpage **,whatis **);
> static void dumpwhatis(FILE *, whatis *);
> -static void *emalloc(size_t);
> -static char *estrdup(const char *);
> static int makewhatis(char * const *manpath);
>
> static char * const default_manpath[] = {
> @@ -1091,21 +1089,3 @@
> tree = tree->wi_right;
> }
> }
> -
> -static void *
> -emalloc(size_t len)
> -{
> - void *ptr;
> - if ((ptr = malloc(len)) == NULL)
> - err(EXIT_FAILURE, "malloc %lu failed", (unsigned long)len);
> - return ptr;
> -}
> -
> -static char *
> -estrdup(const char *str)
> -{
> - char *ptr;
> - if ((ptr = strdup(str)) == NULL)
> - err(EXIT_FAILURE, "strdup failed");
> - return ptr;
> -}
> Index: sbin/cgdconfig/pkcs5_pbkdf2.c
> ===================================================================
> RCS file: /cvsroot/src/sbin/cgdconfig/pkcs5_pbkdf2.c,v
> retrieving revision 1.8
> diff -u -u -r1.8 pkcs5_pbkdf2.c
> --- sbin/cgdconfig/pkcs5_pbkdf2.c 11 May 2006 00:40:54 -0000 1.8
> +++ sbin/cgdconfig/pkcs5_pbkdf2.c 9 Jul 2006 22:01:58 -0000
> @@ -61,6 +61,7 @@
> #include <assert.h>
> #include <stdlib.h>
> #include <string.h>
> +#include <err.h>
>
> #include <openssl/hmac.h>
>
> Index: sbin/cgdconfig/utils.c
> ===================================================================
> RCS file: /cvsroot/src/sbin/cgdconfig/utils.c,v
> retrieving revision 1.14
> diff -u -u -r1.14 utils.c
> --- sbin/cgdconfig/utils.c 11 May 2006 00:42:08 -0000 1.14
> +++ sbin/cgdconfig/utils.c 9 Jul 2006 22:01:59 -0000
> @@ -55,33 +55,6 @@
> #include "utils.h"
>
>
> -void *
> -emalloc(size_t len)
> -{
> - void *ptr = malloc(len);
> - if (ptr == NULL)
> - err(1, NULL);
> - return ptr;
> -}
> -
> -void *
> -ecalloc(size_t nel, size_t len)
> -{
> - void *ptr = calloc(nel, len);
> - if (ptr == NULL)
> - err(1, NULL);
> - return ptr;
> -}
> -
> -char *
> -estrdup(const char *str)
> -{
> - char *ptr = strdup(str);
> - if (ptr == NULL)
> - err(1, NULL);
> - return ptr;
> -}
> -
> /* just strsep(3), but skips empty fields. */
>
> static char *
> Index: sbin/cgdconfig/utils.h
> ===================================================================
> RCS file: /cvsroot/src/sbin/cgdconfig/utils.h,v
> retrieving revision 1.5
> diff -u -u -r1.5 utils.h
> --- sbin/cgdconfig/utils.h 30 Mar 2005 17:10:18 -0000 1.5
> +++ sbin/cgdconfig/utils.h 9 Jul 2006 22:01:59 -0000
> @@ -50,9 +50,6 @@
> typedef struct bits bits_t;
>
> __BEGIN_DECLS
> -void *emalloc(size_t);
> -void *ecalloc(size_t, size_t);
> -char *estrdup(const char *);
> char **words(const char *, int *);
> void words_free(char **, int);
>
> Index: sbin/fsck/Makefile
> ===================================================================
> RCS file: /cvsroot/src/sbin/fsck/Makefile,v
> retrieving revision 1.16
> diff -u -u -r1.16 Makefile
> --- sbin/fsck/Makefile 19 Aug 2004 23:02:51 -0000 1.16
> +++ sbin/fsck/Makefile 9 Jul 2006 22:01:59 -0000
> @@ -4,4 +4,7 @@
> SRCS= fsck.c fsutil.c preen.c
> MAN= fsck.8
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: sbin/fsck/fsutil.c
> ===================================================================
> RCS file: /cvsroot/src/sbin/fsck/fsutil.c,v
> retrieving revision 1.15
> diff -u -u -r1.15 fsutil.c
> --- sbin/fsck/fsutil.c 5 Jun 2006 16:52:05 -0000 1.15
> +++ sbin/fsck/fsutil.c 9 Jul 2006 22:01:59 -0000
> @@ -242,39 +242,3 @@
> */
> return (origname);
> }
> -
> -
> -void *
> -emalloc(size_t s)
> -{
> - void *p;
> -
> - p = malloc(s);
> - if (p == NULL)
> - err(1, "malloc failed");
> - return (p);
> -}
> -
> -
> -void *
> -erealloc(void *p, size_t s)
> -{
> - void *q;
> -
> - q = realloc(p, s);
> - if (q == NULL)
> - err(1, "realloc failed");
> - return (q);
> -}
> -
> -
> -char *
> -estrdup(const char *s)
> -{
> - char *p;
> -
> - p = strdup(s);
> - if (p == NULL)
> - err(1, "strdup failed");
> - return (p);
> -}
> Index: sbin/fsck/fsutil.h
> ===================================================================
> RCS file: /cvsroot/src/sbin/fsck/fsutil.h,v
> retrieving revision 1.11
> diff -u -u -r1.11 fsutil.h
> --- sbin/fsck/fsutil.h 5 Jun 2006 16:52:05 -0000 1.11
> +++ sbin/fsck/fsutil.h 9 Jul 2006 22:01:59 -0000
> @@ -49,9 +49,6 @@
> const char *cdevname(void);
> void setcdevname(const char *, int);
> int hotroot(void);
> -void *emalloc(size_t);
> -void *erealloc(void *, size_t);
> -char *estrdup(const char *);
>
> #define CHECK_PREEN 1
> #define CHECK_VERBOSE 2
> Index: sbin/fsck_ext2fs/Makefile
> ===================================================================
> RCS file: /cvsroot/src/sbin/fsck_ext2fs/Makefile,v
> retrieving revision 1.12
> diff -u -u -r1.12 Makefile
> --- sbin/fsck_ext2fs/Makefile 11 May 2006 23:16:29 -0000 1.12
> +++ sbin/fsck_ext2fs/Makefile 9 Jul 2006 22:01:59 -0000
> @@ -13,6 +13,9 @@
>
> .include <bsd.prog.mk>
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .if ${HAVE_GCC} == 4
> .for f in pass5 utilities
> COPTS.${f}.c+= -Wno-pointer-sign
> Index: sbin/fsck_ffs/Makefile
> ===================================================================
> RCS file: /cvsroot/src/sbin/fsck_ffs/Makefile,v
> retrieving revision 1.30
> diff -u -u -r1.30 Makefile
> --- sbin/fsck_ffs/Makefile 24 Jun 2006 05:21:11 -0000 1.30
> +++ sbin/fsck_ffs/Makefile 9 Jul 2006 22:01:59 -0000
> @@ -31,5 +31,8 @@
> SUBDIR+=SMM.doc
> .endif
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> .include <bsd.subdir.mk>
> Index: sbin/fsck_lfs/Makefile
> ===================================================================
> RCS file: /cvsroot/src/sbin/fsck_lfs/Makefile,v
> retrieving revision 1.12
> diff -u -u -r1.12 Makefile
> --- sbin/fsck_lfs/Makefile 17 Apr 2006 19:05:16 -0000 1.12
> +++ sbin/fsck_lfs/Makefile 9 Jul 2006 22:01:59 -0000
> @@ -12,4 +12,7 @@
> .PATH: ${NETBSDSRCDIR}/sys/ufs/lfs ${FSCK}
> CPPFLAGS+=-I${.CURDIR} -I${FSCK} # -DVERBOSE_BLOCKMAP
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: sbin/fsck_msdos/Makefile
> ===================================================================
> RCS file: /cvsroot/src/sbin/fsck_msdos/Makefile,v
> retrieving revision 1.10
> diff -u -u -r1.10 Makefile
> --- sbin/fsck_msdos/Makefile 20 Jan 2005 16:39:23 -0000 1.10
> +++ sbin/fsck_msdos/Makefile 9 Jul 2006 22:01:59 -0000
> @@ -10,4 +10,7 @@
> CPPFLAGS+= -I${FSCK}
> .PATH: ${FSCK}
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: sbin/ifconfig/extern.h
> ===================================================================
> RCS file: /cvsroot/src/sbin/ifconfig/extern.h,v
> retrieving revision 1.9
> diff -u -u -r1.9 extern.h
> --- sbin/ifconfig/extern.h 16 Jun 2006 23:48:35 -0000 1.9
> +++ sbin/ifconfig/extern.h 9 Jul 2006 22:01:59 -0000
> @@ -70,4 +70,3 @@
> const char *get_string(const char *, const char *, u_int8_t *, int
> *);
> void print_string(const u_int8_t *, int);
> void getsock(int);
> -void estrlcpy(char *, char *, size_t);
> Index: sbin/ifconfig/ifconfig.c
> ===================================================================
> RCS file: /cvsroot/src/sbin/ifconfig/ifconfig.c,v
> retrieving revision 1.172
> diff -u -u -r1.172 ifconfig.c
> --- sbin/ifconfig/ifconfig.c 16 Jun 2006 23:48:35 -0000 1.172
> +++ sbin/ifconfig/ifconfig.c 9 Jul 2006 22:02:00 -0000
> @@ -1550,12 +1550,3 @@
> progname, progname, progname, progname, progname, progname);
> exit(1);
> }
> -
> -void
> -estrlcpy(char *dst, char *src, size_t len)
> -{
> - if (strlcpy(dst, src, len) >= len) {
> - errno = ENAMETOOLONG;
> - err(1, "Cannot copy `%s'", src);
> - }
> -}
> Index: sbin/rcorder/Makefile
> ===================================================================
> RCS file: /cvsroot/src/sbin/rcorder/Makefile,v
> retrieving revision 1.5
> diff -u -u -r1.5 Makefile
> --- sbin/rcorder/Makefile 27 Jun 2005 01:00:06 -0000 1.5
> +++ sbin/rcorder/Makefile 9 Jul 2006 22:02:00 -0000
> @@ -1,7 +1,10 @@
> # $NetBSD: Makefile,v 1.5 2005/06/27 01:00:06 christos Exp $
>
> PROG= rcorder
> -SRCS= ealloc.c hash.c rcorder.c
> +SRCS= hash.c rcorder.c
> MAN= rcorder.8
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: sbin/rcorder/hash.c
> ===================================================================
> RCS file: /cvsroot/src/sbin/rcorder/hash.c,v
> retrieving revision 1.3
> diff -u -u -r1.3 hash.c
> --- sbin/rcorder/hash.c 7 Aug 2003 10:04:37 -0000 1.3
> +++ sbin/rcorder/hash.c 9 Jul 2006 22:02:00 -0000
> @@ -87,6 +87,7 @@
> #include <stdlib.h>
> #include <string.h>
> #include <unistd.h>
> +#include <err.h>
>
> /* hash.c --
> *
> @@ -96,7 +97,6 @@
> * information increases.
> */
> #include "hash.h"
> -#include "ealloc.h"
>
> /*
> * Forward references to local procedures that are used before
> they're
> Index: sbin/rcorder/rcorder.c
> ===================================================================
> RCS file: /cvsroot/src/sbin/rcorder/rcorder.c,v
> retrieving revision 1.13
> diff -u -u -r1.13 rcorder.c
> --- sbin/rcorder/rcorder.c 21 Sep 2004 15:47:32 -0000 1.13
> +++ sbin/rcorder/rcorder.c 9 Jul 2006 22:02:01 -0000
> @@ -67,7 +67,6 @@
> #include <string.h>
> #include <unistd.h>
>
> -#include "ealloc.h"
> #include "hash.h"
>
> #ifdef DEBUG
> Index: usr.bin/column/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/column/Makefile,v
> retrieving revision 1.5
> diff -u -u -r1.5 Makefile
> --- usr.bin/column/Makefile 16 Mar 2006 16:49:07 -0000 1.5
> +++ usr.bin/column/Makefile 9 Jul 2006 22:02:27 -0000
> @@ -4,4 +4,7 @@
> PROG= column
> WARNS= 4
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: usr.bin/column/column.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/column/column.c,v
> retrieving revision 1.14
> diff -u -u -r1.14 column.c
> --- usr.bin/column/column.c 9 Apr 2006 19:51:23 -0000 1.14
> +++ usr.bin/column/column.c 9 Jul 2006 22:02:27 -0000
> @@ -57,9 +57,6 @@
> #define TAB 8
>
> static void c_columnate(void);
> -static void *emalloc(size_t);
> -static void *erealloc(void *, size_t);
> -static char *estrdup(const char *);
> static void input(FILE *);
> static void maketbl(void);
> static void print(void);
> @@ -291,37 +288,6 @@
> }
> }
>
> -static void *
> -emalloc(size_t size)
> -{
> - void *p;
> -
> - if ((p = malloc(size)) == NULL)
> - err(1, "malloc");
> - (void)memset(p, 0, size);
> - return (p);
> -}
> -
> -static void *
> -erealloc(void *op, size_t size)
> -{
> - void *p;
> -
> - if ((p = realloc(op, size)) == NULL)
> - err(1, "realloc");
> - return p;
> -}
> -
> -static char *
> -estrdup(const char *str)
> -{
> - char *p;
> -
> - if ((p = strdup(str)) == NULL)
> - err(1, "strdup");
> - return p;
> -}
> -
> static void
> usage(void)
> {
> Index: usr.bin/config/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/config/Makefile,v
> retrieving revision 1.3
> diff -u -u -r1.3 Makefile
> --- usr.bin/config/Makefile 4 Jun 2006 19:42:19 -0000 1.3
> +++ usr.bin/config/Makefile 9 Jul 2006 22:02:27 -0000
> @@ -9,6 +9,9 @@
> YHEADER=1
> CPPFLAGS+=-I${.CURDIR} -I.
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> CWARNFLAGS+=-Wno-format-y2k
>
> .include <bsd.prog.mk>
> Index: usr.bin/config/defs.h
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/config/defs.h,v
> retrieving revision 1.11
> diff -u -u -r1.11 defs.h
> --- usr.bin/config/defs.h 4 Jun 2006 13:52:27 -0000 1.11
> +++ usr.bin/config/defs.h 9 Jul 2006 22:02:28 -0000
> @@ -60,6 +60,7 @@
> #include <stdio.h>
> #include <stdlib.h>
> #include <unistd.h>
> +#include <err.h>
>
> /* These are really for MAKE_BOOTSTRAP but harmless. */
> #ifndef __dead
> @@ -534,10 +535,6 @@
> void initsem(void);
>
> /* util.c */
> -void *ecalloc(size_t, size_t);
> -void *emalloc(size_t);
> -void *erealloc(void *, size_t);
> -char *estrdup(const char *);
> void prefix_push(const char *);
> void prefix_pop(void);
> char *sourcepath(const char *);
> Index: usr.bin/config/util.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/config/util.c,v
> retrieving revision 1.2
> diff -u -u -r1.2 util.c
> --- usr.bin/config/util.c 4 Oct 2005 12:35:00 -0000 1.2
> +++ usr.bin/config/util.c 9 Jul 2006 22:02:28 -0000
> @@ -44,6 +44,7 @@
> #include "nbtool_config.h"
> #endif
>
> +#include <err.h>
> #include <ctype.h>
> #include <stdio.h>
> #include <stdlib.h>
> @@ -52,7 +53,6 @@
> #include <sys/types.h>
> #include "defs.h"
>
> -static void nomem(void);
> static void vxerror(const char *, int, const char *, va_list)
> __attribute__((__format__(__printf__, 3, 0)));
> static void vxwarn(const char *, int, const char *, va_list)
> @@ -62,67 +62,6 @@
> __attribute__((__format__(__printf__, 4, 0)));
>
> /*
> - * Calloc, with abort on error.
> - */
> -void *
> -ecalloc(size_t nelem, size_t size)
> -{
> - void *p;
> -
> - if ((p = calloc(nelem, size)) == NULL)
> - nomem();
> - return (p);
> -}
> -
> -/*
> - * Malloc, with abort on error.
> - */
> -void *
> -emalloc(size_t size)
> -{
> - void *p;
> -
> - if ((p = malloc(size)) == NULL)
> - nomem();
> - return (p);
> -}
> -
> -/*
> - * Realloc, with abort on error.
> - */
> -void *
> -erealloc(void *p, size_t size)
> -{
> - void *q;
> -
> - if ((q = realloc(p, size)) == NULL)
> - nomem();
> - p = q;
> - return (p);
> -}
> -
> -/*
> - * Strdup, with abort on error.
> - */
> -char *
> -estrdup(const char *p)
> -{
> - char *cp;
> -
> - if ((cp = strdup(p)) == NULL)
> - nomem();
> - return (cp);
> -}
> -
> -static void
> -nomem(void)
> -{
> -
> - (void)fprintf(stderr, "config: out of memory\n");
> - exit(1);
> -}
> -
> -/*
> * Push a prefix onto the prefix stack.
> */
> void
> Index: usr.bin/crunch/crunchgen/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/crunch/crunchgen/Makefile,v
> retrieving revision 1.13
> diff -u -u -r1.13 Makefile
> --- usr.bin/crunch/crunchgen/Makefile 3 Jan 2004 14:04:27 -0000 1.13
> +++ usr.bin/crunch/crunchgen/Makefile 9 Jul 2006 22:02:28 -0000
> @@ -8,6 +8,10 @@
> ${_MKTARGET_CREATE}
> ${HOST_SH} ${.ALLSRC} >${.TARGET}
>
> +
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
>
> .ifndef HOSTPROG
> Index: usr.bin/crunch/crunchgen/crunchgen.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/crunch/crunchgen/crunchgen.c,v
> retrieving revision 1.71
> diff -u -u -r1.71 crunchgen.c
> --- usr.bin/crunch/crunchgen/crunchgen.c 13 Jun 2006 17:18:56 -0000
> 1.71
> +++ usr.bin/crunch/crunchgen/crunchgen.c 9 Jul 2006 22:02:29 -0000
> @@ -115,8 +115,6 @@
> void add_string(strlst_t **listp, char *str);
> int is_dir(char *pathname);
> int is_nonempty_file(char *pathname);
> -static void estrlcpy(char *, const char *, size_t);
> -static void estrlcat(char *, const char *, size_t);
>
> /* helper routines for main() */
>
> @@ -164,13 +162,13 @@
> case 'O': oneobj = 0; break;
> case 'o': useobjs = 1, oneobj = 0; break;
>
> - case 'm': estrlcpy(outmkname, optarg, sizeof(outmkname)); break;
> - case 'c': estrlcpy(outcfname, optarg, sizeof(outcfname)); break;
> - case 'e': estrlcpy(execfname, optarg, sizeof(execfname)); break;
> - case 'd': estrlcpy(dbg, optarg, sizeof(dbg)); break;
> + case 'm': (void)estrlcpy(outmkname, optarg, sizeof(outmkname));
> break;
> + case 'c': (void)estrlcpy(outcfname, optarg, sizeof(outcfname));
> break;
> + case 'e': (void)estrlcpy(execfname, optarg, sizeof(execfname));
> break;
> + case 'd': (void)estrlcpy(dbg, optarg, sizeof(dbg)); break;
>
> - case 'D': estrlcpy(topdir, optarg, sizeof(topdir)); break;
> - case 'L': estrlcpy(libdir, optarg, sizeof(libdir)); break;
> + case 'D': (void)estrlcpy(topdir, optarg, sizeof(topdir)); break;
> + case 'L': (void)estrlcpy(libdir, optarg, sizeof(libdir)); break;
> case 'v': add_string(&vars, optarg); break;
>
> case '?':
> @@ -188,15 +186,15 @@
> * generate filenames
> */
>
> - estrlcpy(infilename, argv[0], sizeof(infilename));
> + (void)estrlcpy(infilename, argv[0], sizeof(infilename));
> getcwd(curdir, MAXPATHLEN);
>
> /* confname = `basename infilename .conf` */
>
> if ((p = strrchr(infilename, '/')) != NULL)
> - estrlcpy(confname, p + 1, sizeof(confname));
> + (void)estrlcpy(confname, p + 1, sizeof(confname));
> else
> - estrlcpy(confname, infilename, sizeof(confname));
> + (void)estrlcpy(confname, infilename, sizeof(confname));
> if ((p = strrchr(confname, '.')) != NULL && !strcmp(p, ".conf"))
> *p = '\0';
>
> @@ -273,7 +271,7 @@
>
> (void)snprintf(line, sizeof(line), "reading %s", filename);
> status(line);
> - estrlcpy(curfilename, filename, sizeof(curfilename));
> + (void)estrlcpy(curfilename, filename, sizeof(curfilename));
>
> if ((cf = fopen(curfilename, "r")) == NULL) {
> perror(curfilename);
> @@ -350,14 +348,14 @@
>
> for (i = 1; i < argc; i++) {
> if (argv[i][0] == '/')
> - estrlcpy(tmppath, argv[i], sizeof(tmppath));
> + (void)estrlcpy(tmppath, argv[i], sizeof(tmppath));
> else {
> if (topdir[0] == '\0')
> - estrlcpy(tmppath, curdir, sizeof(tmppath));
> + (void)estrlcpy(tmppath, curdir, sizeof(tmppath));
> else
> - estrlcpy(tmppath, topdir, sizeof(tmppath));
> - estrlcat(tmppath, "/", sizeof(tmppath));
> - estrlcat(tmppath, argv[i], sizeof(tmppath));
> + (void)estrlcpy(tmppath, topdir, sizeof(tmppath));
> + (void)estrlcat(tmppath, "/", sizeof(tmppath));
> + (void)estrlcat(tmppath, argv[i], sizeof(tmppath));
> }
> if (is_dir(tmppath))
> add_string(&srcdirs, tmppath);
> @@ -470,11 +468,11 @@
> } else {
> char tmppath[MAXPATHLEN];
> if (topdir[0] == '\0')
> - estrlcpy(tmppath, curdir, sizeof(tmppath));
> + (void)estrlcpy(tmppath, curdir, sizeof(tmppath));
> else
> - estrlcpy(tmppath, topdir, sizeof(tmppath));
> - estrlcat(tmppath, "/", sizeof(tmppath));
> - estrlcat(tmppath, argv[3], sizeof(tmppath));
> + (void)estrlcpy(tmppath, topdir, sizeof(tmppath));
> + (void)estrlcat(tmppath, "/", sizeof(tmppath));
> + (void)estrlcat(tmppath, argv[3], sizeof(tmppath));
> if ((p->srcdir = strdup(tmppath)) == NULL)
> out_of_memory();
> }
> @@ -603,11 +601,11 @@
> } else {
> char tmppath[MAXPATHLEN];
> if (topdir[0] == '\0')
> - estrlcpy(tmppath, curdir, sizeof(tmppath));
> + (void)estrlcpy(tmppath, curdir, sizeof(tmppath));
> else
> - estrlcpy(tmppath, topdir, sizeof(tmppath));
> - estrlcat(tmppath, "/", sizeof(tmppath));
> - estrlcat(tmppath, path, sizeof(tmppath));
> + (void)estrlcpy(tmppath, topdir, sizeof(tmppath));
> + (void)estrlcat(tmppath, "/", sizeof(tmppath));
> + (void)estrlcat(tmppath, path, sizeof(tmppath));
> if ((p->srcdir = strdup(tmppath)) == NULL)
> out_of_memory();
> }
> @@ -1146,21 +1144,3 @@
>
> return S_ISREG(buf.st_mode) && buf.st_size > 0;
> }
> -
> -static void
> -estrlcpy(char *dst, const char *src, size_t len)
> -{
> - if (strlcpy(dst, src, len) >= len) {
> - errno = ENAMETOOLONG;
> - err(1, "Cannot copy `%s'", src);
> - }
> -}
> -
> -static void
> -estrlcat(char *dst, const char *src, size_t len)
> -{
> - if (strlcat(dst, src, len) >= len) {
> - errno = ENAMETOOLONG;
> - err(1, "Cannot append `%s'", src);
> - }
> -}
> Index: usr.bin/find/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/find/Makefile,v
> retrieving revision 1.9
> diff -u -u -r1.9 Makefile
> --- usr.bin/find/Makefile 18 Sep 2002 14:00:36 -0000 1.9
> +++ usr.bin/find/Makefile 9 Jul 2006 22:02:29 -0000
> @@ -9,4 +9,7 @@
> CPPFLAGS+= -I${NETBSDSRCDIR}/bin/ls
> .PATH: ${NETBSDSRCDIR}/bin/ls
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: usr.bin/find/extern.h
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/find/extern.h,v
> retrieving revision 1.23
> diff -u -u -r1.23 extern.h
> --- usr.bin/find/extern.h 20 Feb 2006 16:31:02 -0000 1.23
> +++ usr.bin/find/extern.h 9 Jul 2006 22:02:29 -0000
> @@ -34,7 +34,6 @@
> #include <sys/cdefs.h>
>
> void brace_subst __P((char *, char **, char *, int *));
> -void *emalloc __P((unsigned int));
> PLAN *find_create __P((char ***));
> int find_execute __P((PLAN *, char **));
> PLAN *find_formplan __P((char **));
> Index: usr.bin/find/misc.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/find/misc.c,v
> retrieving revision 1.12
> diff -u -u -r1.12 misc.c
> --- usr.bin/find/misc.c 7 Aug 2003 11:13:42 -0000 1.12
> +++ usr.bin/find/misc.c 9 Jul 2006 22:02:29 -0000
> @@ -128,21 +128,6 @@
> }
>
> /*
> - * emalloc --
> - * malloc with error checking.
> - */
> -void *
> -emalloc(len)
> - u_int len;
> -{
> - void *p;
> -
> - if ((p = malloc(len)) == NULL)
> - err(1, "malloc");
> - return (p);
> -}
> -
> -/*
> * show_path --
> * called on SIGINFO
> */
> Index: usr.bin/hexdump/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/hexdump/Makefile,v
> retrieving revision 1.9
> diff -u -u -r1.9 Makefile
> --- usr.bin/hexdump/Makefile 18 May 2003 07:57:34 -0000 1.9
> +++ usr.bin/hexdump/Makefile 9 Jul 2006 22:02:29 -0000
> @@ -7,6 +7,9 @@
> WFORMAT= 1
> WARNS= 2
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .ifndef HOSTPROG
> LINKS= ${BINDIR}/hexdump ${BINDIR}/od
> .endif
> Index: usr.bin/hexdump/display.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/hexdump/display.c,v
> retrieving revision 1.19
> diff -u -u -r1.19 display.c
> --- usr.bin/hexdump/display.c 4 Jan 2006 01:30:21 -0000 1.19
> +++ usr.bin/hexdump/display.c 9 Jul 2006 22:02:29 -0000
> @@ -238,8 +238,8 @@
> u_char *tmpp;
>
> if (!curp) {
> - curp = emalloc(blocksize);
> - savp = emalloc(blocksize);
> + curp = ecalloc(blocksize, 1);
> + savp = ecalloc(blocksize, 1);
> } else {
> tmpp = curp;
> curp = savp;
> @@ -357,20 +357,3 @@
> skip -= cnt;
> }
> }
> -
> -void *
> -emalloc(int allocsize)
> -{
> - void *p;
> -
> - if ((p = malloc((u_int)allocsize)) == NULL)
> - nomem();
> - memset(p, 0, allocsize);
> - return(p);
> -}
> -
> -void
> -nomem(void)
> -{
> - err(1, NULL);
> -}
> Index: usr.bin/hexdump/hexdump.h
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/hexdump/hexdump.h,v
> retrieving revision 1.9
> diff -u -u -r1.9 hexdump.h
> --- usr.bin/hexdump/hexdump.h 4 Jan 2006 01:30:21 -0000 1.9
> +++ usr.bin/hexdump/hexdump.h 9 Jul 2006 22:02:30 -0000
> @@ -91,12 +91,10 @@
> void display(void);
> void doskip(const char *, int);
> /*void err(const char *, ...);*/
> -void *emalloc(int);
> void escape(char *);
> u_char *get(void);
> void newsyntax(int, char ***);
> int next(char **);
> -void nomem(void);
> void oldsyntax(int, char ***);
> void rewrite(FS *);
> int size(FS *);
> Index: usr.bin/hexdump/odsyntax.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/hexdump/odsyntax.c,v
> retrieving revision 1.23
> diff -u -u -r1.23 odsyntax.c
> --- usr.bin/hexdump/odsyntax.c 4 Jan 2006 01:30:21 -0000 1.23
> +++ usr.bin/hexdump/odsyntax.c 9 Jul 2006 22:02:30 -0000
> @@ -284,10 +284,9 @@
> break;
> if (odf->type == 0)
> errx(1, "%c%d: format not supported", type, nbytes);
> - asprintf(&fmt, "%d/%d \"%*s%s \" \"\\n\"",
> + (void)easprintf(&fmt, "%d/%d \"%*s%s \" \"\\n\"",
> 16 / nbytes, nbytes,
> 4 * nbytes - odf->minwidth, "", odf->format);
> - if (fmt == NULL) nomem();
> add(fmt);
> }
> }
> Index: usr.bin/hexdump/parse.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/hexdump/parse.c,v
> retrieving revision 1.19
> diff -u -u -r1.19 parse.c
> --- usr.bin/hexdump/parse.c 30 Mar 2006 19:53:58 -0000 1.19
> +++ usr.bin/hexdump/parse.c 9 Jul 2006 22:02:30 -0000
> @@ -145,8 +145,7 @@
> for (savep = ++p; *p != '"';)
> if (*p++ == 0)
> badfmt(fmt);
> - if (!(tfu->fmt = malloc(p - savep + 1)))
> - nomem();
> + tfu->fmt = emalloc(p - savep + 1);
> (void) strncpy(tfu->fmt, savep, p - savep);
> tfu->fmt[p - savep] = '\0';
> escape(tfu->fmt);
> Index: usr.bin/iconv/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/iconv/Makefile,v
> retrieving revision 1.4
> diff -u -u -r1.4 Makefile
> --- usr.bin/iconv/Makefile 24 Apr 2005 17:46:06 -0000 1.4
> +++ usr.bin/iconv/Makefile 9 Jul 2006 22:02:30 -0000
> @@ -8,4 +8,7 @@
> CPPFLAGS+= -I. -I${.CURDIR} -I${NETBSDSRCDIR}/lib/libc
> MAN= iconv.1
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: usr.bin/iconv/iconv.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/iconv/iconv.c,v
> retrieving revision 1.9
> diff -u -u -r1.9 iconv.c
> --- usr.bin/iconv/iconv.c 25 Apr 2005 13:57:34 -0000 1.9
> +++ usr.bin/iconv/iconv.c 9 Jul 2006 22:02:30 -0000
> @@ -40,7 +40,6 @@
> #include <err.h>
>
> static void usage(void) __attribute__((__unused__));
> -static char *estrdup(const char *);
> static int scmp(const void *, const void *);
> static void show_codesets(void);
> static void do_conv(const char *, FILE *, const char *, const char
> *, int, int);
> @@ -53,15 +52,6 @@
> exit(1);
> }
>
> -static char *
> -estrdup(const char *str)
> -{
> - char *ptr = strdup(str);
> - if (ptr == NULL)
> - err(EXIT_FAILURE, "Cannot copy string");
> - return ptr;
> -}
> -
> /*
> * qsort() helper function
> */
> Index: usr.bin/make/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/make/Makefile,v
> retrieving revision 1.36
> diff -u -u -r1.36 Makefile
> --- usr.bin/make/Makefile 15 Jun 2006 10:55:02 -0000 1.36
> +++ usr.bin/make/Makefile 9 Jul 2006 22:02:31 -0000
> @@ -31,6 +31,9 @@
> main.o: ${OBJS:Nmain.o} ${MAKEFILE}
> COPTS.var.c+= -Wno-cast-qual
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> # A simple unit-test driver to help catch regressions
> accept test:
> cd ${.CURDIR}/unit-tests && ${.MAKE:S,^./,${.CURDIR}/,} TEST_MAKE=
> ${TEST_MAKE:U${.OBJDIR}/${PROG:T}} ${.TARGET}
> Index: usr.bin/make/main.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/make/main.c,v
> retrieving revision 1.127
> diff -u -u -r1.127 main.c
> --- usr.bin/make/main.c 29 Jun 2006 22:02:06 -0000 1.127
> +++ usr.bin/make/main.c 9 Jul 2006 22:02:32 -0000
> @@ -1341,13 +1341,13 @@
> *
> * Results:
> * A string containing the output of the command, or the empty string
> - * If err is not NULL, it contains the reason for the command failure
> + * If errnum is not NULL, it contains the reason for the command
> failure
> *
> * Side Effects:
> * The string must be freed by the caller.
> */
> char *
> -Cmd_Exec(const char *cmd, const char **err)
> +Cmd_Exec(const char *cmd, const char **errnum)
> {
> const char *args[4]; /* Args for invoking the shell */
> int fds[2]; /* Pipe streams */
> @@ -1360,7 +1360,7 @@
> int cc;
>
>
> - *err = NULL;
> + *errnum = NULL;
>
> if (!shellName)
> Shell_Init();
> @@ -1376,7 +1376,7 @@
> * Open a pipe for fetching its output
> */
> if (pipe(fds) == -1) {
> - *err = "Couldn't create pipe for \"%s\"";
> + *errnum = "Couldn't create pipe for \"%s\"";
> goto bad;
> }
>
> @@ -1403,7 +1403,7 @@
> /*NOTREACHED*/
>
> case -1:
> - *err = "Couldn't exec \"%s\"";
> + *errnum = "Couldn't exec \"%s\"";
> goto bad;
>
> default:
> @@ -1437,10 +1437,10 @@
> Buf_Destroy(buf, FALSE);
>
> if (cc == 0)
> - *err = "Couldn't read shell's output for \"%s\"";
> + *errnum = "Couldn't read shell's output for \"%s\"";
>
> if (status)
> - *err = "\"%s\" returned non-zero status";
> + *errnum = "\"%s\" returned non-zero status";
>
> /*
> * Null-terminate the result, convert newlines to spaces and
> @@ -1596,6 +1596,7 @@
> Fatal("%d error%s", errors, errors == 1 ? "" : "s");
> }
>
> +#ifndef __NetBSD__
> /*
> * emalloc --
> * malloc, but die on error.
> @@ -1646,6 +1647,7 @@
> (void)fprintf(stderr, "%s: %s.\n", progname, strerror(errno));
> exit(2);
> }
> +#endif
>
> /*
> * enunlink --
> Index: usr.bin/make/nonints.h
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/make/nonints.h,v
> retrieving revision 1.36
> diff -u -u -r1.36 nonints.h
> --- usr.bin/make/nonints.h 31 Mar 2006 21:58:08 -0000 1.36
> +++ usr.bin/make/nonints.h 9 Jul 2006 22:02:32 -0000
> @@ -115,10 +115,14 @@
> void DieHorribly(void) __attribute__((__noreturn__));
> int PrintAddr(ClientData, ClientData);
> void Finish(int);
> +#ifndef __NetBSD__
> char *estrdup(const char *);
> void *emalloc(size_t);
> void *erealloc(void *, size_t);
> void enomem(void);
> +#else
> +#include <err.h>
> +#endif
> int eunlink(const char *);
> void execError(const char *, const char *);
>
> Index: usr.bin/make/parse.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/make/parse.c,v
> retrieving revision 1.114
> diff -u -u -r1.114 parse.c
> --- usr.bin/make/parse.c 31 Mar 2006 21:58:08 -0000 1.114
> +++ usr.bin/make/parse.c 9 Jul 2006 22:02:34 -0000
> @@ -1206,17 +1206,17 @@
> * allow on this line...
> */
> if (specType != Not && specType != ExPath) {
> - Boolean warn = FALSE;
> + Boolean warning = FALSE;
>
> while (*cp && (ParseIsEscaped(lstart, cp) ||
> ((*cp != '!') && (*cp != ':')))) {
> if (ParseIsEscaped(lstart, cp) ||
> (*cp != ' ' && *cp != '\t')) {
> - warn = TRUE;
> + warning = TRUE;
> }
> cp++;
> }
> - if (warn) {
> + if (warning) {
> Parse_Error(PARSE_WARNING, "Extra target ignored");
> }
> } else {
> @@ -1734,7 +1734,7 @@
> Var_Set(line, cp, ctxt, 0);
> } else if (type == VAR_SHELL) {
> char *res;
> - const char *err;
> + const char *error;
>
> if (strchr(cp, '$') != NULL) {
> /*
> @@ -1746,12 +1746,12 @@
> freeCp = TRUE;
> }
>
> - res = Cmd_Exec(cp, &err);
> + res = Cmd_Exec(cp, &error);
> Var_Set(line, res, ctxt, 0);
> free(res);
>
> - if (err)
> - Parse_Error(PARSE_WARNING, err, cp);
> + if (error)
> + Parse_Error(PARSE_WARNING, error, cp);
> } else {
> /*
> * Normal assignment -- just do it.
> Index: usr.bin/make/var.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/make/var.c,v
> retrieving revision 1.111
> diff -u -u -r1.111 var.c
> --- usr.bin/make/var.c 29 Jun 2006 22:01:17 -0000 1.111
> +++ usr.bin/make/var.c 9 Jul 2006 22:02:36 -0000
> @@ -144,7 +144,7 @@
> char var_Error[] = "";
>
> /*
> - * Similar to var_Error, but returned when the 'err' flag for
> Var_Parse is
> + * Similar to var_Error, but returned when the 'errnum' flag for
> Var_Parse is
> * set false. Why not just use a constant? Well, gcc likes to
> condense
> * identical string instances...
> */
> @@ -232,7 +232,7 @@
> int tvarLen;
> char *str; /* string to expand */
> int strLen;
> - int err; /* err for not defined */
> + int errnum; /* errnum for not defined */
> } VarLoop_t;
>
> #ifndef NO_REGEX
> @@ -1219,14 +1219,14 @@
>
> *---------------------------------------------------------------------
> --
> */
> static void
> -VarREError(int err, regex_t *pat, const char *str)
> +VarREError(int errnum, regex_t *pat, const char *str)
> {
> char *errbuf;
> int errlen;
>
> - errlen = regerror(err, pat, 0, 0);
> + errlen = regerror(errnum, pat, 0, 0);
> errbuf = emalloc(errlen);
> - regerror(err, pat, errbuf, errlen);
> + regerror(errnum, pat, errbuf, errlen);
> Error("%s: %s", str, errbuf);
> free(errbuf);
> }
> @@ -1397,7 +1397,7 @@
>
> if (word && *word) {
> Var_Set(loop->tvar, word, loop->ctxt, VAR_NO_EXPORT);
> - s = Var_Subst(NULL, loop->str, loop->ctxt, loop->err);
> + s = Var_Subst(NULL, loop->str, loop->ctxt, loop->errnum);
> if (s != NULL && *s != '\0') {
> if (addSpace && *s != '\n')
> Buf_AddByte(buf, ' ');
> @@ -1716,7 +1716,7 @@
> */
> static char *
> VarGetPattern(GNode *ctxt, Var_Parse_State *vpstate __unused,
> - int err, const char **tstr, int delim, int *flags,
> + int errnum, const char **tstr, int delim, int *flags,
> int *length, VarPattern *pattern)
> {
> const char *cp;
> @@ -1760,7 +1760,7 @@
> * delimiter, assume it's a variable
> * substitution and recurse.
> */
> - cp2 = Var_Parse(cp, ctxt, err, &len, &freeIt);
> + cp2 = Var_Parse(cp, ctxt, errnum, &len, &freeIt);
> Buf_AddBytes(buf, strlen(cp2), (Byte *)cp2);
> if (freeIt)
> free(freeIt);
> @@ -1978,7 +1978,7 @@
> static char *
> ApplyModifiers(char *nstr, const char *tstr,
> int startc, int endc,
> - Var *v, GNode *ctxt, Boolean err,
> + Var *v, GNode *ctxt, Boolean errnum,
> int *lengthPtr, void **freePtr)
> {
> const char *start;
> @@ -2007,7 +2007,7 @@
> char *rval;
> int rlen;
>
> - rval = Var_Parse(tstr, ctxt, err, &rlen, &freeIt);
> + rval = Var_Parse(tstr, ctxt, errnum, &rlen, &freeIt);
>
> if (DEBUG(VAR)) {
> printf("Got '%s' from '%.*s'%.*s\n",
> @@ -2021,9 +2021,9 @@
>
> nstr = ApplyModifiers(nstr, rval,
> 0, 0,
> - v, ctxt, err, &used, freePtr);
> + v, ctxt, errnum, &used, freePtr);
> if (nstr == var_Error
> - || (nstr == varNoError && err == 0)
> + || (nstr == varNoError && errnum == 0)
> || strlen(rval) != (size_t) used) {
> if (freeIt)
> free(freeIt);
> @@ -2086,7 +2086,7 @@
> delim = BRCLOSE;
> pattern.flags = 0;
>
> - pattern.rhs = VarGetPattern(ctxt, &parsestate, err,
> + pattern.rhs = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim, NULL,
> &pattern.rightLen,
> NULL);
> @@ -2135,13 +2135,13 @@
>
> cp = ++tstr;
> delim = '@';
> - if ((loop.tvar = VarGetPattern(ctxt, &parsestate, err,
> + if ((loop.tvar = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim,
> &flags, &loop.tvarLen,
> NULL)) == NULL)
> goto cleanup;
>
> - if ((loop.str = VarGetPattern(ctxt, &parsestate, err,
> + if ((loop.str = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim,
> &flags, &loop.strLen,
> NULL)) == NULL)
> @@ -2150,7 +2150,7 @@
> termc = *cp;
> delim = '\0';
>
> - loop.err = err;
> + loop.errnum = errnum;
> loop.ctxt = ctxt;
> newStr = VarModify(ctxt, &parsestate, nstr, VarLoopExpand,
> (ClientData)&loop);
> @@ -2192,7 +2192,7 @@
> int len;
> void *freeIt;
>
> - cp2 = Var_Parse(cp, ctxt, err, &len, &freeIt);
> + cp2 = Var_Parse(cp, ctxt, errnum, &len, &freeIt);
> Buf_AddBytes(buf, strlen(cp2), (Byte *)cp2);
> if (freeIt)
> free(freeIt);
> @@ -2259,7 +2259,7 @@
> delim = '!';
>
> cp = ++tstr;
> - if ((pattern.rhs = VarGetPattern(ctxt, &parsestate, err,
> + if ((pattern.rhs = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim,
> NULL, &pattern.rightLen,
> NULL)) == NULL)
> @@ -2289,7 +2289,7 @@
> cp = tstr+1; /* point to char after '[' */
> delim = ']'; /* look for closing ']' */
> estr = VarGetPattern(ctxt, &parsestate,
> - err, &cp, delim,
> + errnum, &cp, delim,
> NULL, NULL, NULL);
> if (estr == NULL)
> goto cleanup; /* report missing ']' */
> @@ -2580,7 +2580,7 @@
> }
> if ((cp2 = strchr(pattern, '$'))) {
> cp2 = pattern;
> - pattern = Var_Subst(NULL, cp2, ctxt, err);
> + pattern = Var_Subst(NULL, cp2, ctxt, errnum);
> if (copy)
> free(cp2);
> copy = TRUE;
> @@ -2617,14 +2617,14 @@
> }
>
> cp = tstr;
> - if ((pattern.lhs = VarGetPattern(ctxt, &parsestate, err,
> + if ((pattern.lhs = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim,
> &pattern.flags,
> &pattern.leftLen,
> NULL)) == NULL)
> goto cleanup;
>
> - if ((pattern.rhs = VarGetPattern(ctxt, &parsestate, err,
> + if ((pattern.rhs = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim, NULL,
> &pattern.rightLen,
> &pattern)) == NULL)
> @@ -2674,7 +2674,7 @@
>
> cp = ++tstr;
> delim = ':';
> - if ((pattern.lhs = VarGetPattern(ctxt, &parsestate, err,
> + if ((pattern.lhs = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim, NULL,
> &pattern.leftLen,
> NULL)) == NULL)
> @@ -2682,7 +2682,7 @@
>
> /* BROPEN or PROPEN */
> delim = endc;
> - if ((pattern.rhs = VarGetPattern(ctxt, &parsestate, err,
> + if ((pattern.rhs = VarGetPattern(ctxt, &parsestate, errnum,
> &cp, delim, NULL,
> &pattern.rightLen,
> NULL)) == NULL)
> @@ -2724,12 +2724,12 @@
>
> cp = tstr;
>
> - if ((re = VarGetPattern(ctxt, &parsestate, err, &cp, delim,
> + if ((re = VarGetPattern(ctxt, &parsestate, errnum, &cp, delim,
> NULL, NULL, NULL)) == NULL)
> goto cleanup;
>
> if ((pattern.replace = VarGetPattern(ctxt, &parsestate,
> - err, &cp, delim, NULL,
> + errnum, &cp, delim, NULL,
> NULL, NULL)) == NULL){
> free(re);
> goto cleanup;
> @@ -2903,12 +2903,12 @@
> delim='=';
> cp = tstr;
> if ((pattern.lhs = VarGetPattern(ctxt, &parsestate,
> - err, &cp, delim, &pattern.flags,
> + errnum, &cp, delim, &pattern.flags,
> &pattern.leftLen, NULL)) == NULL)
> goto cleanup;
> delim = endc;
> if ((pattern.rhs = VarGetPattern(ctxt, &parsestate,
> - err, &cp, delim, NULL, &pattern.rightLen,
> + errnum, &cp, delim, NULL, &pattern.rightLen,
> &pattern)) == NULL)
> goto cleanup;
>
> @@ -2991,7 +2991,7 @@
> * Input:
> * str The string to parse
> * ctxt The context for the variable
> - * err TRUE if undefined variables are an error
> + * errnum TRUE if undefined variables are an error
> * lengthPtr OUT: The length of the specification
> * freePtr OUT: TRUE if caller should free result
> *
> @@ -3010,7 +3010,7 @@
> */
> /* coverity[+alloc : arg-*4] */
> char *
> -Var_Parse(const char *str, GNode *ctxt, Boolean err, int *lengthPtr,
> +Var_Parse(const char *str, GNode *ctxt, Boolean errnum, int
> *lengthPtr,
> void **freePtr)
> {
> const char *tstr; /* Pointer into str */
> @@ -3074,7 +3074,7 @@
> /*
> * Error
> */
> - return (err ? var_Error : varNoError);
> + return (errnum ? var_Error : varNoError);
> } else {
> haveModifier = FALSE;
> tstr = &str[1];
> @@ -3082,7 +3082,7 @@
> }
> } else if (str[1] == '\0') {
> *lengthPtr = 1;
> - return (err ? var_Error : varNoError);
> + return (errnum ? var_Error : varNoError);
> } else {
> Buffer buf; /* Holds the variable name */
>
> @@ -3103,7 +3103,7 @@
> if (*tstr == '$') {
> int rlen;
> void *freeIt;
> - char *rval = Var_Parse(tstr, ctxt, err, &rlen, &freeIt);
> + char *rval = Var_Parse(tstr, ctxt, errnum, &rlen, &freeIt);
> if (rval != NULL) {
> Buf_AddBytes(buf, strlen(rval), (Byte *)rval);
> }
> @@ -3245,7 +3245,7 @@
> return(pstr);
> } else {
> Buf_Destroy(buf, TRUE);
> - return (err ? var_Error : varNoError);
> + return (errnum ? var_Error : varNoError);
> }
> } else {
> /*
> @@ -3280,7 +3280,7 @@
> */
> nstr = (char *)Buf_GetAll(v->val, NULL);
> if (strchr(nstr, '$') != NULL) {
> - nstr = Var_Subst(NULL, nstr, ctxt, err);
> + nstr = Var_Subst(NULL, nstr, ctxt, errnum);
> *freePtr = nstr;
> }
>
> @@ -3295,7 +3295,7 @@
> tstr++;
>
> nstr = ApplyModifiers(nstr, tstr, startc, endc,
> - v, ctxt, err, &used, freePtr);
> + v, ctxt, errnum, &used, freePtr);
> tstr += used;
> *lengthPtr = tstr - start + 1;
> } else {
> Index: usr.bin/shuffle/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/shuffle/Makefile,v
> retrieving revision 1.1
> diff -u -u -r1.1 Makefile
> --- usr.bin/shuffle/Makefile 23 Sep 1998 21:05:59 -0000 1.1
> +++ usr.bin/shuffle/Makefile 9 Jul 2006 22:02:37 -0000
> @@ -2,4 +2,7 @@
>
> PROG= shuffle
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: usr.bin/shuffle/shuffle.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/shuffle/shuffle.c,v
> retrieving revision 1.18
> diff -u -u -r1.18 shuffle.c
> --- usr.bin/shuffle/shuffle.c 1 Dec 2004 00:03:45 -0000 1.18
> +++ usr.bin/shuffle/shuffle.c 9 Jul 2006 22:02:37 -0000
> @@ -46,10 +46,6 @@
> #include <string.h>
> #include <unistd.h>
>
> -static void enomem(void);
> -static void *emalloc(size_t);
> -static void *erealloc(void *, size_t);
> -
> static size_t *get_shuffle(size_t);
> static void usage(void);
> static void get_lines(const char *, char ***, size_t *);
> @@ -58,42 +54,6 @@
> int main(int, char *[]);
>
> /*
> - * enomem --
> - * die when out of memory.
> - */
> -static void
> -enomem(void)
> -{
> - errx(2, "Cannot allocate memory.");
> -}
> -
> -/*
> - * emalloc --
> - * malloc, but die on error.
> - */
> -static void *
> -emalloc(size_t len)
> -{
> - void *p;
> -
> - if ((p = malloc(len)) == NULL)
> - enomem();
> - return p;
> -}
> -
> -/*
> - * erealloc --
> - * realloc, but die on error.
> - */
> -void *
> -erealloc(void *ptr, size_t size)
> -{
> - if ((ptr = realloc(ptr, size)) == NULL)
> - enomem();
> - return ptr;
> -}
> -
> -/*
> * get_shuffle --
> * Construct a random shuffle array of t elements
> */
> Index: usr.bin/spell/spellprog/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/spell/spellprog/Makefile,v
> retrieving revision 1.2
> diff -u -u -r1.2 Makefile
> --- usr.bin/spell/spellprog/Makefile 30 Jun 2005 16:25:05 -0000 1.2
> +++ usr.bin/spell/spellprog/Makefile 9 Jul 2006 22:02:37 -0000
> @@ -6,4 +6,7 @@
> SRCS= spellprog.c look.c
> BINDIR= /usr/libexec
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: usr.bin/spell/spellprog/spellprog.c
> ===================================================================
> RCS file: /cvsroot/src/usr.bin/spell/spellprog/spellprog.c,v
> retrieving revision 1.4
> diff -u -u -r1.4 spellprog.c
> --- usr.bin/spell/spellprog/spellprog.c 17 Jul 2005 17:08:25 -0000 1.4
> +++ usr.bin/spell/spellprog/spellprog.c 9 Jul 2006 22:02:37 -0000
> @@ -106,7 +106,6 @@
> static int vowel(int);
> static const char *lookuppref(char **, char *);
> static char *skipv(char *);
> -static char *estrdup(const char *);
> static void ise(void);
> static void print_word(FILE *);
> static void ztos(char *);
> @@ -789,16 +788,6 @@
> *st = 's';
> }
>
> -static char *
> -estrdup(const char *st)
> -{
> - char *d;
> -
> - if ((d = strdup(st)) == NULL)
> - err(1, "strdup");
> - return d;
> -}
> -
> /*
> * Look up a word in the dictionary.
> * Returns 1 if found, 0 if not.
> Index: usr.sbin/gspa/gspa/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/gspa/gspa/Makefile,v
> retrieving revision 1.10
> diff -u -u -r1.10 Makefile
> --- usr.sbin/gspa/gspa/Makefile 1 Aug 2003 17:04:07 -0000 1.10
> +++ usr.sbin/gspa/gspa/Makefile 9 Jul 2006 22:02:39 -0000
> @@ -8,4 +8,7 @@
> gsp_inst.c gsp_pseu.c gsp_gram.y
> YHEADER=1
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: usr.sbin/gspa/gspa/gsp_ass.h
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/gspa/gspa/gsp_ass.h,v
> retrieving revision 1.9
> diff -u -u -r1.9 gsp_ass.h
> --- usr.sbin/gspa/gspa/gsp_ass.h 13 May 2006 22:34:50 -0000 1.9
> +++ usr.sbin/gspa/gspa/gsp_ass.h 9 Jul 2006 22:02:39 -0000
> @@ -33,7 +33,7 @@
>
> #include <stddef.h>
> #include <sys/types.h>
> -/*#include <alloca.h>*/
> +#include <err.h>
>
> #define MAXLINE 133
>
> @@ -127,7 +127,6 @@
> /* Prototypes */
> operand abs_adr(expr);
> operand add_operand(operand, operand);
> -void *emalloc(size_t nbytes);
> expr bexpr(int, expr, expr);
> void do_asg(char *, expr, int flags);
> void do_list_pc(void);
> Index: usr.sbin/gspa/gspa/gspa.c
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/gspa/gspa/gspa.c,v
> retrieving revision 1.11
> diff -u -u -r1.11 gspa.c
> --- usr.sbin/gspa/gspa/gspa.c 13 May 2006 22:34:50 -0000 1.11
> +++ usr.sbin/gspa/gspa/gspa.c 9 Jul 2006 22:02:39 -0000
> @@ -290,18 +290,6 @@
> longjmp(synerrjmp, 1);
> }
>
> -void *
> -emalloc(size_t nbytes)
> -{
> - void *p;
> -
> - if( (p = malloc(nbytes)) == NULL ){
> - fprintf(stderr, "Insufficient memory at line %d\n", lineno);
> - exit(1);
> - }
> - return p;
> -}
> -
> void
> usage()
> {
> Index: usr.sbin/mountd/mountd.c
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/mountd/mountd.c,v
> retrieving revision 1.106
> diff -u -u -r1.106 mountd.c
> --- usr.sbin/mountd/mountd.c 25 May 2006 00:37:03 -0000 1.106
> +++ usr.sbin/mountd/mountd.c 9 Jul 2006 22:02:41 -0000
> @@ -217,8 +217,6 @@
> static int xdr_explist __P((XDR *, caddr_t));
> static int xdr_fhs __P((XDR *, caddr_t));
> static int xdr_mlist __P((XDR *, caddr_t));
> -static void *emalloc __P((size_t));
> -static char *estrdup __P((const char *));
> static int bitcmp __P((void *, void *, int));
> static int netpartcmp __P((struct sockaddr *, struct sockaddr *,
> int));
> static int sacmp __P((struct sockaddr *, struct sockaddr *));
> @@ -1942,35 +1940,6 @@
> #endif /* ISO */
>
> /*
> - * error checked malloc and strdup
> - */
> -static void *
> -emalloc(n)
> - size_t n;
> -{
> - void *ptr = malloc(n);
> -
> - if (ptr == NULL) {
> - syslog(LOG_ERR, "%m");
> - exit(2);
> - }
> - return ptr;
> -}
> -
> -static char *
> -estrdup(s)
> - const char *s;
> -{
> - char *n = strdup(s);
> -
> - if (n == NULL) {
> - syslog(LOG_ERR, "%m");
> - exit(2);
> - }
> - return n;
> -}
> -
> -/*
> * Do the nfssvc syscall to push the export info into the kernel.
> */
> static int
> Index: usr.sbin/netgroup_mkdb/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/netgroup_mkdb/Makefile,v
> retrieving revision 1.3
> diff -u -u -r1.3 Makefile
> --- usr.sbin/netgroup_mkdb/Makefile 4 Oct 1996 05:15:27 -0000 1.3
> +++ usr.sbin/netgroup_mkdb/Makefile 9 Jul 2006 22:02:41 -0000
> @@ -2,7 +2,10 @@
> # $NetBSD: Makefile,v 1.3 1996/10/04 05:15:27 christos Exp $
>
> PROG= netgroup_mkdb
> -SRCS= netgroup_mkdb.c util.c str.c
> +SRCS= netgroup_mkdb.c str.c
> MAN= netgroup_mkdb.8
>
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
> .include <bsd.prog.mk>
> Index: usr.sbin/netgroup_mkdb/netgroup_mkdb.c
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/netgroup_mkdb/netgroup_mkdb.c,v
> retrieving revision 1.13
> diff -u -u -r1.13 netgroup_mkdb.c
> --- usr.sbin/netgroup_mkdb/netgroup_mkdb.c 25 May 2006 01:20:21
> -0000 1.13
> +++ usr.sbin/netgroup_mkdb/netgroup_mkdb.c 9 Jul 2006 22:02:42 -0000
> @@ -222,7 +222,7 @@
> if (db == NULL)
> err(1, "dbopen");
>
> - while ((buf = getline(fp, &size)) != NULL) {
> + while ((buf = fparseln(fp, &size, NULL, NULL, 0)) != NULL) {
> tail = head = NULL;
> p = buf;
>
> Index: usr.sbin/netgroup_mkdb/str.c
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/netgroup_mkdb/str.c,v
> retrieving revision 1.4
> diff -u -u -r1.4 str.c
> --- usr.sbin/netgroup_mkdb/str.c 17 Oct 1997 11:49:10 -0000 1.4
> +++ usr.sbin/netgroup_mkdb/str.c 9 Jul 2006 22:02:42 -0000
> @@ -41,8 +41,8 @@
> */
> #include <stdlib.h>
> #include <string.h>
> +#include <err.h>
>
> -#include "util.h"
> #include "str.h"
>
> /*
> Index: usr.sbin/ntp/libntp/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/ntp/libntp/Makefile,v
> retrieving revision 1.8
> diff -u -u -r1.8 Makefile
> --- usr.sbin/ntp/libntp/Makefile 11 Jun 2006 19:34:22 -0000 1.8
> +++ usr.sbin/ntp/libntp/Makefile 9 Jul 2006 22:02:42 -0000
> @@ -7,7 +7,7 @@
> audio.c authkeys.c authreadkeys.c authusekey.c \
> buftvtots.c caljulian.c caltontp.c calyearstart.c \
> clocktime.c clocktypes.c decodenetnum.c dofptoa.c dolfptoa.c \
> - emalloc.c findconfig.c fptoa.c fptoms.c getopt.c hextoint.c \
> + findconfig.c fptoa.c fptoms.c getopt.c hextoint.c \
> hextolfp.c humandate.c icom.c inttoa.c iosignal.c lib_strbuf.c \
> machines.c md5c.c \
> memmove.c mfptoa.c mfptoms.c mktime.c modetoa.c mstolfp.c
> msutotsf.c \
> Index: usr.sbin/ntp/ntpd/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/ntp/ntpd/Makefile,v
> retrieving revision 1.13
> diff -u -u -r1.13 Makefile
> --- usr.sbin/ntp/ntpd/Makefile 11 Jun 2006 19:34:28 -0000 1.13
> +++ usr.sbin/ntp/ntpd/Makefile 9 Jul 2006 22:02:42 -0000
> @@ -31,7 +31,7 @@
> LDADD+= -L${LIBPARSE} -lparse -L${LIBISC} -lisc
> DPADD+= ${LIBPARSE}/libparse.a ${LIBISC}/libisc.a
>
> -LDADD+= -lm
> -DPADD+= ${LIBM}
> +LDADD+= -lutil -lm
> +DPADD+= ${LIBUTIL} ${LIBM}
>
> .include <bsd.prog.mk>
> Index: usr.sbin/ntp/ntpdate/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/ntp/ntpdate/Makefile,v
> retrieving revision 1.4
> diff -u -u -r1.4 Makefile
> --- usr.sbin/ntp/ntpdate/Makefile 11 Jun 2006 19:34:28 -0000 1.4
> +++ usr.sbin/ntp/ntpdate/Makefile 9 Jul 2006 22:02:42 -0000
> @@ -13,7 +13,7 @@
> LDADD+= -L${LIBISC} -lisc
> DPADD+= ${LIBISC}/libisc.a
>
> -LDADD+= -lm
> -DPADD+= ${LIBM}
> +LDADD+= -lutil -lm
> +DPADD+= ${LIBUTIL} ${LIBM}
>
> .include <bsd.prog.mk>
> Index: usr.sbin/sup/Makefile.inc
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/sup/Makefile.inc,v
> retrieving revision 1.8
> diff -u -u -r1.8 Makefile.inc
> --- usr.sbin/sup/Makefile.inc 3 Apr 2003 17:56:52 -0000 1.8
> +++ usr.sbin/sup/Makefile.inc 9 Jul 2006 22:02:42 -0000
> @@ -10,6 +10,8 @@
> LIBSUPDIR != cd ${.CURDIR}/../lib && ${PRINTOBJDIR}
> LIBSUP= ${LIBSUPDIR}/libsup.a
> SUPLIB= -L${LIBSUPDIR} -lsup
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
>
> .if exists(${.CURDIR}/../../Makefile.inc)
> .include "${.CURDIR}/../../Makefile.inc"
> Index: usr.sbin/sup/lib/Makefile
> ===================================================================
> RCS file: /cvsroot/src/usr.sbin/sup/lib/Makefile,v
> retrieving revision 1.11
> diff -u -u -r1.11 Makefile
> --- usr.sbin/sup/lib/Makefile 2 Apr 2006 01:39:48 -0000 1.11
> +++ usr.sbin/sup/lib/Makefile 9 Jul 2006 22:02:42 -0000
> @@ -6,7 +6,7 @@
>
> SRCS= scm.c scmio.c stree.c log.c supmsg.c netcrypt.c
> SRCS+= atoo.c errmsg.c expand.c ffilecopy.c filecopy.c \
> - nxtarg.c path.c quit.c run.c estrdup.c skipto.c
> + nxtarg.c path.c quit.c run.c skipto.c
>
> .PATH: ${.CURDIR}/../source
>
-- thorpej