1 #pragma once 2 3 #ifdef __cplusplus 4 extern "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 58 void closelog(void); 59 void openlog(const char*, int, int); 60 int setlogmask(int); 61 void 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> 67 void vsyslog(int, const char*, va_list); 68 #if defined(SYSLOG_NAMES) 69 #define INTERNAL_NOPRI 0x10 70 #define INTERNAL_MARK (LOG_NFACILITIES << 3) 71 typedef 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