public inbox for glibc-cvs@sourceware.org
help / color / mirror / Atom feed
* [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h.
@ 2019-05-26 16:36 Zack Weinberg
0 siblings, 0 replies; 7+ messages in thread
From: Zack Weinberg @ 2019-05-26 16:36 UTC (permalink / raw)
To: glibc-cvs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 23071 bytes --]
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d5059620e1bd93bf5c1ef99d7de33aa04a629335
commit d5059620e1bd93bf5c1ef99d7de33aa04a629335
Author: Zack Weinberg <zackw@panix.com>
Date: Sun Mar 17 09:31:56 2019 -0400
Swap sys/syslog.h with syslog.h.
Our installed syslog.h is a trivial wrapper around sys/syslog.h, which
is where all the actual declarations are. This is backward from
POSIX, which specifies syslog.h and its contents, and does not specify
sys/syslog.h. This arrangement appears to have been inherited from
some BSD-phylum C library, and probably pre-dates any standardization
of syslog.
This patch swaps the contents of syslog.h and sys/syslog.h, so that
the actual declarations appear under the standardized name. Since it
is necessary to adjust all of syslog.hâs bits headers, I also added
multiple-include guards to those files that didnât already have
them. (All installed headers should have multiple-include guards,
even if they are internal and only used in one public header. The
ânever include this file directlyâ #error convention doesnât protect
against including the internal header a second time after its parent
header has already been included.)
* misc/sys/syslog.h: Exchange contents with...
* misc/syslog.h: ...this file. Adjust multiple-include guards.
* include/sys/syslog.h: Exchange contents with...
* include/syslog.h: ...this file. Adjust multiple-include guards.
* bits/syslog-path.h, misc/bits/syslog-ldbl.h
* misc/bits/syslog.h: Allow inclusion by syslog.h, not sys/syslog.h.
Add multiple-include guard where not already present.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Add new group for sys/ headers that do nothing but include a
top-level header with the same basename, containing entry for
sys/syslog.h; remove entry for syslog.h.
Diff:
---
bits/syslog-path.h | 8 +-
include/sys/syslog.h | 17 +--
include/syslog.h | 16 ++-
misc/bits/syslog-ldbl.h | 9 +-
misc/bits/syslog.h | 9 +-
misc/sys/syslog.h | 216 +----------------------------------
misc/syslog.h | 216 ++++++++++++++++++++++++++++++++++-
scripts/check-obsolete-constructs.py | 6 +-
8 files changed, 257 insertions(+), 240 deletions(-)
diff --git a/bits/syslog-path.h b/bits/syslog-path.h
index 5b97fa7..5677f46 100644
--- a/bits/syslog-path.h
+++ b/bits/syslog-path.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include this file directly. Use <sys/syslog.h> instead"
-#endif
-
#ifndef _BITS_SYSLOG_PATH_H
#define _BITS_SYSLOG_PATH_H 1
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-path.h> directly. Use <syslog.h> instead"
+#endif
+
#define _PATH_LOG "/dev/log"
#endif /* bits/syslog-path.h */
diff --git a/include/sys/syslog.h b/include/sys/syslog.h
index 89d3479..7d6e3bc 100644
--- a/include/sys/syslog.h
+++ b/include/sys/syslog.h
@@ -1,16 +1,3 @@
-#ifndef _LIBC_SYS_SYSLOG_H
-#define _LIBC_SYS_SYSLOG_H 1
+#ifndef _SYSLOG_H
#include <misc/sys/syslog.h>
-#ifndef _ISOMAC
-
-libc_hidden_proto (syslog)
-
-/* __vsyslog_internal uses the same mode_flags bits as
- __v*printf_internal; see libio/libioP.h. */
-extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
- unsigned int mode_flags)
- attribute_hidden
- __attribute__ ((__format__ (__printf__, 2, 0)));
-
-#endif /* _ISOMAC */
-#endif /* syslog.h */
+#endif
diff --git a/include/syslog.h b/include/syslog.h
index 4cfb772..5dc6e76 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -1 +1,15 @@
-#include <misc/syslog.h>
+#ifndef _SYSLOG_H
+# include <misc/syslog.h>
+#ifndef _ISOMAC
+
+libc_hidden_proto (syslog)
+
+/* __vsyslog_internal uses the same mode_flags bits as
+ __v*printf_internal; see libio/libioP.h. */
+extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
+ unsigned int mode_flags)
+ attribute_hidden
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#endif /* _ISOMAC */
+#endif /* syslog.h */
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index e311755..4c2eea7 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog-ldbl.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_LDBL_H
+#define _BITS_SYSLOG_LDBL_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-ldbl.h> directly; use <syslog.h> instead."
#endif
__LDBL_REDIR_DECL (syslog)
@@ -33,3 +36,5 @@ __LDBL_REDIR_DECL (__syslog_chk)
__LDBL_REDIR_DECL (__vsyslog_chk)
# endif
#endif
+
+#endif /* bits/syslog-ldbl.h */
diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
index 86d9453..e796955 100644
--- a/misc/bits/syslog.h
+++ b/misc/bits/syslog.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_H
+#define _BITS_SYSLOG_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog.h> directly; use <syslog.h> instead."
#endif
@@ -47,3 +50,5 @@ vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
+
+#endif /* bits/syslog.h */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ee01478..9fc1593 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -1,215 +1,3 @@
-/*
- * Copyright (c) 1982, 1986, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)syslog.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYS_SYSLOG_H
-#define _SYS_SYSLOG_H 1
-
-#include <features.h>
-#define __need___va_list
-#include <stdarg.h>
-
-/* This file defines _PATH_LOG. */
-#include <bits/syslog-path.h>
-
-/*
- * priorities/facilities are encoded into a single 32-bit quantity, where the
- * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
- * (0-big number). Both the priorities and the facilities map roughly
- * one-to-one to strings in the syslogd(8) source code. This mapping is
- * included in this file.
- *
- * priorities (these are ordered)
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-
-#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
- /* extract priority */
-#define LOG_PRI(p) ((p) & LOG_PRIMASK)
-#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
-
-#ifdef SYSLOG_NAMES
-#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
- /* mark "facility" */
-#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
-typedef struct _code {
- char *c_name;
- int c_val;
-} CODE;
-
-CODE prioritynames[] =
- {
- { "alert", LOG_ALERT },
- { "crit", LOG_CRIT },
- { "debug", LOG_DEBUG },
- { "emerg", LOG_EMERG },
- { "err", LOG_ERR },
- { "error", LOG_ERR }, /* DEPRECATED */
- { "info", LOG_INFO },
- { "none", INTERNAL_NOPRI }, /* INTERNAL */
- { "notice", LOG_NOTICE },
- { "panic", LOG_EMERG }, /* DEPRECATED */
- { "warn", LOG_WARNING }, /* DEPRECATED */
- { "warning", LOG_WARNING },
- { NULL, -1 }
- };
+#ifndef _SYSLOG_H
+# include <syslog.h>
#endif
-
-/* facility codes */
-#define LOG_KERN (0<<3) /* kernel messages */
-#define LOG_USER (1<<3) /* random user-level messages */
-#define LOG_MAIL (2<<3) /* mail system */
-#define LOG_DAEMON (3<<3) /* system daemons */
-#define LOG_AUTH (4<<3) /* security/authorization messages */
-#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
-#define LOG_LPR (6<<3) /* line printer subsystem */
-#define LOG_NEWS (7<<3) /* network news subsystem */
-#define LOG_UUCP (8<<3) /* UUCP subsystem */
-#define LOG_CRON (9<<3) /* clock daemon */
-#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
-#define LOG_FTP (11<<3) /* ftp daemon */
-
- /* other codes through 15 reserved for system use */
-#define LOG_LOCAL0 (16<<3) /* reserved for local use */
-#define LOG_LOCAL1 (17<<3) /* reserved for local use */
-#define LOG_LOCAL2 (18<<3) /* reserved for local use */
-#define LOG_LOCAL3 (19<<3) /* reserved for local use */
-#define LOG_LOCAL4 (20<<3) /* reserved for local use */
-#define LOG_LOCAL5 (21<<3) /* reserved for local use */
-#define LOG_LOCAL6 (22<<3) /* reserved for local use */
-#define LOG_LOCAL7 (23<<3) /* reserved for local use */
-
-#define LOG_NFACILITIES 24 /* current number of facilities */
-#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
- /* facility of pri */
-#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
-
-#ifdef SYSLOG_NAMES
-CODE facilitynames[] =
- {
- { "auth", LOG_AUTH },
- { "authpriv", LOG_AUTHPRIV },
- { "cron", LOG_CRON },
- { "daemon", LOG_DAEMON },
- { "ftp", LOG_FTP },
- { "kern", LOG_KERN },
- { "lpr", LOG_LPR },
- { "mail", LOG_MAIL },
- { "mark", INTERNAL_MARK }, /* INTERNAL */
- { "news", LOG_NEWS },
- { "security", LOG_AUTH }, /* DEPRECATED */
- { "syslog", LOG_SYSLOG },
- { "user", LOG_USER },
- { "uucp", LOG_UUCP },
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- { NULL, -1 }
- };
-#endif
-
-/*
- * arguments to setlogmask.
- */
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/*
- * Option flags for openlog.
- *
- * LOG_ODELAY no longer does anything.
- * LOG_NDELAY is the inverse of what it used to be.
- */
-#define LOG_PID 0x01 /* log the pid with each message */
-#define LOG_CONS 0x02 /* log on the console if errors in sending */
-#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
-#define LOG_NDELAY 0x08 /* don't delay open */
-#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
-#define LOG_PERROR 0x20 /* log to stderr as well */
-
-__BEGIN_DECLS
-
-/* Close descriptor used to write to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void closelog (void);
-
-/* Open connection to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void openlog (const char *__ident, int __option, int __facility);
-
-/* Set the log mask level. */
-extern int setlogmask (int __mask) __THROW;
-
-/* Generate a log message using FMT string and option arguments.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void syslog (int __pri, const char *__fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-#ifdef __USE_MISC
-/* Generate a log message using FMT and using arguments pointed to by AP.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
- __attribute__ ((__format__ (__printf__, 2, 0)));
-#endif
-
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/syslog.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/syslog-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* sys/syslog.h */
diff --git a/misc/syslog.h b/misc/syslog.h
index 830b492..406133b 100644
--- a/misc/syslog.h
+++ b/misc/syslog.h
@@ -1 +1,215 @@
-#include <sys/syslog.h>
+/*
+ * Copyright (c) 1982, 1986, 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)syslog.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H 1
+
+#include <features.h>
+#define __need___va_list
+#include <stdarg.h>
+
+/* This file defines _PATH_LOG. */
+#include <bits/syslog-path.h>
+
+/*
+ * priorities/facilities are encoded into a single 32-bit quantity, where the
+ * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
+ * (0-big number). Both the priorities and the facilities map roughly
+ * one-to-one to strings in the syslogd(8) source code. This mapping is
+ * included in this file.
+ *
+ * priorities (these are ordered)
+ */
+#define LOG_EMERG 0 /* system is unusable */
+#define LOG_ALERT 1 /* action must be taken immediately */
+#define LOG_CRIT 2 /* critical conditions */
+#define LOG_ERR 3 /* error conditions */
+#define LOG_WARNING 4 /* warning conditions */
+#define LOG_NOTICE 5 /* normal but significant condition */
+#define LOG_INFO 6 /* informational */
+#define LOG_DEBUG 7 /* debug-level messages */
+
+#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
+ /* extract priority */
+#define LOG_PRI(p) ((p) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
+
+#ifdef SYSLOG_NAMES
+#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
+ /* mark "facility" */
+#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
+typedef struct _code {
+ char *c_name;
+ int c_val;
+} CODE;
+
+CODE prioritynames[] =
+ {
+ { "alert", LOG_ALERT },
+ { "crit", LOG_CRIT },
+ { "debug", LOG_DEBUG },
+ { "emerg", LOG_EMERG },
+ { "err", LOG_ERR },
+ { "error", LOG_ERR }, /* DEPRECATED */
+ { "info", LOG_INFO },
+ { "none", INTERNAL_NOPRI }, /* INTERNAL */
+ { "notice", LOG_NOTICE },
+ { "panic", LOG_EMERG }, /* DEPRECATED */
+ { "warn", LOG_WARNING }, /* DEPRECATED */
+ { "warning", LOG_WARNING },
+ { NULL, -1 }
+ };
+#endif
+
+/* facility codes */
+#define LOG_KERN (0<<3) /* kernel messages */
+#define LOG_USER (1<<3) /* random user-level messages */
+#define LOG_MAIL (2<<3) /* mail system */
+#define LOG_DAEMON (3<<3) /* system daemons */
+#define LOG_AUTH (4<<3) /* security/authorization messages */
+#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
+#define LOG_LPR (6<<3) /* line printer subsystem */
+#define LOG_NEWS (7<<3) /* network news subsystem */
+#define LOG_UUCP (8<<3) /* UUCP subsystem */
+#define LOG_CRON (9<<3) /* clock daemon */
+#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
+#define LOG_FTP (11<<3) /* ftp daemon */
+
+ /* other codes through 15 reserved for system use */
+#define LOG_LOCAL0 (16<<3) /* reserved for local use */
+#define LOG_LOCAL1 (17<<3) /* reserved for local use */
+#define LOG_LOCAL2 (18<<3) /* reserved for local use */
+#define LOG_LOCAL3 (19<<3) /* reserved for local use */
+#define LOG_LOCAL4 (20<<3) /* reserved for local use */
+#define LOG_LOCAL5 (21<<3) /* reserved for local use */
+#define LOG_LOCAL6 (22<<3) /* reserved for local use */
+#define LOG_LOCAL7 (23<<3) /* reserved for local use */
+
+#define LOG_NFACILITIES 24 /* current number of facilities */
+#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
+ /* facility of pri */
+#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
+
+#ifdef SYSLOG_NAMES
+CODE facilitynames[] =
+ {
+ { "auth", LOG_AUTH },
+ { "authpriv", LOG_AUTHPRIV },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "mark", INTERNAL_MARK }, /* INTERNAL */
+ { "news", LOG_NEWS },
+ { "security", LOG_AUTH }, /* DEPRECATED */
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, -1 }
+ };
+#endif
+
+/*
+ * arguments to setlogmask.
+ */
+#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
+
+/*
+ * Option flags for openlog.
+ *
+ * LOG_ODELAY no longer does anything.
+ * LOG_NDELAY is the inverse of what it used to be.
+ */
+#define LOG_PID 0x01 /* log the pid with each message */
+#define LOG_CONS 0x02 /* log on the console if errors in sending */
+#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
+#define LOG_NDELAY 0x08 /* don't delay open */
+#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
+#define LOG_PERROR 0x20 /* log to stderr as well */
+
+__BEGIN_DECLS
+
+/* Close descriptor used to write to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void closelog (void);
+
+/* Open connection to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void openlog (const char *__ident, int __option, int __facility);
+
+/* Set the log mask level. */
+extern int setlogmask (int __mask) __THROW;
+
+/* Generate a log message using FMT string and option arguments.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void syslog (int __pri, const char *__fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+#ifdef __USE_MISC
+/* Generate a log message using FMT and using arguments pointed to by AP.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+#endif
+
+
+/* Define some macros helping to catch buffer overflows. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+# include <bits/syslog.h>
+#endif
+#ifdef __LDBL_COMPAT
+# include <bits/syslog-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* sys/syslog.h */
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index 084adc0..a7c4de4 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -537,7 +537,6 @@ HEADER_ALLOWED_INCLUDES = {
"sched.h": [ "time.h" ],
"semaphore.h": [ "sys/types.h" ],
"spawn.h": [ "sched.h", "sys/types.h" ],
- "syslog.h": [ "sys/syslog.h" ],
"termios.h": [ "sys/ttydefaults.h" ],
# POSIX sys/ headers
@@ -644,6 +643,11 @@ HEADER_ALLOWED_INCLUDES = {
"sys/vfs.h": [ "sys/statfs.h" ],
"sys/xattr.h": [ "sys/types.h" ],
+ # Nonstandardized sys/ headers that do nothing but include a
+ # top-level header with the same name. These exist for
+ # compatibility with old systems that only had the sys/ name.
+ "sys/syslog.h": [ "syslog.h" ],
+
# Nonstandardized networking headers
"ifaddrs.h": [ "sys/socket.h" ],
"resolv.h": [ "arpa/nameser.h", "netinet/in.h",
^ permalink raw reply [flat|nested] 7+ messages in thread
* [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h.
@ 2020-01-08 19:19 Zack Weinberg
0 siblings, 0 replies; 7+ messages in thread
From: Zack Weinberg @ 2020-01-08 19:19 UTC (permalink / raw)
To: glibc-cvs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 22709 bytes --]
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5ad1fcd032064772025675690dea8e6335592c18
commit 5ad1fcd032064772025675690dea8e6335592c18
Author: Zack Weinberg <zackw@panix.com>
Date: Tue Jun 18 11:45:26 2019 -0400
Swap sys/syslog.h with syslog.h.
Our installed syslog.h is a trivial wrapper around sys/syslog.h, which
is where all the actual declarations are. This is backward from
POSIX, which specifies syslog.h and its contents, and does not specify
sys/syslog.h. This arrangement appears to have been inherited from
some BSD-phylum C library, and probably pre-dates any standardization
of syslog.
This patch swaps the contents of syslog.h and sys/syslog.h, so that
the actual declarations appear under the standardized name. Since it
is necessary to adjust all of syslog.hâs bits headers, I also added
multiple-include guards to those files that didnât already have
them. (All installed headers should have multiple-include guards,
even if they are internal and only used in one public header. The
ânever include this file directlyâ #error convention doesnât protect
against including the internal header a second time after its parent
header has already been included.)
* misc/sys/syslog.h: Exchange contents with...
* misc/syslog.h: ...this file. Adjust multiple-include guards.
* include/sys/syslog.h: Exchange contents with...
* include/syslog.h: ...this file. Adjust multiple-include guards.
* bits/syslog-path.h, misc/bits/syslog-ldbl.h
* misc/bits/syslog.h: Allow inclusion by syslog.h, not sys/syslog.h.
Add multiple-include guard where not already present.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Update.
Diff:
---
bits/syslog-path.h | 8 +-
include/sys/syslog.h | 17 +--
include/syslog.h | 16 ++-
misc/bits/syslog-ldbl.h | 9 +-
misc/bits/syslog.h | 9 +-
misc/sys/syslog.h | 216 +----------------------------------
misc/syslog.h | 216 ++++++++++++++++++++++++++++++++++-
scripts/check-obsolete-constructs.py | 2 +-
8 files changed, 253 insertions(+), 240 deletions(-)
diff --git a/bits/syslog-path.h b/bits/syslog-path.h
index 056db35..826d935 100644
--- a/bits/syslog-path.h
+++ b/bits/syslog-path.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include this file directly. Use <sys/syslog.h> instead"
-#endif
-
#ifndef _BITS_SYSLOG_PATH_H
#define _BITS_SYSLOG_PATH_H 1
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-path.h> directly. Use <syslog.h> instead"
+#endif
+
#define _PATH_LOG "/dev/log"
#endif /* bits/syslog-path.h */
diff --git a/include/sys/syslog.h b/include/sys/syslog.h
index 89d3479..7d6e3bc 100644
--- a/include/sys/syslog.h
+++ b/include/sys/syslog.h
@@ -1,16 +1,3 @@
-#ifndef _LIBC_SYS_SYSLOG_H
-#define _LIBC_SYS_SYSLOG_H 1
+#ifndef _SYSLOG_H
#include <misc/sys/syslog.h>
-#ifndef _ISOMAC
-
-libc_hidden_proto (syslog)
-
-/* __vsyslog_internal uses the same mode_flags bits as
- __v*printf_internal; see libio/libioP.h. */
-extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
- unsigned int mode_flags)
- attribute_hidden
- __attribute__ ((__format__ (__printf__, 2, 0)));
-
-#endif /* _ISOMAC */
-#endif /* syslog.h */
+#endif
diff --git a/include/syslog.h b/include/syslog.h
index 4cfb772..5dc6e76 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -1 +1,15 @@
-#include <misc/syslog.h>
+#ifndef _SYSLOG_H
+# include <misc/syslog.h>
+#ifndef _ISOMAC
+
+libc_hidden_proto (syslog)
+
+/* __vsyslog_internal uses the same mode_flags bits as
+ __v*printf_internal; see libio/libioP.h. */
+extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
+ unsigned int mode_flags)
+ attribute_hidden
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#endif /* _ISOMAC */
+#endif /* syslog.h */
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index fead0d4..445fef0 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog-ldbl.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_LDBL_H
+#define _BITS_SYSLOG_LDBL_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-ldbl.h> directly; use <syslog.h> instead."
#endif
__LDBL_REDIR_DECL (syslog)
@@ -33,3 +36,5 @@ __LDBL_REDIR_DECL (__syslog_chk)
__LDBL_REDIR_DECL (__vsyslog_chk)
# endif
#endif
+
+#endif /* bits/syslog-ldbl.h */
diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
index 322192d..0f0b628 100644
--- a/misc/bits/syslog.h
+++ b/misc/bits/syslog.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<https://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_H
+#define _BITS_SYSLOG_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog.h> directly; use <syslog.h> instead."
#endif
@@ -47,3 +50,5 @@ vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
+
+#endif /* bits/syslog.h */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ee01478..9fc1593 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -1,215 +1,3 @@
-/*
- * Copyright (c) 1982, 1986, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)syslog.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYS_SYSLOG_H
-#define _SYS_SYSLOG_H 1
-
-#include <features.h>
-#define __need___va_list
-#include <stdarg.h>
-
-/* This file defines _PATH_LOG. */
-#include <bits/syslog-path.h>
-
-/*
- * priorities/facilities are encoded into a single 32-bit quantity, where the
- * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
- * (0-big number). Both the priorities and the facilities map roughly
- * one-to-one to strings in the syslogd(8) source code. This mapping is
- * included in this file.
- *
- * priorities (these are ordered)
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-
-#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
- /* extract priority */
-#define LOG_PRI(p) ((p) & LOG_PRIMASK)
-#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
-
-#ifdef SYSLOG_NAMES
-#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
- /* mark "facility" */
-#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
-typedef struct _code {
- char *c_name;
- int c_val;
-} CODE;
-
-CODE prioritynames[] =
- {
- { "alert", LOG_ALERT },
- { "crit", LOG_CRIT },
- { "debug", LOG_DEBUG },
- { "emerg", LOG_EMERG },
- { "err", LOG_ERR },
- { "error", LOG_ERR }, /* DEPRECATED */
- { "info", LOG_INFO },
- { "none", INTERNAL_NOPRI }, /* INTERNAL */
- { "notice", LOG_NOTICE },
- { "panic", LOG_EMERG }, /* DEPRECATED */
- { "warn", LOG_WARNING }, /* DEPRECATED */
- { "warning", LOG_WARNING },
- { NULL, -1 }
- };
+#ifndef _SYSLOG_H
+# include <syslog.h>
#endif
-
-/* facility codes */
-#define LOG_KERN (0<<3) /* kernel messages */
-#define LOG_USER (1<<3) /* random user-level messages */
-#define LOG_MAIL (2<<3) /* mail system */
-#define LOG_DAEMON (3<<3) /* system daemons */
-#define LOG_AUTH (4<<3) /* security/authorization messages */
-#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
-#define LOG_LPR (6<<3) /* line printer subsystem */
-#define LOG_NEWS (7<<3) /* network news subsystem */
-#define LOG_UUCP (8<<3) /* UUCP subsystem */
-#define LOG_CRON (9<<3) /* clock daemon */
-#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
-#define LOG_FTP (11<<3) /* ftp daemon */
-
- /* other codes through 15 reserved for system use */
-#define LOG_LOCAL0 (16<<3) /* reserved for local use */
-#define LOG_LOCAL1 (17<<3) /* reserved for local use */
-#define LOG_LOCAL2 (18<<3) /* reserved for local use */
-#define LOG_LOCAL3 (19<<3) /* reserved for local use */
-#define LOG_LOCAL4 (20<<3) /* reserved for local use */
-#define LOG_LOCAL5 (21<<3) /* reserved for local use */
-#define LOG_LOCAL6 (22<<3) /* reserved for local use */
-#define LOG_LOCAL7 (23<<3) /* reserved for local use */
-
-#define LOG_NFACILITIES 24 /* current number of facilities */
-#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
- /* facility of pri */
-#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
-
-#ifdef SYSLOG_NAMES
-CODE facilitynames[] =
- {
- { "auth", LOG_AUTH },
- { "authpriv", LOG_AUTHPRIV },
- { "cron", LOG_CRON },
- { "daemon", LOG_DAEMON },
- { "ftp", LOG_FTP },
- { "kern", LOG_KERN },
- { "lpr", LOG_LPR },
- { "mail", LOG_MAIL },
- { "mark", INTERNAL_MARK }, /* INTERNAL */
- { "news", LOG_NEWS },
- { "security", LOG_AUTH }, /* DEPRECATED */
- { "syslog", LOG_SYSLOG },
- { "user", LOG_USER },
- { "uucp", LOG_UUCP },
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- { NULL, -1 }
- };
-#endif
-
-/*
- * arguments to setlogmask.
- */
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/*
- * Option flags for openlog.
- *
- * LOG_ODELAY no longer does anything.
- * LOG_NDELAY is the inverse of what it used to be.
- */
-#define LOG_PID 0x01 /* log the pid with each message */
-#define LOG_CONS 0x02 /* log on the console if errors in sending */
-#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
-#define LOG_NDELAY 0x08 /* don't delay open */
-#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
-#define LOG_PERROR 0x20 /* log to stderr as well */
-
-__BEGIN_DECLS
-
-/* Close descriptor used to write to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void closelog (void);
-
-/* Open connection to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void openlog (const char *__ident, int __option, int __facility);
-
-/* Set the log mask level. */
-extern int setlogmask (int __mask) __THROW;
-
-/* Generate a log message using FMT string and option arguments.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void syslog (int __pri, const char *__fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-#ifdef __USE_MISC
-/* Generate a log message using FMT and using arguments pointed to by AP.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
- __attribute__ ((__format__ (__printf__, 2, 0)));
-#endif
-
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/syslog.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/syslog-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* sys/syslog.h */
diff --git a/misc/syslog.h b/misc/syslog.h
index 830b492..406133b 100644
--- a/misc/syslog.h
+++ b/misc/syslog.h
@@ -1 +1,215 @@
-#include <sys/syslog.h>
+/*
+ * Copyright (c) 1982, 1986, 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)syslog.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H 1
+
+#include <features.h>
+#define __need___va_list
+#include <stdarg.h>
+
+/* This file defines _PATH_LOG. */
+#include <bits/syslog-path.h>
+
+/*
+ * priorities/facilities are encoded into a single 32-bit quantity, where the
+ * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
+ * (0-big number). Both the priorities and the facilities map roughly
+ * one-to-one to strings in the syslogd(8) source code. This mapping is
+ * included in this file.
+ *
+ * priorities (these are ordered)
+ */
+#define LOG_EMERG 0 /* system is unusable */
+#define LOG_ALERT 1 /* action must be taken immediately */
+#define LOG_CRIT 2 /* critical conditions */
+#define LOG_ERR 3 /* error conditions */
+#define LOG_WARNING 4 /* warning conditions */
+#define LOG_NOTICE 5 /* normal but significant condition */
+#define LOG_INFO 6 /* informational */
+#define LOG_DEBUG 7 /* debug-level messages */
+
+#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
+ /* extract priority */
+#define LOG_PRI(p) ((p) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
+
+#ifdef SYSLOG_NAMES
+#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
+ /* mark "facility" */
+#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
+typedef struct _code {
+ char *c_name;
+ int c_val;
+} CODE;
+
+CODE prioritynames[] =
+ {
+ { "alert", LOG_ALERT },
+ { "crit", LOG_CRIT },
+ { "debug", LOG_DEBUG },
+ { "emerg", LOG_EMERG },
+ { "err", LOG_ERR },
+ { "error", LOG_ERR }, /* DEPRECATED */
+ { "info", LOG_INFO },
+ { "none", INTERNAL_NOPRI }, /* INTERNAL */
+ { "notice", LOG_NOTICE },
+ { "panic", LOG_EMERG }, /* DEPRECATED */
+ { "warn", LOG_WARNING }, /* DEPRECATED */
+ { "warning", LOG_WARNING },
+ { NULL, -1 }
+ };
+#endif
+
+/* facility codes */
+#define LOG_KERN (0<<3) /* kernel messages */
+#define LOG_USER (1<<3) /* random user-level messages */
+#define LOG_MAIL (2<<3) /* mail system */
+#define LOG_DAEMON (3<<3) /* system daemons */
+#define LOG_AUTH (4<<3) /* security/authorization messages */
+#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
+#define LOG_LPR (6<<3) /* line printer subsystem */
+#define LOG_NEWS (7<<3) /* network news subsystem */
+#define LOG_UUCP (8<<3) /* UUCP subsystem */
+#define LOG_CRON (9<<3) /* clock daemon */
+#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
+#define LOG_FTP (11<<3) /* ftp daemon */
+
+ /* other codes through 15 reserved for system use */
+#define LOG_LOCAL0 (16<<3) /* reserved for local use */
+#define LOG_LOCAL1 (17<<3) /* reserved for local use */
+#define LOG_LOCAL2 (18<<3) /* reserved for local use */
+#define LOG_LOCAL3 (19<<3) /* reserved for local use */
+#define LOG_LOCAL4 (20<<3) /* reserved for local use */
+#define LOG_LOCAL5 (21<<3) /* reserved for local use */
+#define LOG_LOCAL6 (22<<3) /* reserved for local use */
+#define LOG_LOCAL7 (23<<3) /* reserved for local use */
+
+#define LOG_NFACILITIES 24 /* current number of facilities */
+#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
+ /* facility of pri */
+#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
+
+#ifdef SYSLOG_NAMES
+CODE facilitynames[] =
+ {
+ { "auth", LOG_AUTH },
+ { "authpriv", LOG_AUTHPRIV },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "mark", INTERNAL_MARK }, /* INTERNAL */
+ { "news", LOG_NEWS },
+ { "security", LOG_AUTH }, /* DEPRECATED */
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, -1 }
+ };
+#endif
+
+/*
+ * arguments to setlogmask.
+ */
+#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
+
+/*
+ * Option flags for openlog.
+ *
+ * LOG_ODELAY no longer does anything.
+ * LOG_NDELAY is the inverse of what it used to be.
+ */
+#define LOG_PID 0x01 /* log the pid with each message */
+#define LOG_CONS 0x02 /* log on the console if errors in sending */
+#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
+#define LOG_NDELAY 0x08 /* don't delay open */
+#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
+#define LOG_PERROR 0x20 /* log to stderr as well */
+
+__BEGIN_DECLS
+
+/* Close descriptor used to write to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void closelog (void);
+
+/* Open connection to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void openlog (const char *__ident, int __option, int __facility);
+
+/* Set the log mask level. */
+extern int setlogmask (int __mask) __THROW;
+
+/* Generate a log message using FMT string and option arguments.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void syslog (int __pri, const char *__fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+#ifdef __USE_MISC
+/* Generate a log message using FMT and using arguments pointed to by AP.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+#endif
+
+
+/* Define some macros helping to catch buffer overflows. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+# include <bits/syslog.h>
+#endif
+#ifdef __LDBL_COMPAT
+# include <bits/syslog-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* sys/syslog.h */
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index af2d14b..6f5d21c 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -635,12 +635,12 @@ HEADER_ALLOWED_INCLUDES = {
"memory.h": [ "string.h" ],
"poll.h": [ "sys/poll.h" ],
"re_comp.h": [ "regex.h" ],
- "syslog.h": [ "sys/syslog.h" ],
"sys/bitypes.h": [ "sys/types.h" ],
"sys/dir.h": [ "dirent.h" ],
"sys/errno.h": [ "errno.h" ],
"sys/fcntl.h": [ "fcntl.h" ],
"sys/signal.h": [ "signal.h" ],
+ "sys/syslog.h": [ "syslog.h" ],
"sys/termios.h": [ "termios.h" ],
"sys/unistd.h": [ "unistd.h" ],
"syscall.h": [ "sys/syscall.h" ],
^ permalink raw reply [flat|nested] 7+ messages in thread
* [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h.
@ 2019-06-26 15:49 Zack Weinberg
0 siblings, 0 replies; 7+ messages in thread
From: Zack Weinberg @ 2019-06-26 15:49 UTC (permalink / raw)
To: glibc-cvs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 22706 bytes --]
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=13396cb3600dd878c43b2361f8436c4064f65d12
commit 13396cb3600dd878c43b2361f8436c4064f65d12
Author: Zack Weinberg <zackw@panix.com>
Date: Tue Jun 18 11:45:26 2019 -0400
Swap sys/syslog.h with syslog.h.
Our installed syslog.h is a trivial wrapper around sys/syslog.h, which
is where all the actual declarations are. This is backward from
POSIX, which specifies syslog.h and its contents, and does not specify
sys/syslog.h. This arrangement appears to have been inherited from
some BSD-phylum C library, and probably pre-dates any standardization
of syslog.
This patch swaps the contents of syslog.h and sys/syslog.h, so that
the actual declarations appear under the standardized name. Since it
is necessary to adjust all of syslog.hâs bits headers, I also added
multiple-include guards to those files that didnât already have
them. (All installed headers should have multiple-include guards,
even if they are internal and only used in one public header. The
ânever include this file directlyâ #error convention doesnât protect
against including the internal header a second time after its parent
header has already been included.)
* misc/sys/syslog.h: Exchange contents with...
* misc/syslog.h: ...this file. Adjust multiple-include guards.
* include/sys/syslog.h: Exchange contents with...
* include/syslog.h: ...this file. Adjust multiple-include guards.
* bits/syslog-path.h, misc/bits/syslog-ldbl.h
* misc/bits/syslog.h: Allow inclusion by syslog.h, not sys/syslog.h.
Add multiple-include guard where not already present.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Update.
Diff:
---
bits/syslog-path.h | 8 +-
include/sys/syslog.h | 17 +--
include/syslog.h | 16 ++-
misc/bits/syslog-ldbl.h | 9 +-
misc/bits/syslog.h | 9 +-
misc/sys/syslog.h | 216 +----------------------------------
misc/syslog.h | 216 ++++++++++++++++++++++++++++++++++-
scripts/check-obsolete-constructs.py | 2 +-
8 files changed, 253 insertions(+), 240 deletions(-)
diff --git a/bits/syslog-path.h b/bits/syslog-path.h
index 5b97fa7..5677f46 100644
--- a/bits/syslog-path.h
+++ b/bits/syslog-path.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include this file directly. Use <sys/syslog.h> instead"
-#endif
-
#ifndef _BITS_SYSLOG_PATH_H
#define _BITS_SYSLOG_PATH_H 1
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-path.h> directly. Use <syslog.h> instead"
+#endif
+
#define _PATH_LOG "/dev/log"
#endif /* bits/syslog-path.h */
diff --git a/include/sys/syslog.h b/include/sys/syslog.h
index 89d3479..7d6e3bc 100644
--- a/include/sys/syslog.h
+++ b/include/sys/syslog.h
@@ -1,16 +1,3 @@
-#ifndef _LIBC_SYS_SYSLOG_H
-#define _LIBC_SYS_SYSLOG_H 1
+#ifndef _SYSLOG_H
#include <misc/sys/syslog.h>
-#ifndef _ISOMAC
-
-libc_hidden_proto (syslog)
-
-/* __vsyslog_internal uses the same mode_flags bits as
- __v*printf_internal; see libio/libioP.h. */
-extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
- unsigned int mode_flags)
- attribute_hidden
- __attribute__ ((__format__ (__printf__, 2, 0)));
-
-#endif /* _ISOMAC */
-#endif /* syslog.h */
+#endif
diff --git a/include/syslog.h b/include/syslog.h
index 4cfb772..5dc6e76 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -1 +1,15 @@
-#include <misc/syslog.h>
+#ifndef _SYSLOG_H
+# include <misc/syslog.h>
+#ifndef _ISOMAC
+
+libc_hidden_proto (syslog)
+
+/* __vsyslog_internal uses the same mode_flags bits as
+ __v*printf_internal; see libio/libioP.h. */
+extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
+ unsigned int mode_flags)
+ attribute_hidden
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#endif /* _ISOMAC */
+#endif /* syslog.h */
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index e311755..4c2eea7 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog-ldbl.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_LDBL_H
+#define _BITS_SYSLOG_LDBL_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-ldbl.h> directly; use <syslog.h> instead."
#endif
__LDBL_REDIR_DECL (syslog)
@@ -33,3 +36,5 @@ __LDBL_REDIR_DECL (__syslog_chk)
__LDBL_REDIR_DECL (__vsyslog_chk)
# endif
#endif
+
+#endif /* bits/syslog-ldbl.h */
diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
index 86d9453..e796955 100644
--- a/misc/bits/syslog.h
+++ b/misc/bits/syslog.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_H
+#define _BITS_SYSLOG_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog.h> directly; use <syslog.h> instead."
#endif
@@ -47,3 +50,5 @@ vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
+
+#endif /* bits/syslog.h */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ee01478..9fc1593 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -1,215 +1,3 @@
-/*
- * Copyright (c) 1982, 1986, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)syslog.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYS_SYSLOG_H
-#define _SYS_SYSLOG_H 1
-
-#include <features.h>
-#define __need___va_list
-#include <stdarg.h>
-
-/* This file defines _PATH_LOG. */
-#include <bits/syslog-path.h>
-
-/*
- * priorities/facilities are encoded into a single 32-bit quantity, where the
- * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
- * (0-big number). Both the priorities and the facilities map roughly
- * one-to-one to strings in the syslogd(8) source code. This mapping is
- * included in this file.
- *
- * priorities (these are ordered)
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-
-#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
- /* extract priority */
-#define LOG_PRI(p) ((p) & LOG_PRIMASK)
-#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
-
-#ifdef SYSLOG_NAMES
-#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
- /* mark "facility" */
-#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
-typedef struct _code {
- char *c_name;
- int c_val;
-} CODE;
-
-CODE prioritynames[] =
- {
- { "alert", LOG_ALERT },
- { "crit", LOG_CRIT },
- { "debug", LOG_DEBUG },
- { "emerg", LOG_EMERG },
- { "err", LOG_ERR },
- { "error", LOG_ERR }, /* DEPRECATED */
- { "info", LOG_INFO },
- { "none", INTERNAL_NOPRI }, /* INTERNAL */
- { "notice", LOG_NOTICE },
- { "panic", LOG_EMERG }, /* DEPRECATED */
- { "warn", LOG_WARNING }, /* DEPRECATED */
- { "warning", LOG_WARNING },
- { NULL, -1 }
- };
+#ifndef _SYSLOG_H
+# include <syslog.h>
#endif
-
-/* facility codes */
-#define LOG_KERN (0<<3) /* kernel messages */
-#define LOG_USER (1<<3) /* random user-level messages */
-#define LOG_MAIL (2<<3) /* mail system */
-#define LOG_DAEMON (3<<3) /* system daemons */
-#define LOG_AUTH (4<<3) /* security/authorization messages */
-#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
-#define LOG_LPR (6<<3) /* line printer subsystem */
-#define LOG_NEWS (7<<3) /* network news subsystem */
-#define LOG_UUCP (8<<3) /* UUCP subsystem */
-#define LOG_CRON (9<<3) /* clock daemon */
-#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
-#define LOG_FTP (11<<3) /* ftp daemon */
-
- /* other codes through 15 reserved for system use */
-#define LOG_LOCAL0 (16<<3) /* reserved for local use */
-#define LOG_LOCAL1 (17<<3) /* reserved for local use */
-#define LOG_LOCAL2 (18<<3) /* reserved for local use */
-#define LOG_LOCAL3 (19<<3) /* reserved for local use */
-#define LOG_LOCAL4 (20<<3) /* reserved for local use */
-#define LOG_LOCAL5 (21<<3) /* reserved for local use */
-#define LOG_LOCAL6 (22<<3) /* reserved for local use */
-#define LOG_LOCAL7 (23<<3) /* reserved for local use */
-
-#define LOG_NFACILITIES 24 /* current number of facilities */
-#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
- /* facility of pri */
-#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
-
-#ifdef SYSLOG_NAMES
-CODE facilitynames[] =
- {
- { "auth", LOG_AUTH },
- { "authpriv", LOG_AUTHPRIV },
- { "cron", LOG_CRON },
- { "daemon", LOG_DAEMON },
- { "ftp", LOG_FTP },
- { "kern", LOG_KERN },
- { "lpr", LOG_LPR },
- { "mail", LOG_MAIL },
- { "mark", INTERNAL_MARK }, /* INTERNAL */
- { "news", LOG_NEWS },
- { "security", LOG_AUTH }, /* DEPRECATED */
- { "syslog", LOG_SYSLOG },
- { "user", LOG_USER },
- { "uucp", LOG_UUCP },
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- { NULL, -1 }
- };
-#endif
-
-/*
- * arguments to setlogmask.
- */
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/*
- * Option flags for openlog.
- *
- * LOG_ODELAY no longer does anything.
- * LOG_NDELAY is the inverse of what it used to be.
- */
-#define LOG_PID 0x01 /* log the pid with each message */
-#define LOG_CONS 0x02 /* log on the console if errors in sending */
-#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
-#define LOG_NDELAY 0x08 /* don't delay open */
-#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
-#define LOG_PERROR 0x20 /* log to stderr as well */
-
-__BEGIN_DECLS
-
-/* Close descriptor used to write to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void closelog (void);
-
-/* Open connection to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void openlog (const char *__ident, int __option, int __facility);
-
-/* Set the log mask level. */
-extern int setlogmask (int __mask) __THROW;
-
-/* Generate a log message using FMT string and option arguments.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void syslog (int __pri, const char *__fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-#ifdef __USE_MISC
-/* Generate a log message using FMT and using arguments pointed to by AP.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
- __attribute__ ((__format__ (__printf__, 2, 0)));
-#endif
-
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/syslog.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/syslog-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* sys/syslog.h */
diff --git a/misc/syslog.h b/misc/syslog.h
index 830b492..406133b 100644
--- a/misc/syslog.h
+++ b/misc/syslog.h
@@ -1 +1,215 @@
-#include <sys/syslog.h>
+/*
+ * Copyright (c) 1982, 1986, 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)syslog.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H 1
+
+#include <features.h>
+#define __need___va_list
+#include <stdarg.h>
+
+/* This file defines _PATH_LOG. */
+#include <bits/syslog-path.h>
+
+/*
+ * priorities/facilities are encoded into a single 32-bit quantity, where the
+ * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
+ * (0-big number). Both the priorities and the facilities map roughly
+ * one-to-one to strings in the syslogd(8) source code. This mapping is
+ * included in this file.
+ *
+ * priorities (these are ordered)
+ */
+#define LOG_EMERG 0 /* system is unusable */
+#define LOG_ALERT 1 /* action must be taken immediately */
+#define LOG_CRIT 2 /* critical conditions */
+#define LOG_ERR 3 /* error conditions */
+#define LOG_WARNING 4 /* warning conditions */
+#define LOG_NOTICE 5 /* normal but significant condition */
+#define LOG_INFO 6 /* informational */
+#define LOG_DEBUG 7 /* debug-level messages */
+
+#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
+ /* extract priority */
+#define LOG_PRI(p) ((p) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
+
+#ifdef SYSLOG_NAMES
+#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
+ /* mark "facility" */
+#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
+typedef struct _code {
+ char *c_name;
+ int c_val;
+} CODE;
+
+CODE prioritynames[] =
+ {
+ { "alert", LOG_ALERT },
+ { "crit", LOG_CRIT },
+ { "debug", LOG_DEBUG },
+ { "emerg", LOG_EMERG },
+ { "err", LOG_ERR },
+ { "error", LOG_ERR }, /* DEPRECATED */
+ { "info", LOG_INFO },
+ { "none", INTERNAL_NOPRI }, /* INTERNAL */
+ { "notice", LOG_NOTICE },
+ { "panic", LOG_EMERG }, /* DEPRECATED */
+ { "warn", LOG_WARNING }, /* DEPRECATED */
+ { "warning", LOG_WARNING },
+ { NULL, -1 }
+ };
+#endif
+
+/* facility codes */
+#define LOG_KERN (0<<3) /* kernel messages */
+#define LOG_USER (1<<3) /* random user-level messages */
+#define LOG_MAIL (2<<3) /* mail system */
+#define LOG_DAEMON (3<<3) /* system daemons */
+#define LOG_AUTH (4<<3) /* security/authorization messages */
+#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
+#define LOG_LPR (6<<3) /* line printer subsystem */
+#define LOG_NEWS (7<<3) /* network news subsystem */
+#define LOG_UUCP (8<<3) /* UUCP subsystem */
+#define LOG_CRON (9<<3) /* clock daemon */
+#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
+#define LOG_FTP (11<<3) /* ftp daemon */
+
+ /* other codes through 15 reserved for system use */
+#define LOG_LOCAL0 (16<<3) /* reserved for local use */
+#define LOG_LOCAL1 (17<<3) /* reserved for local use */
+#define LOG_LOCAL2 (18<<3) /* reserved for local use */
+#define LOG_LOCAL3 (19<<3) /* reserved for local use */
+#define LOG_LOCAL4 (20<<3) /* reserved for local use */
+#define LOG_LOCAL5 (21<<3) /* reserved for local use */
+#define LOG_LOCAL6 (22<<3) /* reserved for local use */
+#define LOG_LOCAL7 (23<<3) /* reserved for local use */
+
+#define LOG_NFACILITIES 24 /* current number of facilities */
+#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
+ /* facility of pri */
+#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
+
+#ifdef SYSLOG_NAMES
+CODE facilitynames[] =
+ {
+ { "auth", LOG_AUTH },
+ { "authpriv", LOG_AUTHPRIV },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "mark", INTERNAL_MARK }, /* INTERNAL */
+ { "news", LOG_NEWS },
+ { "security", LOG_AUTH }, /* DEPRECATED */
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, -1 }
+ };
+#endif
+
+/*
+ * arguments to setlogmask.
+ */
+#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
+
+/*
+ * Option flags for openlog.
+ *
+ * LOG_ODELAY no longer does anything.
+ * LOG_NDELAY is the inverse of what it used to be.
+ */
+#define LOG_PID 0x01 /* log the pid with each message */
+#define LOG_CONS 0x02 /* log on the console if errors in sending */
+#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
+#define LOG_NDELAY 0x08 /* don't delay open */
+#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
+#define LOG_PERROR 0x20 /* log to stderr as well */
+
+__BEGIN_DECLS
+
+/* Close descriptor used to write to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void closelog (void);
+
+/* Open connection to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void openlog (const char *__ident, int __option, int __facility);
+
+/* Set the log mask level. */
+extern int setlogmask (int __mask) __THROW;
+
+/* Generate a log message using FMT string and option arguments.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void syslog (int __pri, const char *__fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+#ifdef __USE_MISC
+/* Generate a log message using FMT and using arguments pointed to by AP.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+#endif
+
+
+/* Define some macros helping to catch buffer overflows. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+# include <bits/syslog.h>
+#endif
+#ifdef __LDBL_COMPAT
+# include <bits/syslog-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* sys/syslog.h */
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index 5efe824..c437c8e 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -635,12 +635,12 @@ HEADER_ALLOWED_INCLUDES = {
"memory.h": [ "string.h" ],
"poll.h": [ "sys/poll.h" ],
"re_comp.h": [ "regex.h" ],
- "syslog.h": [ "sys/syslog.h" ],
"sys/bitypes.h": [ "sys/types.h" ],
"sys/dir.h": [ "dirent.h" ],
"sys/errno.h": [ "errno.h" ],
"sys/fcntl.h": [ "fcntl.h" ],
"sys/signal.h": [ "signal.h" ],
+ "sys/syslog.h": [ "syslog.h" ],
"sys/termios.h": [ "termios.h" ],
"sys/unistd.h": [ "unistd.h" ],
"syscall.h": [ "sys/syscall.h" ],
^ permalink raw reply [flat|nested] 7+ messages in thread
* [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h.
@ 2019-06-20 16:06 Zack Weinberg
0 siblings, 0 replies; 7+ messages in thread
From: Zack Weinberg @ 2019-06-20 16:06 UTC (permalink / raw)
To: glibc-cvs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 22706 bytes --]
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=034a98bdb01a90511461c60905f4e357ebfe5e46
commit 034a98bdb01a90511461c60905f4e357ebfe5e46
Author: Zack Weinberg <zackw@panix.com>
Date: Tue Jun 18 11:45:26 2019 -0400
Swap sys/syslog.h with syslog.h.
Our installed syslog.h is a trivial wrapper around sys/syslog.h, which
is where all the actual declarations are. This is backward from
POSIX, which specifies syslog.h and its contents, and does not specify
sys/syslog.h. This arrangement appears to have been inherited from
some BSD-phylum C library, and probably pre-dates any standardization
of syslog.
This patch swaps the contents of syslog.h and sys/syslog.h, so that
the actual declarations appear under the standardized name. Since it
is necessary to adjust all of syslog.hâs bits headers, I also added
multiple-include guards to those files that didnât already have
them. (All installed headers should have multiple-include guards,
even if they are internal and only used in one public header. The
ânever include this file directlyâ #error convention doesnât protect
against including the internal header a second time after its parent
header has already been included.)
* misc/sys/syslog.h: Exchange contents with...
* misc/syslog.h: ...this file. Adjust multiple-include guards.
* include/sys/syslog.h: Exchange contents with...
* include/syslog.h: ...this file. Adjust multiple-include guards.
* bits/syslog-path.h, misc/bits/syslog-ldbl.h
* misc/bits/syslog.h: Allow inclusion by syslog.h, not sys/syslog.h.
Add multiple-include guard where not already present.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Update.
Diff:
---
bits/syslog-path.h | 8 +-
include/sys/syslog.h | 17 +--
include/syslog.h | 16 ++-
misc/bits/syslog-ldbl.h | 9 +-
misc/bits/syslog.h | 9 +-
misc/sys/syslog.h | 216 +----------------------------------
misc/syslog.h | 216 ++++++++++++++++++++++++++++++++++-
scripts/check-obsolete-constructs.py | 2 +-
8 files changed, 253 insertions(+), 240 deletions(-)
diff --git a/bits/syslog-path.h b/bits/syslog-path.h
index 5b97fa7..5677f46 100644
--- a/bits/syslog-path.h
+++ b/bits/syslog-path.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include this file directly. Use <sys/syslog.h> instead"
-#endif
-
#ifndef _BITS_SYSLOG_PATH_H
#define _BITS_SYSLOG_PATH_H 1
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-path.h> directly. Use <syslog.h> instead"
+#endif
+
#define _PATH_LOG "/dev/log"
#endif /* bits/syslog-path.h */
diff --git a/include/sys/syslog.h b/include/sys/syslog.h
index 89d3479..7d6e3bc 100644
--- a/include/sys/syslog.h
+++ b/include/sys/syslog.h
@@ -1,16 +1,3 @@
-#ifndef _LIBC_SYS_SYSLOG_H
-#define _LIBC_SYS_SYSLOG_H 1
+#ifndef _SYSLOG_H
#include <misc/sys/syslog.h>
-#ifndef _ISOMAC
-
-libc_hidden_proto (syslog)
-
-/* __vsyslog_internal uses the same mode_flags bits as
- __v*printf_internal; see libio/libioP.h. */
-extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
- unsigned int mode_flags)
- attribute_hidden
- __attribute__ ((__format__ (__printf__, 2, 0)));
-
-#endif /* _ISOMAC */
-#endif /* syslog.h */
+#endif
diff --git a/include/syslog.h b/include/syslog.h
index 4cfb772..5dc6e76 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -1 +1,15 @@
-#include <misc/syslog.h>
+#ifndef _SYSLOG_H
+# include <misc/syslog.h>
+#ifndef _ISOMAC
+
+libc_hidden_proto (syslog)
+
+/* __vsyslog_internal uses the same mode_flags bits as
+ __v*printf_internal; see libio/libioP.h. */
+extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
+ unsigned int mode_flags)
+ attribute_hidden
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#endif /* _ISOMAC */
+#endif /* syslog.h */
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index e311755..4c2eea7 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog-ldbl.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_LDBL_H
+#define _BITS_SYSLOG_LDBL_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-ldbl.h> directly; use <syslog.h> instead."
#endif
__LDBL_REDIR_DECL (syslog)
@@ -33,3 +36,5 @@ __LDBL_REDIR_DECL (__syslog_chk)
__LDBL_REDIR_DECL (__vsyslog_chk)
# endif
#endif
+
+#endif /* bits/syslog-ldbl.h */
diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
index 86d9453..e796955 100644
--- a/misc/bits/syslog.h
+++ b/misc/bits/syslog.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_H
+#define _BITS_SYSLOG_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog.h> directly; use <syslog.h> instead."
#endif
@@ -47,3 +50,5 @@ vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
+
+#endif /* bits/syslog.h */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ee01478..9fc1593 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -1,215 +1,3 @@
-/*
- * Copyright (c) 1982, 1986, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)syslog.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYS_SYSLOG_H
-#define _SYS_SYSLOG_H 1
-
-#include <features.h>
-#define __need___va_list
-#include <stdarg.h>
-
-/* This file defines _PATH_LOG. */
-#include <bits/syslog-path.h>
-
-/*
- * priorities/facilities are encoded into a single 32-bit quantity, where the
- * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
- * (0-big number). Both the priorities and the facilities map roughly
- * one-to-one to strings in the syslogd(8) source code. This mapping is
- * included in this file.
- *
- * priorities (these are ordered)
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-
-#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
- /* extract priority */
-#define LOG_PRI(p) ((p) & LOG_PRIMASK)
-#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
-
-#ifdef SYSLOG_NAMES
-#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
- /* mark "facility" */
-#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
-typedef struct _code {
- char *c_name;
- int c_val;
-} CODE;
-
-CODE prioritynames[] =
- {
- { "alert", LOG_ALERT },
- { "crit", LOG_CRIT },
- { "debug", LOG_DEBUG },
- { "emerg", LOG_EMERG },
- { "err", LOG_ERR },
- { "error", LOG_ERR }, /* DEPRECATED */
- { "info", LOG_INFO },
- { "none", INTERNAL_NOPRI }, /* INTERNAL */
- { "notice", LOG_NOTICE },
- { "panic", LOG_EMERG }, /* DEPRECATED */
- { "warn", LOG_WARNING }, /* DEPRECATED */
- { "warning", LOG_WARNING },
- { NULL, -1 }
- };
+#ifndef _SYSLOG_H
+# include <syslog.h>
#endif
-
-/* facility codes */
-#define LOG_KERN (0<<3) /* kernel messages */
-#define LOG_USER (1<<3) /* random user-level messages */
-#define LOG_MAIL (2<<3) /* mail system */
-#define LOG_DAEMON (3<<3) /* system daemons */
-#define LOG_AUTH (4<<3) /* security/authorization messages */
-#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
-#define LOG_LPR (6<<3) /* line printer subsystem */
-#define LOG_NEWS (7<<3) /* network news subsystem */
-#define LOG_UUCP (8<<3) /* UUCP subsystem */
-#define LOG_CRON (9<<3) /* clock daemon */
-#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
-#define LOG_FTP (11<<3) /* ftp daemon */
-
- /* other codes through 15 reserved for system use */
-#define LOG_LOCAL0 (16<<3) /* reserved for local use */
-#define LOG_LOCAL1 (17<<3) /* reserved for local use */
-#define LOG_LOCAL2 (18<<3) /* reserved for local use */
-#define LOG_LOCAL3 (19<<3) /* reserved for local use */
-#define LOG_LOCAL4 (20<<3) /* reserved for local use */
-#define LOG_LOCAL5 (21<<3) /* reserved for local use */
-#define LOG_LOCAL6 (22<<3) /* reserved for local use */
-#define LOG_LOCAL7 (23<<3) /* reserved for local use */
-
-#define LOG_NFACILITIES 24 /* current number of facilities */
-#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
- /* facility of pri */
-#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
-
-#ifdef SYSLOG_NAMES
-CODE facilitynames[] =
- {
- { "auth", LOG_AUTH },
- { "authpriv", LOG_AUTHPRIV },
- { "cron", LOG_CRON },
- { "daemon", LOG_DAEMON },
- { "ftp", LOG_FTP },
- { "kern", LOG_KERN },
- { "lpr", LOG_LPR },
- { "mail", LOG_MAIL },
- { "mark", INTERNAL_MARK }, /* INTERNAL */
- { "news", LOG_NEWS },
- { "security", LOG_AUTH }, /* DEPRECATED */
- { "syslog", LOG_SYSLOG },
- { "user", LOG_USER },
- { "uucp", LOG_UUCP },
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- { NULL, -1 }
- };
-#endif
-
-/*
- * arguments to setlogmask.
- */
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/*
- * Option flags for openlog.
- *
- * LOG_ODELAY no longer does anything.
- * LOG_NDELAY is the inverse of what it used to be.
- */
-#define LOG_PID 0x01 /* log the pid with each message */
-#define LOG_CONS 0x02 /* log on the console if errors in sending */
-#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
-#define LOG_NDELAY 0x08 /* don't delay open */
-#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
-#define LOG_PERROR 0x20 /* log to stderr as well */
-
-__BEGIN_DECLS
-
-/* Close descriptor used to write to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void closelog (void);
-
-/* Open connection to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void openlog (const char *__ident, int __option, int __facility);
-
-/* Set the log mask level. */
-extern int setlogmask (int __mask) __THROW;
-
-/* Generate a log message using FMT string and option arguments.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void syslog (int __pri, const char *__fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-#ifdef __USE_MISC
-/* Generate a log message using FMT and using arguments pointed to by AP.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
- __attribute__ ((__format__ (__printf__, 2, 0)));
-#endif
-
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/syslog.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/syslog-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* sys/syslog.h */
diff --git a/misc/syslog.h b/misc/syslog.h
index 830b492..406133b 100644
--- a/misc/syslog.h
+++ b/misc/syslog.h
@@ -1 +1,215 @@
-#include <sys/syslog.h>
+/*
+ * Copyright (c) 1982, 1986, 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)syslog.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H 1
+
+#include <features.h>
+#define __need___va_list
+#include <stdarg.h>
+
+/* This file defines _PATH_LOG. */
+#include <bits/syslog-path.h>
+
+/*
+ * priorities/facilities are encoded into a single 32-bit quantity, where the
+ * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
+ * (0-big number). Both the priorities and the facilities map roughly
+ * one-to-one to strings in the syslogd(8) source code. This mapping is
+ * included in this file.
+ *
+ * priorities (these are ordered)
+ */
+#define LOG_EMERG 0 /* system is unusable */
+#define LOG_ALERT 1 /* action must be taken immediately */
+#define LOG_CRIT 2 /* critical conditions */
+#define LOG_ERR 3 /* error conditions */
+#define LOG_WARNING 4 /* warning conditions */
+#define LOG_NOTICE 5 /* normal but significant condition */
+#define LOG_INFO 6 /* informational */
+#define LOG_DEBUG 7 /* debug-level messages */
+
+#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
+ /* extract priority */
+#define LOG_PRI(p) ((p) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
+
+#ifdef SYSLOG_NAMES
+#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
+ /* mark "facility" */
+#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
+typedef struct _code {
+ char *c_name;
+ int c_val;
+} CODE;
+
+CODE prioritynames[] =
+ {
+ { "alert", LOG_ALERT },
+ { "crit", LOG_CRIT },
+ { "debug", LOG_DEBUG },
+ { "emerg", LOG_EMERG },
+ { "err", LOG_ERR },
+ { "error", LOG_ERR }, /* DEPRECATED */
+ { "info", LOG_INFO },
+ { "none", INTERNAL_NOPRI }, /* INTERNAL */
+ { "notice", LOG_NOTICE },
+ { "panic", LOG_EMERG }, /* DEPRECATED */
+ { "warn", LOG_WARNING }, /* DEPRECATED */
+ { "warning", LOG_WARNING },
+ { NULL, -1 }
+ };
+#endif
+
+/* facility codes */
+#define LOG_KERN (0<<3) /* kernel messages */
+#define LOG_USER (1<<3) /* random user-level messages */
+#define LOG_MAIL (2<<3) /* mail system */
+#define LOG_DAEMON (3<<3) /* system daemons */
+#define LOG_AUTH (4<<3) /* security/authorization messages */
+#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
+#define LOG_LPR (6<<3) /* line printer subsystem */
+#define LOG_NEWS (7<<3) /* network news subsystem */
+#define LOG_UUCP (8<<3) /* UUCP subsystem */
+#define LOG_CRON (9<<3) /* clock daemon */
+#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
+#define LOG_FTP (11<<3) /* ftp daemon */
+
+ /* other codes through 15 reserved for system use */
+#define LOG_LOCAL0 (16<<3) /* reserved for local use */
+#define LOG_LOCAL1 (17<<3) /* reserved for local use */
+#define LOG_LOCAL2 (18<<3) /* reserved for local use */
+#define LOG_LOCAL3 (19<<3) /* reserved for local use */
+#define LOG_LOCAL4 (20<<3) /* reserved for local use */
+#define LOG_LOCAL5 (21<<3) /* reserved for local use */
+#define LOG_LOCAL6 (22<<3) /* reserved for local use */
+#define LOG_LOCAL7 (23<<3) /* reserved for local use */
+
+#define LOG_NFACILITIES 24 /* current number of facilities */
+#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
+ /* facility of pri */
+#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
+
+#ifdef SYSLOG_NAMES
+CODE facilitynames[] =
+ {
+ { "auth", LOG_AUTH },
+ { "authpriv", LOG_AUTHPRIV },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "mark", INTERNAL_MARK }, /* INTERNAL */
+ { "news", LOG_NEWS },
+ { "security", LOG_AUTH }, /* DEPRECATED */
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, -1 }
+ };
+#endif
+
+/*
+ * arguments to setlogmask.
+ */
+#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
+
+/*
+ * Option flags for openlog.
+ *
+ * LOG_ODELAY no longer does anything.
+ * LOG_NDELAY is the inverse of what it used to be.
+ */
+#define LOG_PID 0x01 /* log the pid with each message */
+#define LOG_CONS 0x02 /* log on the console if errors in sending */
+#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
+#define LOG_NDELAY 0x08 /* don't delay open */
+#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
+#define LOG_PERROR 0x20 /* log to stderr as well */
+
+__BEGIN_DECLS
+
+/* Close descriptor used to write to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void closelog (void);
+
+/* Open connection to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void openlog (const char *__ident, int __option, int __facility);
+
+/* Set the log mask level. */
+extern int setlogmask (int __mask) __THROW;
+
+/* Generate a log message using FMT string and option arguments.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void syslog (int __pri, const char *__fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+#ifdef __USE_MISC
+/* Generate a log message using FMT and using arguments pointed to by AP.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+#endif
+
+
+/* Define some macros helping to catch buffer overflows. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+# include <bits/syslog.h>
+#endif
+#ifdef __LDBL_COMPAT
+# include <bits/syslog-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* sys/syslog.h */
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index 5efe824..c437c8e 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -635,12 +635,12 @@ HEADER_ALLOWED_INCLUDES = {
"memory.h": [ "string.h" ],
"poll.h": [ "sys/poll.h" ],
"re_comp.h": [ "regex.h" ],
- "syslog.h": [ "sys/syslog.h" ],
"sys/bitypes.h": [ "sys/types.h" ],
"sys/dir.h": [ "dirent.h" ],
"sys/errno.h": [ "errno.h" ],
"sys/fcntl.h": [ "fcntl.h" ],
"sys/signal.h": [ "signal.h" ],
+ "sys/syslog.h": [ "syslog.h" ],
"sys/termios.h": [ "termios.h" ],
"sys/unistd.h": [ "unistd.h" ],
"syscall.h": [ "sys/syscall.h" ],
^ permalink raw reply [flat|nested] 7+ messages in thread
* [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h.
@ 2019-06-18 15:33 Zack Weinberg
0 siblings, 0 replies; 7+ messages in thread
From: Zack Weinberg @ 2019-06-18 15:33 UTC (permalink / raw)
To: glibc-cvs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 23071 bytes --]
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=284d3eb37acbc48b655b8a953595cf4adb4acc29
commit 284d3eb37acbc48b655b8a953595cf4adb4acc29
Author: Zack Weinberg <zackw@panix.com>
Date: Sun Mar 17 09:31:56 2019 -0400
Swap sys/syslog.h with syslog.h.
Our installed syslog.h is a trivial wrapper around sys/syslog.h, which
is where all the actual declarations are. This is backward from
POSIX, which specifies syslog.h and its contents, and does not specify
sys/syslog.h. This arrangement appears to have been inherited from
some BSD-phylum C library, and probably pre-dates any standardization
of syslog.
This patch swaps the contents of syslog.h and sys/syslog.h, so that
the actual declarations appear under the standardized name. Since it
is necessary to adjust all of syslog.hâs bits headers, I also added
multiple-include guards to those files that didnât already have
them. (All installed headers should have multiple-include guards,
even if they are internal and only used in one public header. The
ânever include this file directlyâ #error convention doesnât protect
against including the internal header a second time after its parent
header has already been included.)
* misc/sys/syslog.h: Exchange contents with...
* misc/syslog.h: ...this file. Adjust multiple-include guards.
* include/sys/syslog.h: Exchange contents with...
* include/syslog.h: ...this file. Adjust multiple-include guards.
* bits/syslog-path.h, misc/bits/syslog-ldbl.h
* misc/bits/syslog.h: Allow inclusion by syslog.h, not sys/syslog.h.
Add multiple-include guard where not already present.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Add new group for sys/ headers that do nothing but include a
top-level header with the same basename, containing entry for
sys/syslog.h; remove entry for syslog.h.
Diff:
---
bits/syslog-path.h | 8 +-
include/sys/syslog.h | 17 +--
include/syslog.h | 16 ++-
misc/bits/syslog-ldbl.h | 9 +-
misc/bits/syslog.h | 9 +-
misc/sys/syslog.h | 216 +----------------------------------
misc/syslog.h | 216 ++++++++++++++++++++++++++++++++++-
scripts/check-obsolete-constructs.py | 6 +-
8 files changed, 257 insertions(+), 240 deletions(-)
diff --git a/bits/syslog-path.h b/bits/syslog-path.h
index 5b97fa7..5677f46 100644
--- a/bits/syslog-path.h
+++ b/bits/syslog-path.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include this file directly. Use <sys/syslog.h> instead"
-#endif
-
#ifndef _BITS_SYSLOG_PATH_H
#define _BITS_SYSLOG_PATH_H 1
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-path.h> directly. Use <syslog.h> instead"
+#endif
+
#define _PATH_LOG "/dev/log"
#endif /* bits/syslog-path.h */
diff --git a/include/sys/syslog.h b/include/sys/syslog.h
index 89d3479..7d6e3bc 100644
--- a/include/sys/syslog.h
+++ b/include/sys/syslog.h
@@ -1,16 +1,3 @@
-#ifndef _LIBC_SYS_SYSLOG_H
-#define _LIBC_SYS_SYSLOG_H 1
+#ifndef _SYSLOG_H
#include <misc/sys/syslog.h>
-#ifndef _ISOMAC
-
-libc_hidden_proto (syslog)
-
-/* __vsyslog_internal uses the same mode_flags bits as
- __v*printf_internal; see libio/libioP.h. */
-extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
- unsigned int mode_flags)
- attribute_hidden
- __attribute__ ((__format__ (__printf__, 2, 0)));
-
-#endif /* _ISOMAC */
-#endif /* syslog.h */
+#endif
diff --git a/include/syslog.h b/include/syslog.h
index 4cfb772..5dc6e76 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -1 +1,15 @@
-#include <misc/syslog.h>
+#ifndef _SYSLOG_H
+# include <misc/syslog.h>
+#ifndef _ISOMAC
+
+libc_hidden_proto (syslog)
+
+/* __vsyslog_internal uses the same mode_flags bits as
+ __v*printf_internal; see libio/libioP.h. */
+extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
+ unsigned int mode_flags)
+ attribute_hidden
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#endif /* _ISOMAC */
+#endif /* syslog.h */
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index e311755..4c2eea7 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog-ldbl.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_LDBL_H
+#define _BITS_SYSLOG_LDBL_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-ldbl.h> directly; use <syslog.h> instead."
#endif
__LDBL_REDIR_DECL (syslog)
@@ -33,3 +36,5 @@ __LDBL_REDIR_DECL (__syslog_chk)
__LDBL_REDIR_DECL (__vsyslog_chk)
# endif
#endif
+
+#endif /* bits/syslog-ldbl.h */
diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
index 86d9453..e796955 100644
--- a/misc/bits/syslog.h
+++ b/misc/bits/syslog.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_H
+#define _BITS_SYSLOG_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog.h> directly; use <syslog.h> instead."
#endif
@@ -47,3 +50,5 @@ vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
+
+#endif /* bits/syslog.h */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ee01478..9fc1593 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -1,215 +1,3 @@
-/*
- * Copyright (c) 1982, 1986, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)syslog.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYS_SYSLOG_H
-#define _SYS_SYSLOG_H 1
-
-#include <features.h>
-#define __need___va_list
-#include <stdarg.h>
-
-/* This file defines _PATH_LOG. */
-#include <bits/syslog-path.h>
-
-/*
- * priorities/facilities are encoded into a single 32-bit quantity, where the
- * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
- * (0-big number). Both the priorities and the facilities map roughly
- * one-to-one to strings in the syslogd(8) source code. This mapping is
- * included in this file.
- *
- * priorities (these are ordered)
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-
-#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
- /* extract priority */
-#define LOG_PRI(p) ((p) & LOG_PRIMASK)
-#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
-
-#ifdef SYSLOG_NAMES
-#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
- /* mark "facility" */
-#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
-typedef struct _code {
- char *c_name;
- int c_val;
-} CODE;
-
-CODE prioritynames[] =
- {
- { "alert", LOG_ALERT },
- { "crit", LOG_CRIT },
- { "debug", LOG_DEBUG },
- { "emerg", LOG_EMERG },
- { "err", LOG_ERR },
- { "error", LOG_ERR }, /* DEPRECATED */
- { "info", LOG_INFO },
- { "none", INTERNAL_NOPRI }, /* INTERNAL */
- { "notice", LOG_NOTICE },
- { "panic", LOG_EMERG }, /* DEPRECATED */
- { "warn", LOG_WARNING }, /* DEPRECATED */
- { "warning", LOG_WARNING },
- { NULL, -1 }
- };
+#ifndef _SYSLOG_H
+# include <syslog.h>
#endif
-
-/* facility codes */
-#define LOG_KERN (0<<3) /* kernel messages */
-#define LOG_USER (1<<3) /* random user-level messages */
-#define LOG_MAIL (2<<3) /* mail system */
-#define LOG_DAEMON (3<<3) /* system daemons */
-#define LOG_AUTH (4<<3) /* security/authorization messages */
-#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
-#define LOG_LPR (6<<3) /* line printer subsystem */
-#define LOG_NEWS (7<<3) /* network news subsystem */
-#define LOG_UUCP (8<<3) /* UUCP subsystem */
-#define LOG_CRON (9<<3) /* clock daemon */
-#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
-#define LOG_FTP (11<<3) /* ftp daemon */
-
- /* other codes through 15 reserved for system use */
-#define LOG_LOCAL0 (16<<3) /* reserved for local use */
-#define LOG_LOCAL1 (17<<3) /* reserved for local use */
-#define LOG_LOCAL2 (18<<3) /* reserved for local use */
-#define LOG_LOCAL3 (19<<3) /* reserved for local use */
-#define LOG_LOCAL4 (20<<3) /* reserved for local use */
-#define LOG_LOCAL5 (21<<3) /* reserved for local use */
-#define LOG_LOCAL6 (22<<3) /* reserved for local use */
-#define LOG_LOCAL7 (23<<3) /* reserved for local use */
-
-#define LOG_NFACILITIES 24 /* current number of facilities */
-#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
- /* facility of pri */
-#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
-
-#ifdef SYSLOG_NAMES
-CODE facilitynames[] =
- {
- { "auth", LOG_AUTH },
- { "authpriv", LOG_AUTHPRIV },
- { "cron", LOG_CRON },
- { "daemon", LOG_DAEMON },
- { "ftp", LOG_FTP },
- { "kern", LOG_KERN },
- { "lpr", LOG_LPR },
- { "mail", LOG_MAIL },
- { "mark", INTERNAL_MARK }, /* INTERNAL */
- { "news", LOG_NEWS },
- { "security", LOG_AUTH }, /* DEPRECATED */
- { "syslog", LOG_SYSLOG },
- { "user", LOG_USER },
- { "uucp", LOG_UUCP },
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- { NULL, -1 }
- };
-#endif
-
-/*
- * arguments to setlogmask.
- */
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/*
- * Option flags for openlog.
- *
- * LOG_ODELAY no longer does anything.
- * LOG_NDELAY is the inverse of what it used to be.
- */
-#define LOG_PID 0x01 /* log the pid with each message */
-#define LOG_CONS 0x02 /* log on the console if errors in sending */
-#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
-#define LOG_NDELAY 0x08 /* don't delay open */
-#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
-#define LOG_PERROR 0x20 /* log to stderr as well */
-
-__BEGIN_DECLS
-
-/* Close descriptor used to write to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void closelog (void);
-
-/* Open connection to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void openlog (const char *__ident, int __option, int __facility);
-
-/* Set the log mask level. */
-extern int setlogmask (int __mask) __THROW;
-
-/* Generate a log message using FMT string and option arguments.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void syslog (int __pri, const char *__fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-#ifdef __USE_MISC
-/* Generate a log message using FMT and using arguments pointed to by AP.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
- __attribute__ ((__format__ (__printf__, 2, 0)));
-#endif
-
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/syslog.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/syslog-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* sys/syslog.h */
diff --git a/misc/syslog.h b/misc/syslog.h
index 830b492..406133b 100644
--- a/misc/syslog.h
+++ b/misc/syslog.h
@@ -1 +1,215 @@
-#include <sys/syslog.h>
+/*
+ * Copyright (c) 1982, 1986, 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)syslog.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H 1
+
+#include <features.h>
+#define __need___va_list
+#include <stdarg.h>
+
+/* This file defines _PATH_LOG. */
+#include <bits/syslog-path.h>
+
+/*
+ * priorities/facilities are encoded into a single 32-bit quantity, where the
+ * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
+ * (0-big number). Both the priorities and the facilities map roughly
+ * one-to-one to strings in the syslogd(8) source code. This mapping is
+ * included in this file.
+ *
+ * priorities (these are ordered)
+ */
+#define LOG_EMERG 0 /* system is unusable */
+#define LOG_ALERT 1 /* action must be taken immediately */
+#define LOG_CRIT 2 /* critical conditions */
+#define LOG_ERR 3 /* error conditions */
+#define LOG_WARNING 4 /* warning conditions */
+#define LOG_NOTICE 5 /* normal but significant condition */
+#define LOG_INFO 6 /* informational */
+#define LOG_DEBUG 7 /* debug-level messages */
+
+#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
+ /* extract priority */
+#define LOG_PRI(p) ((p) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
+
+#ifdef SYSLOG_NAMES
+#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
+ /* mark "facility" */
+#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
+typedef struct _code {
+ char *c_name;
+ int c_val;
+} CODE;
+
+CODE prioritynames[] =
+ {
+ { "alert", LOG_ALERT },
+ { "crit", LOG_CRIT },
+ { "debug", LOG_DEBUG },
+ { "emerg", LOG_EMERG },
+ { "err", LOG_ERR },
+ { "error", LOG_ERR }, /* DEPRECATED */
+ { "info", LOG_INFO },
+ { "none", INTERNAL_NOPRI }, /* INTERNAL */
+ { "notice", LOG_NOTICE },
+ { "panic", LOG_EMERG }, /* DEPRECATED */
+ { "warn", LOG_WARNING }, /* DEPRECATED */
+ { "warning", LOG_WARNING },
+ { NULL, -1 }
+ };
+#endif
+
+/* facility codes */
+#define LOG_KERN (0<<3) /* kernel messages */
+#define LOG_USER (1<<3) /* random user-level messages */
+#define LOG_MAIL (2<<3) /* mail system */
+#define LOG_DAEMON (3<<3) /* system daemons */
+#define LOG_AUTH (4<<3) /* security/authorization messages */
+#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
+#define LOG_LPR (6<<3) /* line printer subsystem */
+#define LOG_NEWS (7<<3) /* network news subsystem */
+#define LOG_UUCP (8<<3) /* UUCP subsystem */
+#define LOG_CRON (9<<3) /* clock daemon */
+#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
+#define LOG_FTP (11<<3) /* ftp daemon */
+
+ /* other codes through 15 reserved for system use */
+#define LOG_LOCAL0 (16<<3) /* reserved for local use */
+#define LOG_LOCAL1 (17<<3) /* reserved for local use */
+#define LOG_LOCAL2 (18<<3) /* reserved for local use */
+#define LOG_LOCAL3 (19<<3) /* reserved for local use */
+#define LOG_LOCAL4 (20<<3) /* reserved for local use */
+#define LOG_LOCAL5 (21<<3) /* reserved for local use */
+#define LOG_LOCAL6 (22<<3) /* reserved for local use */
+#define LOG_LOCAL7 (23<<3) /* reserved for local use */
+
+#define LOG_NFACILITIES 24 /* current number of facilities */
+#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
+ /* facility of pri */
+#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
+
+#ifdef SYSLOG_NAMES
+CODE facilitynames[] =
+ {
+ { "auth", LOG_AUTH },
+ { "authpriv", LOG_AUTHPRIV },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "mark", INTERNAL_MARK }, /* INTERNAL */
+ { "news", LOG_NEWS },
+ { "security", LOG_AUTH }, /* DEPRECATED */
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, -1 }
+ };
+#endif
+
+/*
+ * arguments to setlogmask.
+ */
+#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
+
+/*
+ * Option flags for openlog.
+ *
+ * LOG_ODELAY no longer does anything.
+ * LOG_NDELAY is the inverse of what it used to be.
+ */
+#define LOG_PID 0x01 /* log the pid with each message */
+#define LOG_CONS 0x02 /* log on the console if errors in sending */
+#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
+#define LOG_NDELAY 0x08 /* don't delay open */
+#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
+#define LOG_PERROR 0x20 /* log to stderr as well */
+
+__BEGIN_DECLS
+
+/* Close descriptor used to write to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void closelog (void);
+
+/* Open connection to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void openlog (const char *__ident, int __option, int __facility);
+
+/* Set the log mask level. */
+extern int setlogmask (int __mask) __THROW;
+
+/* Generate a log message using FMT string and option arguments.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void syslog (int __pri, const char *__fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+#ifdef __USE_MISC
+/* Generate a log message using FMT and using arguments pointed to by AP.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+#endif
+
+
+/* Define some macros helping to catch buffer overflows. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+# include <bits/syslog.h>
+#endif
+#ifdef __LDBL_COMPAT
+# include <bits/syslog-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* sys/syslog.h */
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index 084adc0..a7c4de4 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -537,7 +537,6 @@ HEADER_ALLOWED_INCLUDES = {
"sched.h": [ "time.h" ],
"semaphore.h": [ "sys/types.h" ],
"spawn.h": [ "sched.h", "sys/types.h" ],
- "syslog.h": [ "sys/syslog.h" ],
"termios.h": [ "sys/ttydefaults.h" ],
# POSIX sys/ headers
@@ -644,6 +643,11 @@ HEADER_ALLOWED_INCLUDES = {
"sys/vfs.h": [ "sys/statfs.h" ],
"sys/xattr.h": [ "sys/types.h" ],
+ # Nonstandardized sys/ headers that do nothing but include a
+ # top-level header with the same name. These exist for
+ # compatibility with old systems that only had the sys/ name.
+ "sys/syslog.h": [ "syslog.h" ],
+
# Nonstandardized networking headers
"ifaddrs.h": [ "sys/socket.h" ],
"resolv.h": [ "arpa/nameser.h", "netinet/in.h",
^ permalink raw reply [flat|nested] 7+ messages in thread
* [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h.
@ 2019-05-16 18:43 Zack Weinberg
0 siblings, 0 replies; 7+ messages in thread
From: Zack Weinberg @ 2019-05-16 18:43 UTC (permalink / raw)
To: glibc-cvs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 23071 bytes --]
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=417fe2e3b33ab018447f2fbbf4b73e8bbb639f84
commit 417fe2e3b33ab018447f2fbbf4b73e8bbb639f84
Author: Zack Weinberg <zackw@panix.com>
Date: Sun Mar 17 09:31:56 2019 -0400
Swap sys/syslog.h with syslog.h.
Our installed syslog.h is a trivial wrapper around sys/syslog.h, which
is where all the actual declarations are. This is backward from
POSIX, which specifies syslog.h and its contents, and does not specify
sys/syslog.h. This arrangement appears to have been inherited from
some BSD-phylum C library, and probably pre-dates any standardization
of syslog.
This patch swaps the contents of syslog.h and sys/syslog.h, so that
the actual declarations appear under the standardized name. Since it
is necessary to adjust all of syslog.hâs bits headers, I also added
multiple-include guards to those files that didnât already have
them. (All installed headers should have multiple-include guards,
even if they are internal and only used in one public header. The
ânever include this file directlyâ #error convention doesnât protect
against including the internal header a second time after its parent
header has already been included.)
* misc/sys/syslog.h: Exchange contents with...
* misc/syslog.h: ...this file. Adjust multiple-include guards.
* include/sys/syslog.h: Exchange contents with...
* include/syslog.h: ...this file. Adjust multiple-include guards.
* bits/syslog-path.h, misc/bits/syslog-ldbl.h
* misc/bits/syslog.h: Allow inclusion by syslog.h, not sys/syslog.h.
Add multiple-include guard where not already present.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Add new group for sys/ headers that do nothing but include a
top-level header with the same basename, containing entry for
sys/syslog.h; remove entry for syslog.h.
Diff:
---
bits/syslog-path.h | 8 +-
include/sys/syslog.h | 17 +--
include/syslog.h | 16 ++-
misc/bits/syslog-ldbl.h | 9 +-
misc/bits/syslog.h | 9 +-
misc/sys/syslog.h | 216 +----------------------------------
misc/syslog.h | 216 ++++++++++++++++++++++++++++++++++-
scripts/check-obsolete-constructs.py | 6 +-
8 files changed, 257 insertions(+), 240 deletions(-)
diff --git a/bits/syslog-path.h b/bits/syslog-path.h
index 5b97fa7..5677f46 100644
--- a/bits/syslog-path.h
+++ b/bits/syslog-path.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include this file directly. Use <sys/syslog.h> instead"
-#endif
-
#ifndef _BITS_SYSLOG_PATH_H
#define _BITS_SYSLOG_PATH_H 1
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-path.h> directly. Use <syslog.h> instead"
+#endif
+
#define _PATH_LOG "/dev/log"
#endif /* bits/syslog-path.h */
diff --git a/include/sys/syslog.h b/include/sys/syslog.h
index 89d3479..7d6e3bc 100644
--- a/include/sys/syslog.h
+++ b/include/sys/syslog.h
@@ -1,16 +1,3 @@
-#ifndef _LIBC_SYS_SYSLOG_H
-#define _LIBC_SYS_SYSLOG_H 1
+#ifndef _SYSLOG_H
#include <misc/sys/syslog.h>
-#ifndef _ISOMAC
-
-libc_hidden_proto (syslog)
-
-/* __vsyslog_internal uses the same mode_flags bits as
- __v*printf_internal; see libio/libioP.h. */
-extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
- unsigned int mode_flags)
- attribute_hidden
- __attribute__ ((__format__ (__printf__, 2, 0)));
-
-#endif /* _ISOMAC */
-#endif /* syslog.h */
+#endif
diff --git a/include/syslog.h b/include/syslog.h
index 4cfb772..5dc6e76 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -1 +1,15 @@
-#include <misc/syslog.h>
+#ifndef _SYSLOG_H
+# include <misc/syslog.h>
+#ifndef _ISOMAC
+
+libc_hidden_proto (syslog)
+
+/* __vsyslog_internal uses the same mode_flags bits as
+ __v*printf_internal; see libio/libioP.h. */
+extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
+ unsigned int mode_flags)
+ attribute_hidden
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#endif /* _ISOMAC */
+#endif /* syslog.h */
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index e311755..4c2eea7 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog-ldbl.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_LDBL_H
+#define _BITS_SYSLOG_LDBL_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-ldbl.h> directly; use <syslog.h> instead."
#endif
__LDBL_REDIR_DECL (syslog)
@@ -33,3 +36,5 @@ __LDBL_REDIR_DECL (__syslog_chk)
__LDBL_REDIR_DECL (__vsyslog_chk)
# endif
#endif
+
+#endif /* bits/syslog-ldbl.h */
diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
index 86d9453..e796955 100644
--- a/misc/bits/syslog.h
+++ b/misc/bits/syslog.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_H
+#define _BITS_SYSLOG_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog.h> directly; use <syslog.h> instead."
#endif
@@ -47,3 +50,5 @@ vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
+
+#endif /* bits/syslog.h */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ee01478..9fc1593 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -1,215 +1,3 @@
-/*
- * Copyright (c) 1982, 1986, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)syslog.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYS_SYSLOG_H
-#define _SYS_SYSLOG_H 1
-
-#include <features.h>
-#define __need___va_list
-#include <stdarg.h>
-
-/* This file defines _PATH_LOG. */
-#include <bits/syslog-path.h>
-
-/*
- * priorities/facilities are encoded into a single 32-bit quantity, where the
- * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
- * (0-big number). Both the priorities and the facilities map roughly
- * one-to-one to strings in the syslogd(8) source code. This mapping is
- * included in this file.
- *
- * priorities (these are ordered)
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-
-#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
- /* extract priority */
-#define LOG_PRI(p) ((p) & LOG_PRIMASK)
-#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
-
-#ifdef SYSLOG_NAMES
-#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
- /* mark "facility" */
-#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
-typedef struct _code {
- char *c_name;
- int c_val;
-} CODE;
-
-CODE prioritynames[] =
- {
- { "alert", LOG_ALERT },
- { "crit", LOG_CRIT },
- { "debug", LOG_DEBUG },
- { "emerg", LOG_EMERG },
- { "err", LOG_ERR },
- { "error", LOG_ERR }, /* DEPRECATED */
- { "info", LOG_INFO },
- { "none", INTERNAL_NOPRI }, /* INTERNAL */
- { "notice", LOG_NOTICE },
- { "panic", LOG_EMERG }, /* DEPRECATED */
- { "warn", LOG_WARNING }, /* DEPRECATED */
- { "warning", LOG_WARNING },
- { NULL, -1 }
- };
+#ifndef _SYSLOG_H
+# include <syslog.h>
#endif
-
-/* facility codes */
-#define LOG_KERN (0<<3) /* kernel messages */
-#define LOG_USER (1<<3) /* random user-level messages */
-#define LOG_MAIL (2<<3) /* mail system */
-#define LOG_DAEMON (3<<3) /* system daemons */
-#define LOG_AUTH (4<<3) /* security/authorization messages */
-#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
-#define LOG_LPR (6<<3) /* line printer subsystem */
-#define LOG_NEWS (7<<3) /* network news subsystem */
-#define LOG_UUCP (8<<3) /* UUCP subsystem */
-#define LOG_CRON (9<<3) /* clock daemon */
-#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
-#define LOG_FTP (11<<3) /* ftp daemon */
-
- /* other codes through 15 reserved for system use */
-#define LOG_LOCAL0 (16<<3) /* reserved for local use */
-#define LOG_LOCAL1 (17<<3) /* reserved for local use */
-#define LOG_LOCAL2 (18<<3) /* reserved for local use */
-#define LOG_LOCAL3 (19<<3) /* reserved for local use */
-#define LOG_LOCAL4 (20<<3) /* reserved for local use */
-#define LOG_LOCAL5 (21<<3) /* reserved for local use */
-#define LOG_LOCAL6 (22<<3) /* reserved for local use */
-#define LOG_LOCAL7 (23<<3) /* reserved for local use */
-
-#define LOG_NFACILITIES 24 /* current number of facilities */
-#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
- /* facility of pri */
-#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
-
-#ifdef SYSLOG_NAMES
-CODE facilitynames[] =
- {
- { "auth", LOG_AUTH },
- { "authpriv", LOG_AUTHPRIV },
- { "cron", LOG_CRON },
- { "daemon", LOG_DAEMON },
- { "ftp", LOG_FTP },
- { "kern", LOG_KERN },
- { "lpr", LOG_LPR },
- { "mail", LOG_MAIL },
- { "mark", INTERNAL_MARK }, /* INTERNAL */
- { "news", LOG_NEWS },
- { "security", LOG_AUTH }, /* DEPRECATED */
- { "syslog", LOG_SYSLOG },
- { "user", LOG_USER },
- { "uucp", LOG_UUCP },
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- { NULL, -1 }
- };
-#endif
-
-/*
- * arguments to setlogmask.
- */
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/*
- * Option flags for openlog.
- *
- * LOG_ODELAY no longer does anything.
- * LOG_NDELAY is the inverse of what it used to be.
- */
-#define LOG_PID 0x01 /* log the pid with each message */
-#define LOG_CONS 0x02 /* log on the console if errors in sending */
-#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
-#define LOG_NDELAY 0x08 /* don't delay open */
-#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
-#define LOG_PERROR 0x20 /* log to stderr as well */
-
-__BEGIN_DECLS
-
-/* Close descriptor used to write to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void closelog (void);
-
-/* Open connection to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void openlog (const char *__ident, int __option, int __facility);
-
-/* Set the log mask level. */
-extern int setlogmask (int __mask) __THROW;
-
-/* Generate a log message using FMT string and option arguments.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void syslog (int __pri, const char *__fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-#ifdef __USE_MISC
-/* Generate a log message using FMT and using arguments pointed to by AP.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
- __attribute__ ((__format__ (__printf__, 2, 0)));
-#endif
-
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/syslog.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/syslog-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* sys/syslog.h */
diff --git a/misc/syslog.h b/misc/syslog.h
index 830b492..406133b 100644
--- a/misc/syslog.h
+++ b/misc/syslog.h
@@ -1 +1,215 @@
-#include <sys/syslog.h>
+/*
+ * Copyright (c) 1982, 1986, 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)syslog.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H 1
+
+#include <features.h>
+#define __need___va_list
+#include <stdarg.h>
+
+/* This file defines _PATH_LOG. */
+#include <bits/syslog-path.h>
+
+/*
+ * priorities/facilities are encoded into a single 32-bit quantity, where the
+ * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
+ * (0-big number). Both the priorities and the facilities map roughly
+ * one-to-one to strings in the syslogd(8) source code. This mapping is
+ * included in this file.
+ *
+ * priorities (these are ordered)
+ */
+#define LOG_EMERG 0 /* system is unusable */
+#define LOG_ALERT 1 /* action must be taken immediately */
+#define LOG_CRIT 2 /* critical conditions */
+#define LOG_ERR 3 /* error conditions */
+#define LOG_WARNING 4 /* warning conditions */
+#define LOG_NOTICE 5 /* normal but significant condition */
+#define LOG_INFO 6 /* informational */
+#define LOG_DEBUG 7 /* debug-level messages */
+
+#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
+ /* extract priority */
+#define LOG_PRI(p) ((p) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
+
+#ifdef SYSLOG_NAMES
+#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
+ /* mark "facility" */
+#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
+typedef struct _code {
+ char *c_name;
+ int c_val;
+} CODE;
+
+CODE prioritynames[] =
+ {
+ { "alert", LOG_ALERT },
+ { "crit", LOG_CRIT },
+ { "debug", LOG_DEBUG },
+ { "emerg", LOG_EMERG },
+ { "err", LOG_ERR },
+ { "error", LOG_ERR }, /* DEPRECATED */
+ { "info", LOG_INFO },
+ { "none", INTERNAL_NOPRI }, /* INTERNAL */
+ { "notice", LOG_NOTICE },
+ { "panic", LOG_EMERG }, /* DEPRECATED */
+ { "warn", LOG_WARNING }, /* DEPRECATED */
+ { "warning", LOG_WARNING },
+ { NULL, -1 }
+ };
+#endif
+
+/* facility codes */
+#define LOG_KERN (0<<3) /* kernel messages */
+#define LOG_USER (1<<3) /* random user-level messages */
+#define LOG_MAIL (2<<3) /* mail system */
+#define LOG_DAEMON (3<<3) /* system daemons */
+#define LOG_AUTH (4<<3) /* security/authorization messages */
+#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
+#define LOG_LPR (6<<3) /* line printer subsystem */
+#define LOG_NEWS (7<<3) /* network news subsystem */
+#define LOG_UUCP (8<<3) /* UUCP subsystem */
+#define LOG_CRON (9<<3) /* clock daemon */
+#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
+#define LOG_FTP (11<<3) /* ftp daemon */
+
+ /* other codes through 15 reserved for system use */
+#define LOG_LOCAL0 (16<<3) /* reserved for local use */
+#define LOG_LOCAL1 (17<<3) /* reserved for local use */
+#define LOG_LOCAL2 (18<<3) /* reserved for local use */
+#define LOG_LOCAL3 (19<<3) /* reserved for local use */
+#define LOG_LOCAL4 (20<<3) /* reserved for local use */
+#define LOG_LOCAL5 (21<<3) /* reserved for local use */
+#define LOG_LOCAL6 (22<<3) /* reserved for local use */
+#define LOG_LOCAL7 (23<<3) /* reserved for local use */
+
+#define LOG_NFACILITIES 24 /* current number of facilities */
+#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
+ /* facility of pri */
+#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
+
+#ifdef SYSLOG_NAMES
+CODE facilitynames[] =
+ {
+ { "auth", LOG_AUTH },
+ { "authpriv", LOG_AUTHPRIV },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "mark", INTERNAL_MARK }, /* INTERNAL */
+ { "news", LOG_NEWS },
+ { "security", LOG_AUTH }, /* DEPRECATED */
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, -1 }
+ };
+#endif
+
+/*
+ * arguments to setlogmask.
+ */
+#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
+
+/*
+ * Option flags for openlog.
+ *
+ * LOG_ODELAY no longer does anything.
+ * LOG_NDELAY is the inverse of what it used to be.
+ */
+#define LOG_PID 0x01 /* log the pid with each message */
+#define LOG_CONS 0x02 /* log on the console if errors in sending */
+#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
+#define LOG_NDELAY 0x08 /* don't delay open */
+#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
+#define LOG_PERROR 0x20 /* log to stderr as well */
+
+__BEGIN_DECLS
+
+/* Close descriptor used to write to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void closelog (void);
+
+/* Open connection to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void openlog (const char *__ident, int __option, int __facility);
+
+/* Set the log mask level. */
+extern int setlogmask (int __mask) __THROW;
+
+/* Generate a log message using FMT string and option arguments.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void syslog (int __pri, const char *__fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+#ifdef __USE_MISC
+/* Generate a log message using FMT and using arguments pointed to by AP.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+#endif
+
+
+/* Define some macros helping to catch buffer overflows. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+# include <bits/syslog.h>
+#endif
+#ifdef __LDBL_COMPAT
+# include <bits/syslog-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* sys/syslog.h */
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index 9bda57f..21744db 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -533,7 +533,6 @@ HEADER_ALLOWED_INCLUDES = {
"sched.h": [ "time.h" ],
"semaphore.h": [ "sys/types.h" ],
"spawn.h": [ "sched.h", "sys/types.h" ],
- "syslog.h": [ "sys/syslog.h" ],
"termios.h": [ "sys/ttydefaults.h" ],
# POSIX sys/ headers
@@ -638,6 +637,11 @@ HEADER_ALLOWED_INCLUDES = {
"sys/vfs.h": [ "sys/statfs.h" ],
"sys/xattr.h": [ "sys/types.h" ],
+ # Nonstandardized sys/ headers that do nothing but include a
+ # top-level header with the same name. These exist for
+ # compatibility with old systems that only had the sys/ name.
+ "sys/syslog.h": [ "syslog.h" ],
+
# Nonstandardized networking headers
"ifaddrs.h": [ "sys/socket.h" ],
"resolv.h": [ "arpa/nameser.h", "netinet/in.h",
^ permalink raw reply [flat|nested] 7+ messages in thread
* [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h.
@ 2019-05-16 18:36 Zack Weinberg
0 siblings, 0 replies; 7+ messages in thread
From: Zack Weinberg @ 2019-05-16 18:36 UTC (permalink / raw)
To: glibc-cvs
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 23071 bytes --]
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=562c6a9083bb847d46ed9b4175b475cd56847f57
commit 562c6a9083bb847d46ed9b4175b475cd56847f57
Author: Zack Weinberg <zackw@panix.com>
Date: Sun Mar 17 09:31:56 2019 -0400
Swap sys/syslog.h with syslog.h.
Our installed syslog.h is a trivial wrapper around sys/syslog.h, which
is where all the actual declarations are. This is backward from
POSIX, which specifies syslog.h and its contents, and does not specify
sys/syslog.h. This arrangement appears to have been inherited from
some BSD-phylum C library, and probably pre-dates any standardization
of syslog.
This patch swaps the contents of syslog.h and sys/syslog.h, so that
the actual declarations appear under the standardized name. Since it
is necessary to adjust all of syslog.hâs bits headers, I also added
multiple-include guards to those files that didnât already have
them. (All installed headers should have multiple-include guards,
even if they are internal and only used in one public header. The
ânever include this file directlyâ #error convention doesnât protect
against including the internal header a second time after its parent
header has already been included.)
* misc/sys/syslog.h: Exchange contents with...
* misc/syslog.h: ...this file. Adjust multiple-include guards.
* include/sys/syslog.h: Exchange contents with...
* include/syslog.h: ...this file. Adjust multiple-include guards.
* bits/syslog-path.h, misc/bits/syslog-ldbl.h
* misc/bits/syslog.h: Allow inclusion by syslog.h, not sys/syslog.h.
Add multiple-include guard where not already present.
* scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES):
Add new group for sys/ headers that do nothing but include a
top-level header with the same basename, containing entry for
sys/syslog.h; remove entry for syslog.h.
Diff:
---
bits/syslog-path.h | 8 +-
include/sys/syslog.h | 17 +--
include/syslog.h | 16 ++-
misc/bits/syslog-ldbl.h | 9 +-
misc/bits/syslog.h | 9 +-
misc/sys/syslog.h | 216 +----------------------------------
misc/syslog.h | 216 ++++++++++++++++++++++++++++++++++-
scripts/check-obsolete-constructs.py | 6 +-
8 files changed, 257 insertions(+), 240 deletions(-)
diff --git a/bits/syslog-path.h b/bits/syslog-path.h
index 5b97fa7..5677f46 100644
--- a/bits/syslog-path.h
+++ b/bits/syslog-path.h
@@ -16,13 +16,13 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include this file directly. Use <sys/syslog.h> instead"
-#endif
-
#ifndef _BITS_SYSLOG_PATH_H
#define _BITS_SYSLOG_PATH_H 1
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-path.h> directly. Use <syslog.h> instead"
+#endif
+
#define _PATH_LOG "/dev/log"
#endif /* bits/syslog-path.h */
diff --git a/include/sys/syslog.h b/include/sys/syslog.h
index 89d3479..7d6e3bc 100644
--- a/include/sys/syslog.h
+++ b/include/sys/syslog.h
@@ -1,16 +1,3 @@
-#ifndef _LIBC_SYS_SYSLOG_H
-#define _LIBC_SYS_SYSLOG_H 1
+#ifndef _SYSLOG_H
#include <misc/sys/syslog.h>
-#ifndef _ISOMAC
-
-libc_hidden_proto (syslog)
-
-/* __vsyslog_internal uses the same mode_flags bits as
- __v*printf_internal; see libio/libioP.h. */
-extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
- unsigned int mode_flags)
- attribute_hidden
- __attribute__ ((__format__ (__printf__, 2, 0)));
-
-#endif /* _ISOMAC */
-#endif /* syslog.h */
+#endif
diff --git a/include/syslog.h b/include/syslog.h
index 4cfb772..5dc6e76 100644
--- a/include/syslog.h
+++ b/include/syslog.h
@@ -1 +1,15 @@
-#include <misc/syslog.h>
+#ifndef _SYSLOG_H
+# include <misc/syslog.h>
+#ifndef _ISOMAC
+
+libc_hidden_proto (syslog)
+
+/* __vsyslog_internal uses the same mode_flags bits as
+ __v*printf_internal; see libio/libioP.h. */
+extern void __vsyslog_internal (int pri, const char *fmt, __gnuc_va_list ap,
+ unsigned int mode_flags)
+ attribute_hidden
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+
+#endif /* _ISOMAC */
+#endif /* syslog.h */
diff --git a/misc/bits/syslog-ldbl.h b/misc/bits/syslog-ldbl.h
index e311755..4c2eea7 100644
--- a/misc/bits/syslog-ldbl.h
+++ b/misc/bits/syslog-ldbl.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog-ldbl.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_LDBL_H
+#define _BITS_SYSLOG_LDBL_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog-ldbl.h> directly; use <syslog.h> instead."
#endif
__LDBL_REDIR_DECL (syslog)
@@ -33,3 +36,5 @@ __LDBL_REDIR_DECL (__syslog_chk)
__LDBL_REDIR_DECL (__vsyslog_chk)
# endif
#endif
+
+#endif /* bits/syslog-ldbl.h */
diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
index 86d9453..e796955 100644
--- a/misc/bits/syslog.h
+++ b/misc/bits/syslog.h
@@ -16,8 +16,11 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _SYS_SYSLOG_H
-# error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+#ifndef _BITS_SYSLOG_H
+#define _BITS_SYSLOG_H 1
+
+#ifndef _SYSLOG_H
+# error "Never include <bits/syslog.h> directly; use <syslog.h> instead."
#endif
@@ -47,3 +50,5 @@ vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
__vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
}
#endif
+
+#endif /* bits/syslog.h */
diff --git a/misc/sys/syslog.h b/misc/sys/syslog.h
index ee01478..9fc1593 100644
--- a/misc/sys/syslog.h
+++ b/misc/sys/syslog.h
@@ -1,215 +1,3 @@
-/*
- * Copyright (c) 1982, 1986, 1988, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * 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.
- * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
- *
- * @(#)syslog.h 8.1 (Berkeley) 6/2/93
- */
-
-#ifndef _SYS_SYSLOG_H
-#define _SYS_SYSLOG_H 1
-
-#include <features.h>
-#define __need___va_list
-#include <stdarg.h>
-
-/* This file defines _PATH_LOG. */
-#include <bits/syslog-path.h>
-
-/*
- * priorities/facilities are encoded into a single 32-bit quantity, where the
- * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
- * (0-big number). Both the priorities and the facilities map roughly
- * one-to-one to strings in the syslogd(8) source code. This mapping is
- * included in this file.
- *
- * priorities (these are ordered)
- */
-#define LOG_EMERG 0 /* system is unusable */
-#define LOG_ALERT 1 /* action must be taken immediately */
-#define LOG_CRIT 2 /* critical conditions */
-#define LOG_ERR 3 /* error conditions */
-#define LOG_WARNING 4 /* warning conditions */
-#define LOG_NOTICE 5 /* normal but significant condition */
-#define LOG_INFO 6 /* informational */
-#define LOG_DEBUG 7 /* debug-level messages */
-
-#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
- /* extract priority */
-#define LOG_PRI(p) ((p) & LOG_PRIMASK)
-#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
-
-#ifdef SYSLOG_NAMES
-#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
- /* mark "facility" */
-#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
-typedef struct _code {
- char *c_name;
- int c_val;
-} CODE;
-
-CODE prioritynames[] =
- {
- { "alert", LOG_ALERT },
- { "crit", LOG_CRIT },
- { "debug", LOG_DEBUG },
- { "emerg", LOG_EMERG },
- { "err", LOG_ERR },
- { "error", LOG_ERR }, /* DEPRECATED */
- { "info", LOG_INFO },
- { "none", INTERNAL_NOPRI }, /* INTERNAL */
- { "notice", LOG_NOTICE },
- { "panic", LOG_EMERG }, /* DEPRECATED */
- { "warn", LOG_WARNING }, /* DEPRECATED */
- { "warning", LOG_WARNING },
- { NULL, -1 }
- };
+#ifndef _SYSLOG_H
+# include <syslog.h>
#endif
-
-/* facility codes */
-#define LOG_KERN (0<<3) /* kernel messages */
-#define LOG_USER (1<<3) /* random user-level messages */
-#define LOG_MAIL (2<<3) /* mail system */
-#define LOG_DAEMON (3<<3) /* system daemons */
-#define LOG_AUTH (4<<3) /* security/authorization messages */
-#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
-#define LOG_LPR (6<<3) /* line printer subsystem */
-#define LOG_NEWS (7<<3) /* network news subsystem */
-#define LOG_UUCP (8<<3) /* UUCP subsystem */
-#define LOG_CRON (9<<3) /* clock daemon */
-#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
-#define LOG_FTP (11<<3) /* ftp daemon */
-
- /* other codes through 15 reserved for system use */
-#define LOG_LOCAL0 (16<<3) /* reserved for local use */
-#define LOG_LOCAL1 (17<<3) /* reserved for local use */
-#define LOG_LOCAL2 (18<<3) /* reserved for local use */
-#define LOG_LOCAL3 (19<<3) /* reserved for local use */
-#define LOG_LOCAL4 (20<<3) /* reserved for local use */
-#define LOG_LOCAL5 (21<<3) /* reserved for local use */
-#define LOG_LOCAL6 (22<<3) /* reserved for local use */
-#define LOG_LOCAL7 (23<<3) /* reserved for local use */
-
-#define LOG_NFACILITIES 24 /* current number of facilities */
-#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
- /* facility of pri */
-#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
-
-#ifdef SYSLOG_NAMES
-CODE facilitynames[] =
- {
- { "auth", LOG_AUTH },
- { "authpriv", LOG_AUTHPRIV },
- { "cron", LOG_CRON },
- { "daemon", LOG_DAEMON },
- { "ftp", LOG_FTP },
- { "kern", LOG_KERN },
- { "lpr", LOG_LPR },
- { "mail", LOG_MAIL },
- { "mark", INTERNAL_MARK }, /* INTERNAL */
- { "news", LOG_NEWS },
- { "security", LOG_AUTH }, /* DEPRECATED */
- { "syslog", LOG_SYSLOG },
- { "user", LOG_USER },
- { "uucp", LOG_UUCP },
- { "local0", LOG_LOCAL0 },
- { "local1", LOG_LOCAL1 },
- { "local2", LOG_LOCAL2 },
- { "local3", LOG_LOCAL3 },
- { "local4", LOG_LOCAL4 },
- { "local5", LOG_LOCAL5 },
- { "local6", LOG_LOCAL6 },
- { "local7", LOG_LOCAL7 },
- { NULL, -1 }
- };
-#endif
-
-/*
- * arguments to setlogmask.
- */
-#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
-#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
-
-/*
- * Option flags for openlog.
- *
- * LOG_ODELAY no longer does anything.
- * LOG_NDELAY is the inverse of what it used to be.
- */
-#define LOG_PID 0x01 /* log the pid with each message */
-#define LOG_CONS 0x02 /* log on the console if errors in sending */
-#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
-#define LOG_NDELAY 0x08 /* don't delay open */
-#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
-#define LOG_PERROR 0x20 /* log to stderr as well */
-
-__BEGIN_DECLS
-
-/* Close descriptor used to write to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void closelog (void);
-
-/* Open connection to system logger.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void openlog (const char *__ident, int __option, int __facility);
-
-/* Set the log mask level. */
-extern int setlogmask (int __mask) __THROW;
-
-/* Generate a log message using FMT string and option arguments.
-
- This function is a possible cancellation point and therefore not
- marked with __THROW. */
-extern void syslog (int __pri, const char *__fmt, ...)
- __attribute__ ((__format__ (__printf__, 2, 3)));
-
-#ifdef __USE_MISC
-/* Generate a log message using FMT and using arguments pointed to by AP.
-
- This function is not part of POSIX and therefore no official
- cancellation point. But due to similarity with an POSIX interface
- or due to the implementation it is a cancellation point and
- therefore not marked with __THROW. */
-extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
- __attribute__ ((__format__ (__printf__, 2, 0)));
-#endif
-
-
-/* Define some macros helping to catch buffer overflows. */
-#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
-# include <bits/syslog.h>
-#endif
-#ifdef __LDBL_COMPAT
-# include <bits/syslog-ldbl.h>
-#endif
-
-__END_DECLS
-
-#endif /* sys/syslog.h */
diff --git a/misc/syslog.h b/misc/syslog.h
index 830b492..406133b 100644
--- a/misc/syslog.h
+++ b/misc/syslog.h
@@ -1 +1,215 @@
-#include <sys/syslog.h>
+/*
+ * Copyright (c) 1982, 1986, 1988, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * 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.
+ * 4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+ *
+ * @(#)syslog.h 8.1 (Berkeley) 6/2/93
+ */
+
+#ifndef _SYSLOG_H
+#define _SYSLOG_H 1
+
+#include <features.h>
+#define __need___va_list
+#include <stdarg.h>
+
+/* This file defines _PATH_LOG. */
+#include <bits/syslog-path.h>
+
+/*
+ * priorities/facilities are encoded into a single 32-bit quantity, where the
+ * bottom 3 bits are the priority (0-7) and the top 28 bits are the facility
+ * (0-big number). Both the priorities and the facilities map roughly
+ * one-to-one to strings in the syslogd(8) source code. This mapping is
+ * included in this file.
+ *
+ * priorities (these are ordered)
+ */
+#define LOG_EMERG 0 /* system is unusable */
+#define LOG_ALERT 1 /* action must be taken immediately */
+#define LOG_CRIT 2 /* critical conditions */
+#define LOG_ERR 3 /* error conditions */
+#define LOG_WARNING 4 /* warning conditions */
+#define LOG_NOTICE 5 /* normal but significant condition */
+#define LOG_INFO 6 /* informational */
+#define LOG_DEBUG 7 /* debug-level messages */
+
+#define LOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
+ /* extract priority */
+#define LOG_PRI(p) ((p) & LOG_PRIMASK)
+#define LOG_MAKEPRI(fac, pri) ((fac) | (pri))
+
+#ifdef SYSLOG_NAMES
+#define INTERNAL_NOPRI 0x10 /* the "no priority" priority */
+ /* mark "facility" */
+#define INTERNAL_MARK LOG_MAKEPRI(LOG_NFACILITIES << 3, 0)
+typedef struct _code {
+ char *c_name;
+ int c_val;
+} CODE;
+
+CODE prioritynames[] =
+ {
+ { "alert", LOG_ALERT },
+ { "crit", LOG_CRIT },
+ { "debug", LOG_DEBUG },
+ { "emerg", LOG_EMERG },
+ { "err", LOG_ERR },
+ { "error", LOG_ERR }, /* DEPRECATED */
+ { "info", LOG_INFO },
+ { "none", INTERNAL_NOPRI }, /* INTERNAL */
+ { "notice", LOG_NOTICE },
+ { "panic", LOG_EMERG }, /* DEPRECATED */
+ { "warn", LOG_WARNING }, /* DEPRECATED */
+ { "warning", LOG_WARNING },
+ { NULL, -1 }
+ };
+#endif
+
+/* facility codes */
+#define LOG_KERN (0<<3) /* kernel messages */
+#define LOG_USER (1<<3) /* random user-level messages */
+#define LOG_MAIL (2<<3) /* mail system */
+#define LOG_DAEMON (3<<3) /* system daemons */
+#define LOG_AUTH (4<<3) /* security/authorization messages */
+#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */
+#define LOG_LPR (6<<3) /* line printer subsystem */
+#define LOG_NEWS (7<<3) /* network news subsystem */
+#define LOG_UUCP (8<<3) /* UUCP subsystem */
+#define LOG_CRON (9<<3) /* clock daemon */
+#define LOG_AUTHPRIV (10<<3) /* security/authorization messages (private) */
+#define LOG_FTP (11<<3) /* ftp daemon */
+
+ /* other codes through 15 reserved for system use */
+#define LOG_LOCAL0 (16<<3) /* reserved for local use */
+#define LOG_LOCAL1 (17<<3) /* reserved for local use */
+#define LOG_LOCAL2 (18<<3) /* reserved for local use */
+#define LOG_LOCAL3 (19<<3) /* reserved for local use */
+#define LOG_LOCAL4 (20<<3) /* reserved for local use */
+#define LOG_LOCAL5 (21<<3) /* reserved for local use */
+#define LOG_LOCAL6 (22<<3) /* reserved for local use */
+#define LOG_LOCAL7 (23<<3) /* reserved for local use */
+
+#define LOG_NFACILITIES 24 /* current number of facilities */
+#define LOG_FACMASK 0x03f8 /* mask to extract facility part */
+ /* facility of pri */
+#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3)
+
+#ifdef SYSLOG_NAMES
+CODE facilitynames[] =
+ {
+ { "auth", LOG_AUTH },
+ { "authpriv", LOG_AUTHPRIV },
+ { "cron", LOG_CRON },
+ { "daemon", LOG_DAEMON },
+ { "ftp", LOG_FTP },
+ { "kern", LOG_KERN },
+ { "lpr", LOG_LPR },
+ { "mail", LOG_MAIL },
+ { "mark", INTERNAL_MARK }, /* INTERNAL */
+ { "news", LOG_NEWS },
+ { "security", LOG_AUTH }, /* DEPRECATED */
+ { "syslog", LOG_SYSLOG },
+ { "user", LOG_USER },
+ { "uucp", LOG_UUCP },
+ { "local0", LOG_LOCAL0 },
+ { "local1", LOG_LOCAL1 },
+ { "local2", LOG_LOCAL2 },
+ { "local3", LOG_LOCAL3 },
+ { "local4", LOG_LOCAL4 },
+ { "local5", LOG_LOCAL5 },
+ { "local6", LOG_LOCAL6 },
+ { "local7", LOG_LOCAL7 },
+ { NULL, -1 }
+ };
+#endif
+
+/*
+ * arguments to setlogmask.
+ */
+#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
+#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
+
+/*
+ * Option flags for openlog.
+ *
+ * LOG_ODELAY no longer does anything.
+ * LOG_NDELAY is the inverse of what it used to be.
+ */
+#define LOG_PID 0x01 /* log the pid with each message */
+#define LOG_CONS 0x02 /* log on the console if errors in sending */
+#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */
+#define LOG_NDELAY 0x08 /* don't delay open */
+#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */
+#define LOG_PERROR 0x20 /* log to stderr as well */
+
+__BEGIN_DECLS
+
+/* Close descriptor used to write to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void closelog (void);
+
+/* Open connection to system logger.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void openlog (const char *__ident, int __option, int __facility);
+
+/* Set the log mask level. */
+extern int setlogmask (int __mask) __THROW;
+
+/* Generate a log message using FMT string and option arguments.
+
+ This function is a possible cancellation point and therefore not
+ marked with __THROW. */
+extern void syslog (int __pri, const char *__fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+#ifdef __USE_MISC
+/* Generate a log message using FMT and using arguments pointed to by AP.
+
+ This function is not part of POSIX and therefore no official
+ cancellation point. But due to similarity with an POSIX interface
+ or due to the implementation it is a cancellation point and
+ therefore not marked with __THROW. */
+extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+#endif
+
+
+/* Define some macros helping to catch buffer overflows. */
+#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
+# include <bits/syslog.h>
+#endif
+#ifdef __LDBL_COMPAT
+# include <bits/syslog-ldbl.h>
+#endif
+
+__END_DECLS
+
+#endif /* sys/syslog.h */
diff --git a/scripts/check-obsolete-constructs.py b/scripts/check-obsolete-constructs.py
index 9bda57f..21744db 100755
--- a/scripts/check-obsolete-constructs.py
+++ b/scripts/check-obsolete-constructs.py
@@ -533,7 +533,6 @@ HEADER_ALLOWED_INCLUDES = {
"sched.h": [ "time.h" ],
"semaphore.h": [ "sys/types.h" ],
"spawn.h": [ "sched.h", "sys/types.h" ],
- "syslog.h": [ "sys/syslog.h" ],
"termios.h": [ "sys/ttydefaults.h" ],
# POSIX sys/ headers
@@ -638,6 +637,11 @@ HEADER_ALLOWED_INCLUDES = {
"sys/vfs.h": [ "sys/statfs.h" ],
"sys/xattr.h": [ "sys/types.h" ],
+ # Nonstandardized sys/ headers that do nothing but include a
+ # top-level header with the same name. These exist for
+ # compatibility with old systems that only had the sys/ name.
+ "sys/syslog.h": [ "syslog.h" ],
+
# Nonstandardized networking headers
"ifaddrs.h": [ "sys/socket.h" ],
"resolv.h": [ "arpa/nameser.h", "netinet/in.h",
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-01-08 19:19 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-26 16:36 [glibc/zack/no-nested-includes] Swap sys/syslog.h with syslog.h Zack Weinberg
-- strict thread matches above, loose matches on Subject: below --
2020-01-08 19:19 Zack Weinberg
2019-06-26 15:49 Zack Weinberg
2019-06-20 16:06 Zack Weinberg
2019-06-18 15:33 Zack Weinberg
2019-05-16 18:43 Zack Weinberg
2019-05-16 18:36 Zack Weinberg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).