From: phcoder Date: Wed, 15 Apr 2009 12:33:46 +0000 (+0000) Subject: 2009-04-15 Vladimir Serbinenko X-Git-Tag: 1.98~1006 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5999d619177020cdd6b29530fbb7b3ba87d3bead;p=thirdparty%2Fgrub.git 2009-04-15 Vladimir Serbinenko use grub_lltoa instead of grub_itoa and grub_ltoa for all purposes * kern/misc.c (grub_itoa): Removed function (grub_ltoa): likewise (grub_vsprintf): use grub_lltoa --- diff --git a/ChangeLog b/ChangeLog index 0b21f7da9..13b67cc9f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-04-15 Vladimir Serbinenko + + use grub_lltoa instead of grub_itoa and grub_ltoa for all purposes + + * kern/misc.c (grub_itoa): Removed function + (grub_ltoa): likewise + (grub_vsprintf): use grub_lltoa + 2009-04-15 Vladimir Serbinenko Restore grub-emu diff --git a/kern/misc.c b/kern/misc.c index 5a1253594..4c71ca854 100644 --- a/kern/misc.c +++ b/kern/misc.c @@ -565,56 +565,6 @@ grub_reverse (char *str) } } -static char * -grub_itoa (char *str, int c, unsigned n) -{ - unsigned base = (c == 'x') ? 16 : 10; - char *p; - - if ((int) n < 0 && c == 'd') - { - n = (unsigned) (-((int) n)); - *str++ = '-'; - } - - p = str; - do - { - unsigned d = n % base; - *p++ = (d > 9) ? d + 'a' - 10 : d + '0'; - } - while (n /= base); - *p = 0; - - grub_reverse (str); - return p; -} - -static char * -grub_ltoa (char *str, int c, unsigned long n) -{ - unsigned long base = (c == 'x') ? 16 : 10; - char *p; - - if ((long) n < 0 && c == 'd') - { - n = (unsigned long) (-((long) n)); - *str++ = '-'; - } - - p = str; - do - { - unsigned long d = n % base; - *p++ = (d > 9) ? d + 'a' - 10 : d + '0'; - } - while (n /= base); - *p = 0; - - grub_reverse (str); - return p; -} - /* Divide N by D, return the quotient, and store the remainder in *R. */ grub_uint64_t grub_divmod64 (grub_uint64_t n, grub_uint32_t d, grub_uint32_t *r) @@ -746,6 +696,7 @@ grub_vsprintf (char *str, const char *fmt, va_list args) int n; int longfmt = 0; int longlongfmt = 0; + int unsig = 0; if (*fmt && *fmt =='-') { @@ -804,9 +755,11 @@ grub_vsprintf (char *str, const char *fmt, va_list args) write_str ("0x"); c = 'x'; longlongfmt |= (sizeof (void *) == sizeof (long long)); - /* fall through */ + /* Fall through. */ case 'x': case 'u': + unsig = 1; + /* Fall through. */ case 'd': if (longlongfmt) { @@ -815,15 +768,25 @@ grub_vsprintf (char *str, const char *fmt, va_list args) ll = va_arg (args, long long); grub_lltoa (tmp, c, ll); } + else if (longfmt && unsig) + { + unsigned long l = va_arg (args, unsigned long); + grub_lltoa (tmp, c, l); + } else if (longfmt) { long l = va_arg (args, long); - grub_ltoa (tmp, c, l); + grub_lltoa (tmp, c, l); + } + else if (unsig) + { + unsigned u = va_arg (args, unsigned); + grub_lltoa (tmp, c, u); } else { n = va_arg (args, int); - grub_itoa (tmp, c, n); + grub_lltoa (tmp, c, n); } if (! rightfill && grub_strlen (tmp) < format1) write_fill (zerofill, format1 - grub_strlen (tmp));