8 #define _RPMLOG_INTERNAL 30 if (recs != NULL && nrecs > 0)
31 return recs[nrecs-1].code;
37 if (recs != NULL && nrecs > 0)
38 return recs[nrecs-1].message;
39 return _(
"(no error)");
45 return (rec->message);
63 for (i = 0; i <
nrecs; i++) {
65 if (rec->message && *rec->message)
66 fprintf(f,
" %s", rec->message);
78 for (i = 0; i <
nrecs; i++) {
80 rec->message =
_free(rec->message);
121 _rpmlogCallback = cb;
122 _rpmlogCallbackData = data;
141 FILE *msgout = (_stdlog ? _stdlog : stderr);
146 msgout = (_stdlog ? _stdlog : stdout);
161 (void) fputs(rec->message, msgout);
162 (void) fflush(msgout);
192 return rpmlogMsgPrefix[pri&0x7];
195 #if !defined(HAVE_VSNPRINTF) 197 const char * fmt, va_list ap)
199 return vsprintf(buf, fmt, ap);
206 void vrpmlog (
unsigned code,
const char *fmt, va_list ap)
216 size_t msgnb = BUFSIZ;
220 struct rpmlogRec_s rec;
222 if ((mask & rpmlogMask) == 0)
225 msgbuf = (
char *)
xmalloc(msgnb);
233 if (nb > -1 && (
size_t)nb < msgnb)
239 msgbuf = (
char *)
xrealloc(msgbuf, msgnb);
244 msgbuf[msgnb - 1] =
'\0';
257 recs[
nrecs].code = rec.code;
258 recs[
nrecs].pri = rec.pri;
261 recs[
nrecs].code = 0;
263 recs[
nrecs].message = NULL;
266 if (_rpmlogCallback) {
279 msgbuf =
_free(msgbuf);
enum rpmlogLvl_e rpmlogLvl
RPM Log levels.
rpmlogCallback rpmlogSetCallback(rpmlogCallback cb, rpmlogCallbackData data)
Set rpmlog callback function.
char * xstrdup(const char *str)
int(* rpmlogCallback)(rpmlogRec rec, rpmlogCallbackData data)
void * rpmlogCallbackData
void rpmlogClose(void)
Close desriptor used to write to system logger.
static rpmlogCallback _rpmlogCallback
rpmlogLvl rpmlogRecPriority(rpmlogRec rec)
Retrieve log priority from rpmlog record.
void rpmlogGetCallback(rpmlogCallback *cb, rpmlogCallbackData *data)
Get rpmlog callback function and data.
void _rpmlog(int code, const char *fmt,...)
Generate a log message using FMT string and option arguments.
FILE * rpmlogSetFile(FILE *fp)
Set rpmlog file handle.
const char * rpmlogMessage(void)
Return text of last rpmError() message.
Yet Another syslog(3) API clone.
void vrpmlog(unsigned code, const char *fmt, va_list ap)
Same as _rpmlog with stdarg argument list.
struct rpmlogRec_s * rpmlogRec
static unsigned rpmlogMask
static int rpmlogDefault(rpmlogRec rec)
int rpmlogGetNrecs(void)
Return number of messages.
static rpmlogCallbackData _rpmlogCallbackData
#define RPMLOG_DEFAULT
Option flags for callback return value.
void rpmlogOpen(const char *ident, int option, int facility)
Open connection to system logger.
static int vsnprintf(char *buf, int nb, const char *fmt, va_list ap)
int rpmlogCode(void)
Return error code from last rpmError() message.
const char * rpmlogLevelPrefix(rpmlogLvl pri)
Return translated prefix string (if any) given log level.
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.
static const char * rpmlogMsgPrefix[]
void rpmlogPrint(FILE *f)
Print all rpmError() messages.
int rpmlogSetMask(int mask)
Set the log mask level.
const char * rpmlogRecMessage(rpmlogRec rec)
Retrieve log message string from rpmlog record.