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);