From 33eb3ecc41af581080a97300f052df2eea4722e7 Mon Sep 17 00:00:00 2001 From: Robert Millan Date: Fri, 10 Feb 2006 14:59:03 +0000 Subject: [PATCH] Add errc, warnc, verrc and vwarnc --- ChangeLog | 10 +++++++- Makefile | 4 +-- Versions | 1 + err.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++ include/bsd/err.h | 11 +++++++++ 5 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 err.c create mode 100644 include/bsd/err.h diff --git a/ChangeLog b/ChangeLog index 374b86c..f33a120 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,14 @@ +2006-02-10 Robert Millan + + Add errc, warnc, verrc and vwarnc. + * err.c: New. + * include/bsd/err.h: New. + * Versions: Add them. + * Makefile: Add err.c and include/bsd/err.h. + 2005-12-19 Aurelien Jarno - * Added manpages + * Added manpages * fmtcheck.c: new * include/stdlib.h: added fmtcheck * Versions: added fmtcheck diff --git a/Makefile b/Makefile index ddcae17..5190820 100644 --- a/Makefile +++ b/Makefile @@ -4,9 +4,9 @@ # $Id$ # -LIB_SRCS = arc4random.c fgetln.c inet_net_pton.c strlcat.c strlcpy.c md5c.c fmtcheck.c +LIB_SRCS = arc4random.c err.c fgetln.c inet_net_pton.c strlcat.c strlcpy.c md5c.c fmtcheck.c -LIB_INCLUDES = include/bsd/ip_icmp.h include/bsd/random.h include/bsd/queue.h include/bsd/md5.h include/bsd/string.h include/bsd/bsd.h include/bsd/stdlib.h +LIB_INCLUDES = include/bsd/err.h include/bsd/ip_icmp.h include/bsd/random.h include/bsd/queue.h include/bsd/md5.h include/bsd/string.h include/bsd/bsd.h include/bsd/stdlib.h LIB_MANS = man/arc4random.3 man/strlcpy.3 man/fgetln.3 man/fmtcheck.3 diff --git a/Versions b/Versions index 23091f1..49e068c 100644 --- a/Versions +++ b/Versions @@ -1,6 +1,7 @@ LIBBSD_0.0 { global: arc4random; + errc; warnc; verrc; vwarnc; fgetln; fgetwln; fmtcheck; diff --git a/err.c b/err.c new file mode 100644 index 0000000..49ea0ef --- /dev/null +++ b/err.c @@ -0,0 +1,63 @@ +/* Copyright (C) 2006 Robert Millan + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ + +#include +#include +#include + +void +warnc (int code, const char *format, ...) +{ + int tmp = errno; + va_list ap; + va_start (ap, format); + + errno = code; + warn (format, ap); + errno = tmp; + + va_end (ap); +} + +void +vwarnc (int code, const char *format, va_list ap) +{ + int tmp = errno; + + errno = code; + vwarn (format, ap); + errno = tmp; +} + +void +errc (int status, int code, const char *format, ...) +{ + va_list ap; + va_start (ap, format); + + errno = code; + err (status, format, ap); + + va_end (ap); +} + +void +verrc (int status, int code, const char *format, va_list ap) +{ + errno = code; + verr (status, format, ap); +} diff --git a/include/bsd/err.h b/include/bsd/err.h new file mode 100644 index 0000000..ab9ac90 --- /dev/null +++ b/include/bsd/err.h @@ -0,0 +1,11 @@ +#ifndef LIBBSD_ERR_H +#define LIBBSD_ERR_H + +#include + +extern void warnc (int code, const char *format, ...); +extern void vwarnc (int code, const char *format, va_list ap); +extern void errc (int status, int code, const char *format, ...); +extern void verrc (int status, int code, const char *format, va_list ap); + +#endif -- 2.39.5