]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2009-04-15 Vladimir Serbinenko <phcoder@gmail.com>
authorphcoder <phcoder@localhost>
Wed, 15 Apr 2009 12:33:46 +0000 (12:33 +0000)
committerphcoder <phcoder@localhost>
Wed, 15 Apr 2009 12:33:46 +0000 (12:33 +0000)
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

ChangeLog
kern/misc.c

index 0b21f7da936e6569926a7ba1a2f480369003bb82..13b67cc9f3ebbd59d876791b1450f0a70d1cef12 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-04-15  Vladimir Serbinenko         <phcoder@gmail.com>
+
+       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         <phcoder@gmail.com>
 
        Restore grub-emu
index 5a1253594c14ca15440877a04cda6514773e00c5..4c71ca854fd049ec15652937b9c918a8735cf2f2 100644 (file)
@@ -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));