printfcommon.h.patch [plain text]
--- printfcommon.h.orig 2009-11-12 13:29:57.000000000 -0800
+++ printfcommon.h 2009-11-12 23:50:26.000000000 -0800
@@ -79,14 +79,14 @@ io_init(struct io_state *iop, FILE *fp)
* remain valid until io_flush() is called.
*/
static inline int
-io_print(struct io_state *iop, const CHAR * __restrict ptr, int len)
+io_print(struct io_state *iop, const CHAR * __restrict ptr, int len, locale_t loc)
{
iop->iov[iop->uio.uio_iovcnt].iov_base = (char *)ptr;
iop->iov[iop->uio.uio_iovcnt].iov_len = len;
iop->uio.uio_resid += len;
if (++iop->uio.uio_iovcnt >= NIOV)
- return (__sprint(iop->fp, &iop->uio));
+ return (__sprint(iop->fp, loc, &iop->uio));
else
return (0);
}
@@ -107,13 +107,13 @@ static const CHAR zeroes[PADSIZE] =
* or the zeroes array.
*/
static inline int
-io_pad(struct io_state *iop, int howmany, const CHAR * __restrict with)
+io_pad(struct io_state *iop, int howmany, const CHAR * __restrict with, locale_t loc)
{
int n;
while (howmany > 0) {
n = (howmany >= PADSIZE) ? PADSIZE : howmany;
- if (io_print(iop, with, n))
+ if (io_print(iop, with, n, loc))
return (-1);
howmany -= n;
}
@@ -126,7 +126,7 @@ io_pad(struct io_state *iop, int howmany
*/
static inline int
io_printandpad(struct io_state *iop, const CHAR *p, const CHAR *ep,
- int len, const CHAR * __restrict with)
+ int len, const CHAR * __restrict with, locale_t loc)
{
int p_len;
@@ -134,19 +134,19 @@ io_printandpad(struct io_state *iop, con
if (p_len > len)
p_len = len;
if (p_len > 0) {
- if (io_print(iop, p, p_len))
+ if (io_print(iop, p, p_len, loc))
return (-1);
} else {
p_len = 0;
}
- return (io_pad(iop, len - p_len, with));
+ return (io_pad(iop, len - p_len, with, loc));
}
static inline int
-io_flush(struct io_state *iop)
+io_flush(struct io_state *iop, locale_t loc)
{
- return (__sprint(iop->fp, &iop->uio));
+ return (__sprint(iop->fp, loc, &iop->uio));
}
/*
@@ -205,7 +205,7 @@ __ultoa(u_long val, CHAR *endp, int base
break;
default: /* oops */
- abort();
+ LIBC_ABORT("__ultoa: invalid base=%d", base);
}
return (cp);
}
@@ -255,7 +255,7 @@ __ujtoa(uintmax_t val, CHAR *endp, int b
break;
default:
- abort();
+ LIBC_ABORT("__ujtoa: invalid base=%d", base);
}
return (cp);
}