/** * D header file for POSIX system logger API. * (http://pubs.opengroup.org/onlinepubs/007904875/basedefs/syslog.h.html) * * Copyright: Copyright Adil Baig 2013. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0). * Authors: Adil Baig * Standards: The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition */ /* Copyright Adil Baig 2013. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE or copy at * http://www.boost.org/LICENSE_1_0.txt) */ module core.sys.posix.syslog; version (OSX) version = Darwin; else version (iOS) version = Darwin; else version (TVOS) version = Darwin; else version (WatchOS) version = Darwin; version (Posix): extern (C) nothrow @nogc: version (CRuntime_Glibc) { //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); } else version (Darwin) { //http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/osfmk/sys/syslog.h //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); } else version (FreeBSD) { //http://fxr.watson.org/fxr/source/sys/syslog.h //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ LOG_NTP = (12<<3), /* NTP subsystem */ LOG_SECURITY = (13<<3), /* security subsystems (firewalling, etc.) */ LOG_CONSOLE = (14<<3), /* /dev/console output */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); } else version (NetBSD) { //http://fxr.watson.org/fxr/source/sys/syslog.h //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ LOG_NTP = (12<<3), /* NTP subsystem */ LOG_SECURITY = (13<<3), /* security subsystems (firewalling, etc.) */ LOG_CONSOLE = (14<<3), /* /dev/console output */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); } else version (OpenBSD) { //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ } //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ } //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ // OpenBSD does not define the following: //LOG_NTP //LOG_SECURITY //LOG_CONSOLE /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ } extern(D) int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ extern(D) int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog(const char *, int, int); int setlogmask(int); void syslog(int, const char *, ...); void closelog(); } else version (DragonFlyBSD) { //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ LOG_NTP = (12<<3), /* NTP subsystem */ LOG_SECURITY = (13<<3), /* security subsystems (firewalling, etc.) */ LOG_CONSOLE = (14<<3), /* /dev/console output */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); } else version (Solaris) { //http://pubs.opengroup.org/onlinepubs/007904875/basedefs/syslog.h.html //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); } else version (CRuntime_UClibc) { //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); } else version (CRuntime_Musl) { //PRIORITY enum { LOG_EMERG = 0, /* system is unusable */ LOG_ALERT = 1, /* action must be taken immediately */ LOG_CRIT = 2, /* critical conditions */ LOG_ERR = 3, /* error conditions */ LOG_WARNING = 4, /* warning conditions */ LOG_NOTICE = 5, /* normal but significant condition */ LOG_INFO = 6, /* informational */ LOG_DEBUG = 7, /* debug-level messages */ }; //OPTIONS enum { LOG_PID = 0x01, /* log the pid with each message */ LOG_CONS = 0x02, /* log on the console if errors in sending */ LOG_ODELAY = 0x04, /* delay open until first syslog() (default) */ LOG_NDELAY = 0x08, /* don't delay open */ LOG_NOWAIT = 0x10, /* don't wait for console forks: DEPRECATED */ LOG_PERROR = 0x20, /* log to stderr as well */ }; //FACILITY enum { LOG_KERN = (0<<3), /* kernel messages */ LOG_USER = (1<<3), /* random user-level messages */ LOG_MAIL = (2<<3), /* mail system */ LOG_DAEMON = (3<<3), /* system daemons */ LOG_AUTH = (4<<3), /* security/authorization messages */ LOG_SYSLOG = (5<<3), /* messages generated internally by syslogd */ LOG_LPR = (6<<3), /* line printer subsystem */ LOG_NEWS = (7<<3), /* network news subsystem */ LOG_UUCP = (8<<3), /* UUCP subsystem */ LOG_CRON = (9<<3), /* clock daemon */ LOG_AUTHPRIV = (10<<3), /* security/authorization messages (private), */ LOG_FTP = (11<<3), /* ftp daemon */ /* other codes through 15 reserved for system use */ LOG_LOCAL0 = (16<<3), /* reserved for local use */ LOG_LOCAL1 = (17<<3), /* reserved for local use */ LOG_LOCAL2 = (18<<3), /* reserved for local use */ LOG_LOCAL3 = (19<<3), /* reserved for local use */ LOG_LOCAL4 = (20<<3), /* reserved for local use */ LOG_LOCAL5 = (21<<3), /* reserved for local use */ LOG_LOCAL6 = (22<<3), /* reserved for local use */ LOG_LOCAL7 = (23<<3), /* reserved for local use */ LOG_NFACILITIES = 24, /* current number of facilities */ }; int LOG_MASK(int pri) { return 1 << pri; } /* mask for one priority */ int LOG_UPTO(int pri) { return (1 << (pri+1)) - 1; } /* all priorities through pri */ void openlog (const char *, int __option, int __facility); int setlogmask (int __mask); void syslog (int __pri, const char *__fmt, ...); void closelog(); }