rpm  5.4.14
rpmlog.h
Go to the documentation of this file.
1 #ifndef H_RPMLOG
2 #define H_RPMLOG 1
3 
9 #include <stdio.h>
10 #include <stdarg.h>
11 
22 /*@-typeuse@*/
23 typedef enum rpmlogLvl_e {
27  RPMLOG_ERR = 3,
32 } rpmlogLvl;
33 /*@=typeuse@*/
34 
35 #define RPMLOG_PRIMASK 0x07 /* mask to extract priority part (internal) */
36  /* extract priority */
37 #define RPMLOG_PRI(p) ((p) & RPMLOG_PRIMASK)
38 #define RPMLOG_MAKEPRI(fac, pri) ((((unsigned)(fac)) << 3) | (pri))
39 
40 #ifdef RPMLOG_NAMES
41 #define _RPMLOG_NOPRI 0x10 /* the "no priority" priority */
42  /* mark "facility" */
43 #define _RPMLOG_MARK RPMLOG_MAKEPRI(RPMLOG_NFACILITIES, 0)
44 typedef struct _rpmcode {
45  const char *c_name;
46  int c_val;
47 } RPMCODE;
48 
49 RPMCODE rpmprioritynames[] =
50  {
51  { "alert", RPMLOG_ALERT },
52  { "crit", RPMLOG_CRIT },
53  { "debug", RPMLOG_DEBUG },
54  { "emerg", RPMLOG_EMERG },
55  { "err", RPMLOG_ERR },
56  { "error", RPMLOG_ERR }, /* DEPRECATED */
57  { "info", RPMLOG_INFO },
58  { "none", _RPMLOG_NOPRI }, /* INTERNAL */
59  { "notice", RPMLOG_NOTICE },
60  { "panic", RPMLOG_EMERG }, /* DEPRECATED */
61  { "warn", RPMLOG_WARNING }, /* DEPRECATED */
62  { "warning",RPMLOG_WARNING },
63  { NULL, -1 }
64  };
65 #endif
66 
70 /*@-enummemuse -typeuse@*/
71 typedef enum rpmlogFac_e {
72  RPMLOG_KERN = (0<<3),
73  RPMLOG_USER = (1<<3),
74  RPMLOG_MAIL = (2<<3),
75  RPMLOG_DAEMON = (3<<3),
76  RPMLOG_AUTH = (4<<3),
77  RPMLOG_SYSLOG = (5<<3),
78  RPMLOG_LPR = (6<<3),
79  RPMLOG_NEWS = (7<<3),
80  RPMLOG_UUCP = (8<<3),
81  RPMLOG_CRON = (9<<3),
82  RPMLOG_AUTHPRIV = (10<<3),
83  RPMLOG_FTP = (11<<3),
85  /* other codes through 15 reserved for system use */
86  RPMLOG_LOCAL0 = (16<<3),
87  RPMLOG_LOCAL1 = (17<<3),
88  RPMLOG_LOCAL2 = (18<<3),
89  RPMLOG_LOCAL3 = (19<<3),
90  RPMLOG_LOCAL4 = (20<<3),
91  RPMLOG_LOCAL5 = (21<<3),
92  RPMLOG_LOCAL6 = (22<<3),
93  RPMLOG_LOCAL7 = (23<<3),
95 #define RPMLOG_NFACILITIES 24
96  RPMLOG_ERRMSG = (((unsigned)(RPMLOG_NFACILITIES+0))<<3)
97 } rpmlogFac;
98 /*@=enummemuse =typeuse@*/
99 
100 #define RPMLOG_FACMASK 0x03f8
101 #define RPMLOG_FAC(p) (((p) & RPMLOG_FACMASK) >> 3)
102 
103 
104 #ifdef RPMLOG_NAMES
105 RPMCODE facilitynames[] =
106  {
107  { "auth", RPMLOG_AUTH },
108  { "authpriv",RPMLOG_AUTHPRIV },
109  { "cron", RPMLOG_CRON },
110  { "daemon", RPMLOG_DAEMON },
111  { "ftp", RPMLOG_FTP },
112  { "kern", RPMLOG_KERN },
113  { "lpr", RPMLOG_LPR },
114  { "mail", RPMLOG_MAIL },
115  { "mark", _RPMLOG_MARK }, /* INTERNAL */
116  { "news", RPMLOG_NEWS },
117  { "security",RPMLOG_AUTH }, /* DEPRECATED */
118  { "syslog", RPMLOG_SYSLOG },
119  { "user", RPMLOG_USER },
120  { "uucp", RPMLOG_UUCP },
121  { "local0", RPMLOG_LOCAL0 },
122  { "local1", RPMLOG_LOCAL1 },
123  { "local2", RPMLOG_LOCAL2 },
124  { "local3", RPMLOG_LOCAL3 },
125  { "local4", RPMLOG_LOCAL4 },
126  { "local5", RPMLOG_LOCAL5 },
127  { "local6", RPMLOG_LOCAL6 },
128  { "local7", RPMLOG_LOCAL7 },
129  { NULL, -1 }
130  };
131 #endif
132 
133 /*
134  * arguments to setlogmask.
135  */
136 #define RPMLOG_MASK(pri) (1 << ((unsigned)(pri)))
137 #define RPMLOG_UPTO(pri) ((1 << (((unsigned)(pri))+1)) - 1)
139 /*
140  * Option flags for openlog.
141  *
142  * RPMLOG_ODELAY no longer does anything.
143  * RPMLOG_NDELAY is the inverse of what it used to be.
144  */
145 #define RPMLOG_PID 0x01
146 #define RPMLOG_CONS 0x02
147 #define RPMLOG_ODELAY 0x04
148 #define RPMLOG_NDELAY 0x08
149 #define RPMLOG_NOWAIT 0x10
150 #define RPMLOG_PERROR 0x20
154 typedef /*@abstract@*/ struct rpmlogRec_s * rpmlogRec;
155 
158 typedef /*@abstract@*/ void * rpmlogCallbackData;
159 
168 typedef int (*rpmlogCallback) (rpmlogRec rec, rpmlogCallbackData data)
169  /*@*/;
170 
174 #define RPMLOG_DEFAULT 0x01
175 #define RPMLOG_EXIT 0x02
177 #if defined(_RPMLOG_INTERNAL)
178 
180 struct rpmlogRec_s {
181  int code;
182  rpmlogLvl pri; /* priority */
183 /*@owned@*/ /*@relnull@*/
184  const char * message;
185 };
186 #endif
187 
188 #ifdef __cplusplus
189 extern "C" {
190 #endif
191 
197 /*@observer@*/
198 const char * rpmlogLevelPrefix(rpmlogLvl pri)
199  /*@*/;
200 
207 rpmlogCallback rpmlogSetCallback(rpmlogCallback cb, rpmlogCallbackData data)
208  /*@globals internalState@*/
209  /*@modifies internalState @*/;
210 
217 void rpmlogGetCallback(rpmlogCallback *cb, rpmlogCallbackData *data)
218  /*@globals internalState @*/
219  /*@modifies *cb, *data, internalState @*/;
220 
225 int rpmlogGetNrecs(void)
226  /*@*/;
227 
233 /*@observer@*/ /*@retexpose@*/ /*@null@*/
234 const char * rpmlogRecMessage(/*@null@*/ rpmlogRec rec)
235  /*@*/;
236 
242 rpmlogLvl rpmlogRecPriority(/*@null@*/ rpmlogRec rec)
243  /*@*/;
244 
249 void rpmlogPrint(/*@null@*/ FILE *f)
250  /*@modifies *f @*/;
251 
256 /*@unused@*/
257 void rpmlogClose (void)
258  /*@globals internalState@*/
259  /*@modifies internalState @*/;
260 
265 /*@unused@*/
266 void rpmlogOpen (const char * ident, int option, int facility)
267  /*@globals internalState@*/
268  /*@modifies internalState @*/;
269 
275 int rpmlogSetMask (int mask)
276  /*@globals internalState@*/
277  /*@modifies internalState @*/;
278 
283 /*@mayexit@*/ /*@printflike@*/
284 void _rpmlog (int code, const char *fmt, ...)
285 #if defined(__GNUC__) && __GNUC__ >= 2
286  /* issue a warning if the format string doesn't match arguments */
287  __attribute__((format (printf, 2, 3)))
288 #endif
289  /*@*/;
290 
294 void vrpmlog (unsigned code, const char * fmt, va_list ap)
295  /*@*/;
296 
297 /*@mayexit@*/ /*@printflike@*/
298 static inline
299 void rpmlog (int code, const char *fmt, ...)
300  /*@*/
301 {
302  unsigned pri = RPMLOG_PRI(code);
303  unsigned mask = RPMLOG_MASK(pri);
304 
305  if (mask & rpmlogSetMask(0)) {
306  va_list ap;
307  va_start(ap, fmt);
308  vrpmlog(code, fmt, ap);
309  va_end(ap);
310  }
311 }
312 
313 /*@-exportlocal@*/
318 /*@-redecl@*/
319 /*@observer@*/ /*@null@*/ const char * rpmlogMessage(void)
320  /*@*/;
321 /*@=redecl@*/
322 
330 int rpmlogCode(void)
331  /*@*/;
332 
338 /*@null@*/
339 FILE * rpmlogSetFile(/*@null@*/ FILE * fp)
340  /*@globals internalState@*/
341  /*@modifies internalState @*/;
342 /*@=exportlocal@*/
343 
344 #ifdef __cplusplus
345 }
346 #endif
347 
348 #endif /* H_RPMLOG */
#define RPMLOG_PRI(p)
Definition: rpmlog.h:37
format
Definition: hdrfmt.c:5560
rpmlog(RPMLOG_ERR,"%s\n", buf)
rpmlogFac_e
facility codes
Definition: rpmlog.h:71
enum rpmlogLvl_e rpmlogLvl
RPM Log levels.
rpmlogCallback rpmlogSetCallback(rpmlogCallback cb, rpmlogCallbackData data)
Set rpmlog callback function.
Definition: rpmlog.c:114
void * rpmlogCallbackData
Definition: rpmlog.h:158
#define RPMLOG_MASK(pri)
Definition: rpmlog.h:136
void rpmlogClose(void)
Close desriptor used to write to system logger.
Definition: rpmlog.c:69
rpmlogLvl rpmlogRecPriority(rpmlogRec rec)
Retrieve log priority from rpmlog record.
Definition: rpmlog.c:47
void rpmlogGetCallback(rpmlogCallback *cb, rpmlogCallbackData *data)
Get rpmlog callback function and data.
Definition: rpmlog.c:124
void _rpmlog(int code, const char *fmt,...)
Generate a log message using FMT string and option arguments.
Definition: rpmlog.c:285
FILE * rpmlogSetFile(FILE *fp)
Set rpmlog file handle.
Definition: rpmlog.c:165
const char * rpmlogMessage(void)
Return text of last rpmError() message.
Definition: rpmlog.c:35
enum rpmlogFac_e rpmlogFac
facility codes
void vrpmlog(unsigned code, const char *fmt, va_list ap)
Same as _rpmlog with stdarg argument list.
Definition: rpmlog.c:204
struct rpmlogRec_s * rpmlogRec
Definition: rpmlog.h:154
int rpmlogGetNrecs(void)
Return number of messages.
Definition: rpmlog.c:23
rpmlogLvl_e
RPM Log levels.
Definition: rpmlog.h:23
int(* rpmlogCallback)(rpmlogRec rec, rpmlogCallbackData data)
Definition: rpmlog.h:168
void rpmlogOpen(const char *ident, int option, int facility)
Open connection to system logger.
Definition: rpmlog.c:84
int rpmlogCode(void)
Return error code from last rpmError() message.
Definition: rpmlog.c:28
const char * rpmlogLevelPrefix(rpmlogLvl pri)
Return translated prefix string (if any) given log level.
Definition: rpmlog.c:188
FILE * f
Definition: macro.c:411
return NULL
Definition: poptALL.c:613
void rpmlogPrint(FILE *f)
Print all rpmError() messages.
Definition: rpmlog.c:53
int
Save source and expand field into target.
Definition: rpmds.c:2709
int rpmlogSetMask(int mask)
Set the log mask level.
Definition: rpmlog.c:98
const char * rpmlogRecMessage(rpmlogRec rec)
Retrieve log message string from rpmlog record.
Definition: rpmlog.c:42