From: Hollis Blanchard <hollis@penguinppc.org>
To: grub-devel@gnu.org
Subject: [patch] printf long format
Date: Tue, 21 Jun 2005 18:14:10 -0500 [thread overview]
Message-ID: <20050621231410.GA26213@miracle> (raw)
Hmm, no idea what happened to the first mail.
Debugging a partition map bug, I was adding more grub_dprintf messages...
and re-discovered that our printf doesn't handle e.g. "%lx" format strings (yet
gcc requires these when printing longs).
This patch works for me, though I didn't check that it implements all "l"
formating according to POSIX or SUS or whatever. Has not been tested on 64-bit
platforms. Comments?
-Hollis
* kern/misc.c (grub_vsprintf): Add `longfmt'. If format string
contains `l' modifier, get a long from va_arg().
Index: kern/misc.c
===================================================================
RCS file: /cvsroot/grub/grub2/kern/misc.c,v
retrieving revision 1.19
diff -u -p -r1.19 misc.c
--- kern/misc.c 9 May 2005 01:47:37 -0000 1.19
+++ kern/misc.c 21 Jun 2005 04:02:35 -0000
@@ -562,13 +562,14 @@ grub_vsprintf (char *str, const char *fm
char zerofill = ' ';
int rightfill = 0;
int n;
-
+ int longfmt = 0;
+
if (*fmt && *fmt =='-')
{
rightfill = 1;
fmt++;
}
-
+
p = (char *) fmt;
/* Read formatting parameters. */
while (*p && grub_isdigit (*p))
@@ -600,6 +601,11 @@ grub_vsprintf (char *str, const char *fm
}
c = *fmt++;
+ if (c == 'l')
+ {
+ longfmt = 1;
+ c = *fmt++;
+ }
switch (c)
{
@@ -610,7 +616,10 @@ grub_vsprintf (char *str, const char *fm
case 'x':
case 'u':
case 'd':
- n = va_arg (args, int);
+ if (longfmt)
+ n = va_arg (args, long);
+ else
+ n = va_arg (args, int);
grub_itoa (tmp, c, n);
if (!rightfill && grub_strlen (tmp) < format1)
write_fill (zerofill, format1 - grub_strlen (tmp));
next reply other threads:[~2005-06-21 23:29 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-21 23:14 Hollis Blanchard [this message]
2005-06-22 11:05 ` [patch] printf long format Marco Gerards
2005-06-22 14:33 ` Hollis Blanchard
2005-06-22 15:30 ` Yoshinori K. Okuji
2005-06-22 16:24 ` Marco Gerards
2005-06-22 17:14 ` Yoshinori K. Okuji
2005-06-22 18:09 ` Marco Gerards
2005-06-22 19:07 ` Yoshinori K. Okuji
2005-06-22 20:14 ` Marco Gerards
2005-06-22 20:53 ` Yoshinori K. Okuji
-- strict thread matches above, loose matches on Subject: below --
2005-06-21 4:00 Hollis Blanchard
2005-06-21 16:27 ` Marco Gerards
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050621231410.GA26213@miracle \
--to=hollis@penguinppc.org \
--cc=grub-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.