- int pri = RPMLOG_PRI(code);
- int mask = RPMLOG_MASK(pri);
- /*@unused@*/ int fac = RPMLOG_FAC(code);
- char *msgbuf, *msg;
- int msgnb = BUFSIZ, nb;
- FILE * msgout = stderr;
-
- if ((mask & rpmlogMask) == 0)
- return;
-
- msgbuf = xmalloc(msgnb);
- *msgbuf = '\0';
-
- /* Allocate a sufficently large buffer for output. */
- while (1) {
- va_list apc;
- /*@-sysunrecog -usedef@*/ va_copy(apc, ap); /*@=sysunrecog =usedef@*/
- nb = vsnprintf(msgbuf, msgnb, fmt, apc);
- if (nb > -1 && nb < msgnb)
- break;
- if (nb > -1) /* glibc 2.1 (and later) */
- msgnb = nb+1;
- else /* glibc 2.0 */
- msgnb *= 2;
- msgbuf = xrealloc(msgbuf, msgnb);
- }
- msgbuf[msgnb - 1] = '\0';
- msg = msgbuf;