[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[patch] printf long format
From: |
Hollis Blanchard |
Subject: |
[patch] printf long format |
Date: |
Tue, 21 Jun 2005 18:14:10 -0500 |
User-agent: |
Mutt/1.5.6+20040907i |
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));
- [patch] printf long format, Hollis Blanchard, 2005/06/21
- [patch] printf long format,
Hollis Blanchard <=
- Re: [patch] printf long format, Marco Gerards, 2005/06/22
- Re: [patch] printf long format, Hollis Blanchard, 2005/06/22
- Re: [patch] printf long format, Yoshinori K. Okuji, 2005/06/22
- Re: [patch] printf long format, Marco Gerards, 2005/06/22
- Re: [patch] printf long format, Yoshinori K. Okuji, 2005/06/22
- Re: [patch] printf long format, Marco Gerards, 2005/06/22
- Re: [patch] printf long format, Yoshinori K. Okuji, 2005/06/22
- Re: [patch] printf long format, Marco Gerards, 2005/06/22
- Re: [patch] printf long format, Yoshinori K. Okuji, 2005/06/22