1#pragma once 2 3#ifdef __cplusplus 4extern "C" { 5#endif 6 7#include <features.h> 8 9#define LOG_EMERG 0 10#define LOG_ALERT 1 11#define LOG_CRIT 2 12#define LOG_ERR 3 13#define LOG_WARNING 4 14#define LOG_NOTICE 5 15#define LOG_INFO 6 16#define LOG_DEBUG 7 17 18#define LOG_PRIMASK 7 19#define LOG_PRI(p) ((p)&LOG_PRIMASK) 20#define LOG_MAKEPRI(f, p) (((f) << 3) | (p)) 21 22#define LOG_MASK(p) (1 << (p)) 23#define LOG_UPTO(p) ((1 << ((p) + 1)) - 1) 24 25#define LOG_KERN (0 << 3) 26#define LOG_USER (1 << 3) 27#define LOG_MAIL (2 << 3) 28#define LOG_DAEMON (3 << 3) 29#define LOG_AUTH (4 << 3) 30#define LOG_SYSLOG (5 << 3) 31#define LOG_LPR (6 << 3) 32#define LOG_NEWS (7 << 3) 33#define LOG_UUCP (8 << 3) 34#define LOG_CRON (9 << 3) 35#define LOG_AUTHPRIV (10 << 3) 36#define LOG_FTP (11 << 3) 37 38#define LOG_LOCAL0 (16 << 3) 39#define LOG_LOCAL1 (17 << 3) 40#define LOG_LOCAL2 (18 << 3) 41#define LOG_LOCAL3 (19 << 3) 42#define LOG_LOCAL4 (20 << 3) 43#define LOG_LOCAL5 (21 << 3) 44#define LOG_LOCAL6 (22 << 3) 45#define LOG_LOCAL7 (23 << 3) 46 47#define LOG_NFACILITIES 24 48#define LOG_FACMASK 0x3f8 49#define LOG_FAC(p) (((p)&LOG_FACMASK) >> 3) 50 51#define LOG_PID 0x01 52#define LOG_CONS 0x02 53#define LOG_ODELAY 0x04 54#define LOG_NDELAY 0x08 55#define LOG_NOWAIT 0x10 56#define LOG_PERROR 0x20 57 58void closelog(void); 59void openlog(const char*, int, int); 60int setlogmask(int); 61void syslog(int, const char*, ...); 62 63#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) 64#define _PATH_LOG "/dev/log" 65#define __NEED_va_list 66#include <bits/alltypes.h> 67void vsyslog(int, const char*, va_list); 68#if defined(SYSLOG_NAMES) 69#define INTERNAL_NOPRI 0x10 70#define INTERNAL_MARK (LOG_NFACILITIES << 3) 71typedef struct { 72 char* c_name; 73 int c_val; 74} CODE; 75#define prioritynames \ 76 ((CODE*)(const CODE[]){{"alert", LOG_ALERT}, \ 77 {"crit", LOG_CRIT}, \ 78 {"debug", LOG_DEBUG}, \ 79 {"emerg", LOG_EMERG}, \ 80 {"err", LOG_ERR}, \ 81 {"error", LOG_ERR}, \ 82 {"info", LOG_INFO}, \ 83 {"none", INTERNAL_NOPRI}, \ 84 {"notice", LOG_NOTICE}, \ 85 {"panic", LOG_EMERG}, \ 86 {"warn", LOG_WARNING}, \ 87 {"warning", LOG_WARNING}, \ 88 {0, -1}}) 89#define facilitynames \ 90 ((CODE*)(const CODE[]){{"auth", LOG_AUTH}, \ 91 {"authpriv", LOG_AUTHPRIV}, \ 92 {"cron", LOG_CRON}, \ 93 {"daemon", LOG_DAEMON}, \ 94 {"ftp", LOG_FTP}, \ 95 {"kern", LOG_KERN}, \ 96 {"lpr", LOG_LPR}, \ 97 {"mail", LOG_MAIL}, \ 98 {"mark", INTERNAL_MARK}, \ 99 {"news", LOG_NEWS}, \ 100 {"security", LOG_AUTH}, \ 101 {"syslog", LOG_SYSLOG}, \ 102 {"user", LOG_USER}, \ 103 {"uucp", LOG_UUCP}, \ 104 {"local0", LOG_LOCAL0}, \ 105 {"local1", LOG_LOCAL1}, \ 106 {"local2", LOG_LOCAL2}, \ 107 {"local3", LOG_LOCAL3}, \ 108 {"local4", LOG_LOCAL4}, \ 109 {"local5", LOG_LOCAL5}, \ 110 {"local6", LOG_LOCAL6}, \ 111 {"local7", LOG_LOCAL7}, \ 112 {0, -1}}) 113#endif 114#endif 115 116#ifdef __cplusplus 117} 118#endif 119