]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* doc/kernel.c (cmain): Use padding to properly display 64-bit
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 14 Mar 2010 13:32:33 +0000 (14:32 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 14 Mar 2010 13:32:33 +0000 (14:32 +0100)
quantities.
(printf): Add padding support.
Reported by: Soeren D. Schulze.

ChangeLog
doc/kernel.c

index b8ce5673b9001fc6cef79e108bd37123b37dc71c..09068870f56f2b0500fa724ec5aec27b2cbd429b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2010-03-14  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * doc/kernel.c (cmain): Use padding to properly display 64-bit
+       quantities.
+       (printf): Add padding support.
+       Reported by: Soeren D. Schulze.
+
 2010-02-09  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * doc/multiboot.texi: Fix a typo.
index d8a5323a7fe2c8dcfa4e6fa9d6a5a8f2416d5e0d..e36f2d4c2560583700071050a2c93dc1f9b93256 100644 (file)
@@ -141,8 +141,8 @@ cmain (unsigned long magic, unsigned long addr)
           (unsigned long) mmap < mbi->mmap_addr + mbi->mmap_length;
           mmap = (multiboot_memory_map_t *) ((unsigned long) mmap
                                    + mmap->size + sizeof (mmap->size)))
-       printf (" size = 0x%x, base_addr = 0x%x%x,"
-               " length = 0x%x%x, type = 0x%x\n",
+       printf (" size = 0x%x, base_addr = 0x%x%08x,"
+               " length = 0x%x%08x, type = 0x%x\n",
                (unsigned) mmap->size,
                (unsigned) (mmap->addr >> 32),
                (unsigned) (mmap->addr & 0xffffffff),
@@ -337,9 +337,22 @@ printf (const char *format, ...)
        putchar (c);
       else
        {
-         char *p;
+         char *p, *p2;
+         int pad0 = 0, pad = 0;
          
          c = *format++;
+         if (c == '0')
+           {
+             pad0 = 1;
+             c = *format++;
+           }
+
+         if (c >= '0' && c <= '9')
+           {
+             pad = c - '0';
+             c = *format++;
+           }
+
          switch (c)
            {
            case 'd':
@@ -356,6 +369,9 @@ printf (const char *format, ...)
                p = "(null)";
 
            string:
+             for (p2 = p; *p2; p2++);
+             for (; p2 < p + pad; p2++)
+               putchar (pad0 ? '0' : ' ');
              while (*p)
                putchar (*p++);
              break;