mirror of
git://git.musl-libc.org/musl
synced 2024-12-24 15:43:06 +00:00
70d9c303b3
this issue affected the prioritynames and facilitynames arrays which are only provided when requested (usually by syslogd implementations) and which are presently defined as compound literals. the aliasing violation seems to have been introduced as a workaround for bad behavior by gcc's -Wwrite-strings option, but it caused compilers to completely optimize out the contents of prioritynames and facilitynames since, under many usage cases, the aliasing rules prove that the contents are never accessed.
101 lines
2.7 KiB
C
101 lines
2.7 KiB
C
#ifndef _SYSLOG_H
|
|
#define _SYSLOG_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <features.h>
|
|
|
|
#define LOG_EMERG 0
|
|
#define LOG_ALERT 1
|
|
#define LOG_CRIT 2
|
|
#define LOG_ERR 3
|
|
#define LOG_WARNING 4
|
|
#define LOG_NOTICE 5
|
|
#define LOG_INFO 6
|
|
#define LOG_DEBUG 7
|
|
|
|
#define LOG_PRIMASK 7
|
|
#define LOG_PRI(p) ((p)&LOG_PRIMASK)
|
|
#define LOG_MAKEPRI(f, p) (((f)<<3)|(p))
|
|
|
|
#define LOG_MASK(p) (1<<(p))
|
|
#define LOG_UPTO(p) ((1<<((p)+1))-1)
|
|
|
|
#define LOG_KERN (0<<3)
|
|
#define LOG_USER (1<<3)
|
|
#define LOG_MAIL (2<<3)
|
|
#define LOG_DAEMON (3<<3)
|
|
#define LOG_AUTH (4<<3)
|
|
#define LOG_SYSLOG (5<<3)
|
|
#define LOG_LPR (6<<3)
|
|
#define LOG_NEWS (7<<3)
|
|
#define LOG_UUCP (8<<3)
|
|
#define LOG_CRON (9<<3)
|
|
#define LOG_AUTHPRIV (10<<3)
|
|
#define LOG_FTP (11<<3)
|
|
|
|
#define LOG_LOCAL0 (16<<3)
|
|
#define LOG_LOCAL1 (17<<3)
|
|
#define LOG_LOCAL2 (18<<3)
|
|
#define LOG_LOCAL3 (19<<3)
|
|
#define LOG_LOCAL4 (20<<3)
|
|
#define LOG_LOCAL5 (21<<3)
|
|
#define LOG_LOCAL6 (22<<3)
|
|
#define LOG_LOCAL7 (23<<3)
|
|
|
|
#define LOG_NFACILITIES 24
|
|
#define LOG_FACMASK 0x3f8
|
|
#define LOG_FAC(p) (((p)&LOG_FACMASK)>>3)
|
|
|
|
#define LOG_PID 0x01
|
|
#define LOG_CONS 0x02
|
|
#define LOG_ODELAY 0x04
|
|
#define LOG_NDELAY 0x08
|
|
#define LOG_NOWAIT 0x10
|
|
#define LOG_PERROR 0x20
|
|
|
|
void closelog (void);
|
|
void openlog (const char *, int, int);
|
|
int setlogmask (int);
|
|
void syslog (int, const char *, ...);
|
|
|
|
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
#define _PATH_LOG "/dev/log"
|
|
#define __NEED_va_list
|
|
#include <bits/alltypes.h>
|
|
void vsyslog (int, const char *, va_list);
|
|
#if defined(SYSLOG_NAMES)
|
|
#define INTERNAL_NOPRI 0x10
|
|
#define INTERNAL_MARK (LOG_NFACILITIES<<3)
|
|
typedef struct {
|
|
char *c_name;
|
|
int c_val;
|
|
} CODE;
|
|
#define prioritynames ((CODE *)(const CODE []){ \
|
|
{ "alert", LOG_ALERT }, { "crit", LOG_CRIT }, { "debug", LOG_DEBUG }, \
|
|
{ "emerg", LOG_EMERG }, { "err", LOG_ERR }, { "error", LOG_ERR }, \
|
|
{ "info", LOG_INFO }, { "none", INTERNAL_NOPRI }, \
|
|
{ "notice", LOG_NOTICE }, { "panic", LOG_EMERG }, \
|
|
{ "warn", LOG_WARNING }, { "warning", LOG_WARNING }, { 0, -1 } })
|
|
#define facilitynames ((CODE *)(const CODE []){ \
|
|
{ "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 }, { "news", LOG_NEWS }, \
|
|
{ "security", LOG_AUTH }, { "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 }, { 0, -1 } })
|
|
#endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|