rpm
4.10.0
|
00001 #ifndef H_RPMLOG 00002 #define H_RPMLOG 1 00003 00010 #include <stdarg.h> 00011 #include <stdio.h> 00012 00013 #include <rpm/rpmutil.h> 00014 00015 #ifdef __cplusplus 00016 extern "C" { 00017 #endif 00018 00029 typedef enum rpmlogLvl_e { 00030 RPMLOG_EMERG = 0, 00031 RPMLOG_ALERT = 1, 00032 RPMLOG_CRIT = 2, 00033 RPMLOG_ERR = 3, 00034 RPMLOG_WARNING = 4, 00035 RPMLOG_NOTICE = 5, 00036 RPMLOG_INFO = 6, 00037 RPMLOG_DEBUG = 7 00038 } rpmlogLvl; 00039 00040 #define RPMLOG_PRIMASK 0x07 /* mask to extract priority part (internal) */ 00041 /* extract priority */ 00042 #define RPMLOG_PRI(p) ((p) & RPMLOG_PRIMASK) 00043 #define RPMLOG_MAKEPRI(fac, pri) ((((unsigned)(fac)) << 3) | (pri)) 00044 00045 #ifdef RPMLOG_NAMES 00046 #define _RPMLOG_NOPRI 0x10 /* the "no priority" priority */ 00047 /* mark "facility" */ 00048 #define _RPMLOG_MARK RPMLOG_MAKEPRI(RPMLOG_NFACILITIES, 0) 00049 typedef struct _rpmcode { 00050 const char *c_name; 00051 int c_val; 00052 } RPMCODE; 00053 00054 RPMCODE rpmprioritynames[] = 00055 { 00056 { "alert", RPMLOG_ALERT }, 00057 { "crit", RPMLOG_CRIT }, 00058 { "debug", RPMLOG_DEBUG }, 00059 { "emerg", RPMLOG_EMERG }, 00060 { "err", RPMLOG_ERR }, 00061 { "error", RPMLOG_ERR }, /* DEPRECATED */ 00062 { "info", RPMLOG_INFO }, 00063 { "none", _RPMLOG_NOPRI }, /* INTERNAL */ 00064 { "notice", RPMLOG_NOTICE }, 00065 { "panic", RPMLOG_EMERG }, /* DEPRECATED */ 00066 { "warn", RPMLOG_WARNING }, /* DEPRECATED */ 00067 { "warning",RPMLOG_WARNING }, 00068 { NULL, -1 } 00069 }; 00070 #endif 00071 00075 typedef enum rpmlogFac_e { 00076 RPMLOG_KERN = (0<<3), 00077 RPMLOG_USER = (1<<3), 00078 RPMLOG_MAIL = (2<<3), 00079 RPMLOG_DAEMON = (3<<3), 00080 RPMLOG_AUTH = (4<<3), 00081 RPMLOG_SYSLOG = (5<<3), 00082 RPMLOG_LPR = (6<<3), 00083 RPMLOG_NEWS = (7<<3), 00084 RPMLOG_UUCP = (8<<3), 00085 RPMLOG_CRON = (9<<3), 00086 RPMLOG_AUTHPRIV = (10<<3), 00087 RPMLOG_FTP = (11<<3), 00089 /* other codes through 15 reserved for system use */ 00090 RPMLOG_LOCAL0 = (16<<3), 00091 RPMLOG_LOCAL1 = (17<<3), 00092 RPMLOG_LOCAL2 = (18<<3), 00093 RPMLOG_LOCAL3 = (19<<3), 00094 RPMLOG_LOCAL4 = (20<<3), 00095 RPMLOG_LOCAL5 = (21<<3), 00096 RPMLOG_LOCAL6 = (22<<3), 00097 RPMLOG_LOCAL7 = (23<<3), 00099 #define RPMLOG_NFACILITIES 24 00100 RPMLOG_ERRMSG = (((unsigned)(RPMLOG_NFACILITIES+0))<<3) 00101 } rpmlogFac; 00102 00103 #define RPMLOG_FACMASK 0x03f8 00104 #define RPMLOG_FAC(p) (((p) & RPMLOG_FACMASK) >> 3) 00105 00106 00107 #ifdef RPMLOG_NAMES 00108 RPMCODE facilitynames[] = 00109 { 00110 { "auth", RPMLOG_AUTH }, 00111 { "authpriv",RPMLOG_AUTHPRIV }, 00112 { "cron", RPMLOG_CRON }, 00113 { "daemon", RPMLOG_DAEMON }, 00114 { "ftp", RPMLOG_FTP }, 00115 { "kern", RPMLOG_KERN }, 00116 { "lpr", RPMLOG_LPR }, 00117 { "mail", RPMLOG_MAIL }, 00118 { "mark", _RPMLOG_MARK }, /* INTERNAL */ 00119 { "news", RPMLOG_NEWS }, 00120 { "security",RPMLOG_AUTH }, /* DEPRECATED */ 00121 { "syslog", RPMLOG_SYSLOG }, 00122 { "user", RPMLOG_USER }, 00123 { "uucp", RPMLOG_UUCP }, 00124 { "local0", RPMLOG_LOCAL0 }, 00125 { "local1", RPMLOG_LOCAL1 }, 00126 { "local2", RPMLOG_LOCAL2 }, 00127 { "local3", RPMLOG_LOCAL3 }, 00128 { "local4", RPMLOG_LOCAL4 }, 00129 { "local5", RPMLOG_LOCAL5 }, 00130 { "local6", RPMLOG_LOCAL6 }, 00131 { "local7", RPMLOG_LOCAL7 }, 00132 { NULL, -1 } 00133 }; 00134 #endif 00135 00136 /* 00137 * arguments to setlogmask. 00138 */ 00139 #define RPMLOG_MASK(pri) (1 << ((unsigned)(pri))) 00140 #define RPMLOG_UPTO(pri) ((1 << (((unsigned)(pri))+1)) - 1) 00142 /* 00143 * Option flags for openlog. 00144 * 00145 * RPMLOG_ODELAY no longer does anything. 00146 * RPMLOG_NDELAY is the inverse of what it used to be. 00147 */ 00148 #define RPMLOG_PID 0x01 00149 #define RPMLOG_CONS 0x02 00150 #define RPMLOG_ODELAY 0x04 00151 #define RPMLOG_NDELAY 0x08 00152 #define RPMLOG_NOWAIT 0x10 00153 #define RPMLOG_PERROR 0x20 00155 /* \ingroup rpmlog 00156 * Option flags for callback return value. 00157 */ 00158 #define RPMLOG_DEFAULT 0x01 00159 #define RPMLOG_EXIT 0x02 00163 typedef struct rpmlogRec_s * rpmlogRec; 00164 00170 const char * rpmlogRecMessage(rpmlogRec rec); 00171 00177 rpmlogLvl rpmlogRecPriority(rpmlogRec rec); 00178 00179 typedef void * rpmlogCallbackData; 00180 00189 typedef int (*rpmlogCallback) (rpmlogRec rec, rpmlogCallbackData data); 00190 00195 int rpmlogGetNrecs(void) ; 00196 00201 void rpmlogPrint(FILE *f); 00202 00207 void rpmlogClose (void); 00208 00213 void rpmlogOpen (const char * ident, int option, int facility); 00214 00220 int rpmlogSetMask (int mask); 00221 00225 void rpmlog (int code, const char *fmt, ...) RPM_GNUC_PRINTF(2, 3); 00226 00231 const char * rpmlogMessage(void); 00232 00240 int rpmlogCode(void); 00241 00247 const char * rpmlogLevelPrefix(rpmlogLvl pri); 00248 00255 rpmlogCallback rpmlogSetCallback(rpmlogCallback cb, rpmlogCallbackData data); 00256 00262 FILE * rpmlogSetFile(FILE * fp); 00263 00264 #define rpmSetVerbosity(_lvl) \ 00265 ((void)rpmlogSetMask( RPMLOG_UPTO( RPMLOG_PRI(_lvl)))) 00266 #define rpmIncreaseVerbosity() \ 00267 ((void)rpmlogSetMask(((((unsigned)(rpmlogSetMask(0) & 0xff)) << 1) | 1))) 00268 #define rpmDecreaseVerbosity() \ 00269 ((void)rpmlogSetMask((((int)(rpmlogSetMask(0) & 0xff)) >> 1))) 00270 #define rpmIsNormal() \ 00271 (rpmlogSetMask(0) >= RPMLOG_MASK( RPMLOG_NOTICE )) 00272 #define rpmIsVerbose() \ 00273 (rpmlogSetMask(0) >= RPMLOG_MASK( RPMLOG_INFO )) 00274 #define rpmIsDebug() \ 00275 (rpmlogSetMask(0) >= RPMLOG_MASK( RPMLOG_DEBUG )) 00276 00277 #ifdef __cplusplus 00278 } 00279 #endif 00280 00281 #endif /* H_RPMLOG */