- struct rpmlogRec_s rec;
-
- if ((mask & rpmlogMask) == 0)
- return;
-
- msgbuf = xmalloc(msgnb);
- *msgbuf = '\0';
-
- /* Allocate a sufficently large buffer for output. */
- while (1) {
- va_list apc;
- va_copy(apc, ap);
- 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);
- va_end(apc);
- }
- msgbuf[msgnb - 1] = '\0';
- msg = msgbuf;
-
- rec.code = code;
- rec.message = msg;
- rec.pri = pri;