Date: Tue, 28 May 2002 00:16:14 +0000 From: Dima Dorfman <dima@trit.org> To: Dag-Erling Smorgrav <des@ofug.org> Cc: audit@freebsd.org Subject: Re: %j for printf(9) Message-ID: <20020528001615.4BAC93E5E@turbine.trit.org> In-Reply-To: <xzpr8k08ifs.fsf@flood.ping.uio.no>; from des@ofug.org on "25 May 2002 15:29:11 %2B0200"
next in thread | previous in thread | raw e-mail | index | archive | help
Dag-Erling Smorgrav <des@ofug.org> wrote:
> Dima Dorfman <dima@trit.org> writes:
> > Attached is a patch that implements the %j length modifier in
> > printf(9).
>
> Here's an alternative (IMHO less disruptive) patch, which also fixes
> the default case.
I still like my restructure, but since other people don't seem to
share my opinion, I'm fine doing it another (your) way. That said, I
think your patch has some bugs that mine doesn't. For example, this:
printf("%ld\n", -4);
yields "4294967292" with your patch, but not with mine (mine, and
printf(3), yield "-4"). I think the attached patch (relative to
subr_prf.c *with* your patch applied) fixes it.
Thanks.
--- subr_prf_des.c Mon May 27 23:55:45 2002
+++ subr_prf.c Tue May 28 00:09:30 2002
@@ -658,19 +658,19 @@
if (jflag)
num = va_arg(ap, uintmax_t);
else if (qflag)
- num = va_arg(ap, u_quad_t);
+ num = (u_quad_t)va_arg(ap, u_quad_t);
else if (lflag)
- num = va_arg(ap, u_long);
+ num = (u_long)va_arg(ap, u_long);
else
- num = va_arg(ap, u_int);
+ num = (u_int)va_arg(ap, u_int);
goto nosign;
fetch_number:
if (jflag)
- num = va_arg(ap, uintmax_t);
+ num = va_arg(ap, intmax_t);
else if (qflag)
- num = va_arg(ap, u_quad_t);
+ num = (quad_t)va_arg(ap, quad_t);
else if (lflag)
- num = va_arg(ap, u_long);
+ num = (long)va_arg(ap, long);
else
num = sign ? (uintmax_t)va_arg(ap, int) :
va_arg(ap, u_int);
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020528001615.4BAC93E5E>
