Module Name: src
Committed By: christos
Date: Thu Oct 11 17:09:56 UTC 2012
Modified Files:
src/lib/libc/compat/gen: compat_syslog.c
src/lib/libc/gen: syslog.c
src/lib/libc/include: extern.h
Log Message:
take care of the signal safe syslog calls which are not exposed.
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libc/compat/gen/compat_syslog.c
cvs rdiff -u -r1.52 -r1.53 src/lib/libc/gen/syslog.c
cvs rdiff -u -r1.20 -r1.21 src/lib/libc/include/extern.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/compat/gen/compat_syslog.c
diff -u src/lib/libc/compat/gen/compat_syslog.c:1.1 src/lib/libc/compat/gen/compat_syslog.c:1.2
--- src/lib/libc/compat/gen/compat_syslog.c:1.1 Wed Oct 10 18:52:26 2012
+++ src/lib/libc/compat/gen/compat_syslog.c Thu Oct 11 13:09:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_syslog.c,v 1.1 2012/10/10 22:52:26 christos Exp $ */
+/* $NetBSD: compat_syslog.c,v 1.2 2012/10/11 17:09:55 christos Exp $ */
/*-
* Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -39,6 +39,15 @@
#include <sys/syslog.h>
#include <compat/sys/syslog.h>
+void syslog_ss(int, struct syslog_data60 *, const char *, ...)
+ __printflike(3, 4);
+void vsyslog_ss(int, struct syslog_data60 *, const char *, va_list)
+ __printflike(3, 0);
+void syslogp_ss(int, struct syslog_data60 *, const char *, const char *,
+ const char *, ...) __printflike(5, 0);
+void vsyslogp_ss(int, struct syslog_data60 *, const char *, const char *,
+ const char *, va_list) __printflike(5, 0);
+
#ifdef __weak_alias
__weak_alias(closelog_r,_closelog_r)
__weak_alias(openlog_r,_openlog_r)
@@ -47,6 +56,11 @@ __weak_alias(syslog_r,_syslog_r)
__weak_alias(vsyslog_r,_vsyslog_r)
__weak_alias(syslogp_r,_syslogp_r)
__weak_alias(vsyslogp_r,_vsyslogp_r)
+
+__weak_alias(syslog_ss,_syslog_ss)
+__weak_alias(vsyslog_ss,_vsyslog_ss)
+__weak_alias(syslogp_ss,_syslogp_ss)
+__weak_alias(vsyslogp_ss,_vsyslogp_ss)
#endif /* __weak_alias */
__warn_references(closelog_r,
@@ -127,6 +141,7 @@ vsyslog_r(int pri, struct syslog_data60
syslog_data_convert(&data, data60);
__vsyslog_r60(pri, &data, fmt, ap);
}
+
void
syslogp_r(int pri, struct syslog_data60 *data60, const char *msgid,
const char *sdfmt, const char *msgfmt, ...)
@@ -149,3 +164,42 @@ vsyslogp_r(int pri, struct syslog_data60
__vsyslogp_r60(pri, &data, msgid, sdfmt, msgfmt, ap);
}
+
+/*
+ * These are semi-private
+ */
+#define LOG_SIGNAL_SAFE (int)0x80000000
+
+void
+syslog_ss(int pri, struct syslog_data60 *data, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ vsyslog_r(pri | LOG_SIGNAL_SAFE, data, fmt, ap);
+ va_end(ap);
+}
+
+void
+syslogp_ss(int pri, struct syslog_data60 *data, const char *msgid,
+ const char *sdfmt, const char *msgfmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, msgfmt);
+ vsyslogp_r(pri | LOG_SIGNAL_SAFE, data, msgid, sdfmt, msgfmt, ap);
+ va_end(ap);
+}
+
+void
+vsyslog_ss(int pri, struct syslog_data60 *data, const char *fmt, va_list ap)
+{
+ vsyslog_r(pri | LOG_SIGNAL_SAFE, data, fmt, ap);
+}
+
+void
+vsyslogp_ss(int pri, struct syslog_data60 *data, const char *msgid,
+ const char *sdfmt, const char *msgfmt, va_list ap)
+{
+ vsyslogp_r(pri | LOG_SIGNAL_SAFE, data, msgid, sdfmt, msgfmt, ap);
+}
Index: src/lib/libc/gen/syslog.c
diff -u src/lib/libc/gen/syslog.c:1.52 src/lib/libc/gen/syslog.c:1.53
--- src/lib/libc/gen/syslog.c:1.52 Wed Oct 10 19:53:43 2012
+++ src/lib/libc/gen/syslog.c Thu Oct 11 13:09:55 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: syslog.c,v 1.52 2012/10/10 23:53:43 christos Exp $ */
+/* $NetBSD: syslog.c,v 1.53 2012/10/11 17:09:55 christos Exp $ */
/*
* Copyright (c) 1983, 1988, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)syslog.c 8.5 (Berkeley) 4/29/95";
#else
-__RCSID("$NetBSD: syslog.c,v 1.52 2012/10/10 23:53:43 christos Exp $");
+__RCSID("$NetBSD: syslog.c,v 1.53 2012/10/11 17:09:55 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -67,11 +67,6 @@ __weak_alias(syslog,_syslog)
__weak_alias(vsyslog,_vsyslog)
__weak_alias(syslogp,_syslogp)
__weak_alias(vsyslogp,_vsyslogp)
-
-__weak_alias(syslog_ss,_syslog_ss)
-__weak_alias(vsyslog_ss,_vsyslog_ss)
-__weak_alias(syslogp_ss,_syslogp_ss)
-__weak_alias(vsyslogp_ss,_vsyslogp_ss)
#endif
static struct syslog_data sdata = SYSLOG_DATA_INIT;
Index: src/lib/libc/include/extern.h
diff -u src/lib/libc/include/extern.h:1.20 src/lib/libc/include/extern.h:1.21
--- src/lib/libc/include/extern.h:1.20 Tue Sep 11 22:00:53 2012
+++ src/lib/libc/include/extern.h Thu Oct 11 13:09:56 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: extern.h,v 1.20 2012/09/12 02:00:53 manu Exp $ */
+/* $NetBSD: extern.h,v 1.21 2012/10/11 17:09:56 christos Exp $ */
/*
* Copyright (c) 1997 Christos Zoulas. All rights reserved.
@@ -49,21 +49,22 @@ char *__hldtoa(long double, const char *
char *__ldtoa(long double *, int, int, int *, int *, char **);
#endif
+#ifndef __LIBC12_SOURCE__
struct syslog_data;
void syslog_ss(int, struct syslog_data *, const char *, ...)
- __attribute__((__format__(__printf__,3,4)));
-void vsyslog_ss(int, struct syslog_data *, const char *, va_list);
+ __RENAME(__syslog_ss60) __printflike(3, 4);
void vsyslog_ss(int, struct syslog_data *, const char *, va_list)
- __attribute__((__format__(__printf__,3,0)));
+ __RENAME(__vsyslog_ss60) __printflike(3, 0);
void syslogp_ss(int, struct syslog_data *, const char *, const char *,
- const char *, ...) __attribute__((__format__(__printf__,5,0)));
+ const char *, ...) __RENAME(__syslogp_ss60) __printflike(5, 0);
void vsyslogp_ss(int, struct syslog_data *, const char *, const char *,
- const char *, va_list) __attribute__((__format__(__printf__,5,0)));
+ const char *, va_list) __RENAME(__vsyslogp_ss60) __printflike(5, 0);
+#endif
int snprintf_ss(char * __restrict, size_t, const char * __restrict, ...)
- __attribute__((__format__(__printf__, 3, 4)));
+ __printflike(3, 4);
int vsnprintf_ss(char * __restrict, size_t, const char * __restrict,
- va_list) __attribute__((__format__(__printf__, 3, 0)));
+ va_list) __printflike(3, 0);
void _malloc_prefork(void);
void _malloc_postfork(void);