From: hollisb Date: Thu, 23 Jun 2005 23:13:57 +0000 (+0000) Subject: 2005-06-23 Hollis Blanchard X-Git-Tag: 1.98~2129 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e75d76e1579f3b8691bec61cc053ffa37240580f;p=thirdparty%2Fgrub.git 2005-06-23 Hollis Blanchard * kern/misc.c (grub_vsprintf): Add `longfmt'. If format string contains `l' modifier, get a long from va_arg(). --- diff --git a/ChangeLog b/ChangeLog index 1f5f80d74..f3bc9dddf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-06-23 Hollis Blanchard + + * kern/misc.c (grub_vsprintf): Add `longfmt'. If format string + contains `l' modifier, get a long from va_arg(). + 2005-06-23 Yoshinori K. Okuji * kern/mm.c (grub_free): If the next free block which is being diff --git a/kern/misc.c b/kern/misc.c index 524f8cdb4..08e03711b 100644 --- a/kern/misc.c +++ b/kern/misc.c @@ -562,13 +562,14 @@ grub_vsprintf (char *str, const char *fmt, va_list args) 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 *fmt, va_list args) } c = *fmt++; + if (c == 'l') + { + longfmt = 1; + c = *fmt++; + } switch (c) { @@ -610,7 +616,10 @@ grub_vsprintf (char *str, const char *fmt, va_list args) 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));