All of lore.kernel.org
 help / color / mirror / Atom feed
* precision formatting in grub_printf
@ 2008-08-17 17:58 Deepak Vankadaru
  2008-08-17 21:14 ` Robert Millan
  2008-08-18  5:22 ` Deepak Vankadaru
  0 siblings, 2 replies; 10+ messages in thread
From: Deepak Vankadaru @ 2008-08-17 17:58 UTC (permalink / raw)
  To: grub-devel

[-- Attachment #1: Type: text/plain, Size: 5990 bytes --]

Hi

I have implemented precision formatting support in grub_printf. Following is
the diff (of kern/misc.c)

Thanks
Deepak

###############start of diff
*** kern/misc.c    2008-08-18 04:46:36.000000000 +0530
--- /home/deepakv/orig/grub2-1.96+20080724/kern/misc.c    2008-06-16
06:12:48.000000000 +0530
***************
*** 565,572 ****
        *p++ = (d > 9) ? d + 'a' - 10 : d + '0';
      }
    while (n /= base);
-   if ( p == str)
-     *p++ = '0';
    *p = 0;

    grub_reverse (str);
--- 565,570 ----
***************
*** 682,693 ****
      write_char (*s++);
      }

-   void write_str_limit (const char *s, int count)
-     {
-       while (*s && count--)
-     write_char (*s++);
-     }
-
    void write_fill (const char ch, int n)
      {
        int i;
--- 680,685 ----
***************
*** 704,711 ****
        char tmp[32];
        char *p;
        unsigned int format1 = 0;
!       unsigned int format2 = 1;
!       grub_bool_t format2_default = TRUE;
        char zerofill = ' ';
        int rightfill = 0;
        int n;
--- 696,702 ----
        char tmp[32];
        char *p;
        unsigned int format1 = 0;
!       unsigned int format2 = 3;
        char zerofill = ' ';
        int rightfill = 0;
        int n;
***************
*** 723,737 ****
        while (*p && grub_isdigit (*p))
          p++;

!       if (p > fmt || *p == '.')
          {
            char s[p - fmt + 1];
            grub_strncpy (s, fmt, p - fmt);
            s[p - fmt] = 0;
            if (s[0] == '0')
          zerofill = '0';
!           if (p - fmt)
!             format1 = grub_strtoul (s, 0, 10);
            fmt = p;
            if (*p && *p == '.')
          {
--- 714,727 ----
        while (*p && grub_isdigit (*p))
          p++;

!       if (p > fmt)
          {
            char s[p - fmt + 1];
            grub_strncpy (s, fmt, p - fmt);
            s[p - fmt] = 0;
            if (s[0] == '0')
          zerofill = '0';
!           format1 = grub_strtoul (s, 0, 10);
            fmt = p;
            if (*p && *p == '.')
          {
***************
*** 747,755 ****
                format2 = grub_strtoul (fstr, 0, 10);
                fmt = p;
              }
-           else
-             format2 = 0;
-           format2_default = FALSE;
          }
          }

--- 737,742 ----
***************
*** 790,806 ****
              n = va_arg (args, int);
            grub_itoa (tmp, c, n);
          }
!           if ( format2 == 0 && grub_strcmp (tmp, "0") == 0)
!         break;
!           if ( grub_strlen (tmp) > format2)
!             format2 = grub_strlen (tmp);
!           if (! rightfill && format2 < format1)
!         write_fill (zerofill, format1 - format2);
!           if ( grub_strlen (tmp) < format2)
!         write_fill ('0', format2 - grub_strlen (tmp));
            write_str (tmp);
!           if (rightfill && format2 < format1)
!         write_fill (zerofill, format1 - format2);
            break;

          case 'c':
--- 777,787 ----
              n = va_arg (args, int);
            grub_itoa (tmp, c, n);
          }
!           if (! rightfill && grub_strlen (tmp) < format1)
!         write_fill (zerofill, format1 - grub_strlen (tmp));
            write_str (tmp);
!           if (rightfill && grub_strlen (tmp) < format1)
!         write_fill (zerofill, format1 - grub_strlen (tmp));
            break;

          case 'c':
***************
*** 862,895 ****
            p = va_arg (args, char *);
            if (p)
          {
!           if ( format2_default )
!             {
!               if (!rightfill && grub_strlen (p) < format1)
!                 write_fill (' ', format1 - grub_strlen (p));

!               write_str (p);

!               if (rightfill && grub_strlen (p) < format1)
!                 write_fill (' ', format1 - grub_strlen (p));
!             }
!             else
!             {
!               if (!rightfill && format2 < format1)
!                 write_fill (' ', format1 - format2);
!
!               if ( grub_strlen (p) < format2)
!                 {
!                   if ( format2 <= format1)
!                     write_fill (' ', format2 - grub_strlen (p));
!                   else
!                     write_fill (' ', format1 - grub_strlen (p));
!                 }
!
!               write_str_limit (p, format2);
!
!               if (rightfill && format2 < format1)
!                 write_fill (' ', format1 - format2);
!             }
          }
            else
          write_str ("(null)");
--- 843,855 ----
            p = va_arg (args, char *);
            if (p)
          {
!           if (!rightfill && grub_strlen (p) < format1)
!             write_fill (zerofill, format1 - grub_strlen (p));

!           write_str (p);

!           if (rightfill && grub_strlen (p) < format1)
!             write_fill (zerofill, format1 - grub_strlen (p));
          }
            else
          write_str ("(null)");

###############end of diff

######start of test case
int main()
{
    typedef int (*printf_ptr)(char const *str, ...);
    printf_ptr p;
    if(getenv("GRUB_PRINTF"))
    {
        printf("using grub_printf\n");
        p = grub_printf;
    }
    else
    {
        printf("using printf\n");
        p = printf;
    }
    p("##%4.2d##\n",1);
    p("##%4.2d##\n",12);
    p("##%4.2d##\n",123);
    p("##%4.2d##\n",1234);
    p("##%4.2d##\n",12345);
    p("##%3.3d##\n",12);
    p("##%3.3d##\n",123);
    p("##%3.3d##\n",1234);
    p("##%2.4d##\n",12345);
    p("##%2.4d##\n",1234);
    p("##%2.4d##\n",123);
    p("##%2.4d##\n",12);
    p("##%2.4d##\n",1);
    p("##%.0d##\n",0);
    p("##%.0d##\n",1);
    p("##%4.2s##\n","1");
    p("##%4.2s##\n","12");
    p("##%4.2s##\n","123");
    p("##%4.2s##\n","1234");
    p("##%4.2s##\n","12345");
    p("##%3.3s##\n","12");
    p("##%3.3s##\n","123");
    p("##%3.3s##\n","1234");
    p("##%2.4s##\n","12345");
    p("##%2.4s##\n","1234");
    p("##%2.4s##\n","123");
    p("##%2.4s##\n","12");
    p("##%2.4s##\n","1");
    return 0;
}

[-- Attachment #2: Type: text/html, Size: 13873 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2008-08-17 17:58 precision formatting in grub_printf Deepak Vankadaru
@ 2008-08-17 21:14 ` Robert Millan
  2008-08-18  5:22 ` Deepak Vankadaru
  1 sibling, 0 replies; 10+ messages in thread
From: Robert Millan @ 2008-08-17 21:14 UTC (permalink / raw)
  To: The development of GRUB 2

On Sun, Aug 17, 2008 at 11:28:38PM +0530, Deepak Vankadaru wrote:
> Hi
> 
> I have implemented precision formatting support in grub_printf. Following is
> the diff (of kern/misc.c)

Thanks!

Could you please send this in unified diff format?  ('diff -u', or
just 'svn diff')

Also, are there any places in the code where this could be used, or where
you intend to use it?  We are careful when adding new code in the kernel,
because of size constraints.

-- 
Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2008-08-17 17:58 precision formatting in grub_printf Deepak Vankadaru
  2008-08-17 21:14 ` Robert Millan
@ 2008-08-18  5:22 ` Deepak Vankadaru
  2008-08-22 12:26   ` Deepak Vankadaru
  1 sibling, 1 reply; 10+ messages in thread
From: Deepak Vankadaru @ 2008-08-18  5:22 UTC (permalink / raw)
  To: grub-devel


[-- Attachment #1.1: Type: text/plain, Size: 6630 bytes --]

Attached the same in unified diff format.

This is listed in known bugs (http://grub.enbug.org/KnownBugs)

On Sun, Aug 17, 2008 at 11:28 PM, Deepak Vankadaru <
deepak.vankadaru@gmail.com> wrote:

> Hi
>
> I have implemented precision formatting support in grub_printf. Following
> is the diff (of kern/misc.c)
>
> Thanks
> Deepak
>
> ###############start of diff
> *** kern/misc.c    2008-08-18 04:46:36.000000000 +0530
> --- /home/deepakv/orig/grub2-1.96+20080724/kern/misc.c    2008-06-16
> 06:12:48.000000000 +0530
> ***************
> *** 565,572 ****
>         *p++ = (d > 9) ? d + 'a' - 10 : d + '0';
>       }
>     while (n /= base);
> -   if ( p == str)
> -     *p++ = '0';
>     *p = 0;
>
>     grub_reverse (str);
> --- 565,570 ----
> ***************
> *** 682,693 ****
>       write_char (*s++);
>       }
>
> -   void write_str_limit (const char *s, int count)
> -     {
> -       while (*s && count--)
> -     write_char (*s++);
> -     }
> -
>     void write_fill (const char ch, int n)
>       {
>         int i;
> --- 680,685 ----
> ***************
> *** 704,711 ****
>         char tmp[32];
>         char *p;
>         unsigned int format1 = 0;
> !       unsigned int format2 = 1;
> !       grub_bool_t format2_default = TRUE;
>         char zerofill = ' ';
>         int rightfill = 0;
>         int n;
> --- 696,702 ----
>         char tmp[32];
>         char *p;
>         unsigned int format1 = 0;
> !       unsigned int format2 = 3;
>         char zerofill = ' ';
>         int rightfill = 0;
>         int n;
> ***************
> *** 723,737 ****
>         while (*p && grub_isdigit (*p))
>           p++;
>
> !       if (p > fmt || *p == '.')
>           {
>             char s[p - fmt + 1];
>             grub_strncpy (s, fmt, p - fmt);
>             s[p - fmt] = 0;
>             if (s[0] == '0')
>           zerofill = '0';
> !           if (p - fmt)
> !             format1 = grub_strtoul (s, 0, 10);
>             fmt = p;
>             if (*p && *p == '.')
>           {
> --- 714,727 ----
>         while (*p && grub_isdigit (*p))
>           p++;
>
> !       if (p > fmt)
>           {
>             char s[p - fmt + 1];
>             grub_strncpy (s, fmt, p - fmt);
>             s[p - fmt] = 0;
>             if (s[0] == '0')
>           zerofill = '0';
> !           format1 = grub_strtoul (s, 0, 10);
>             fmt = p;
>             if (*p && *p == '.')
>           {
> ***************
> *** 747,755 ****
>                 format2 = grub_strtoul (fstr, 0, 10);
>                 fmt = p;
>               }
> -           else
> -             format2 = 0;
> -           format2_default = FALSE;
>           }
>           }
>
> --- 737,742 ----
> ***************
> *** 790,806 ****
>               n = va_arg (args, int);
>             grub_itoa (tmp, c, n);
>           }
> !           if ( format2 == 0 && grub_strcmp (tmp, "0") == 0)
> !         break;
> !           if ( grub_strlen (tmp) > format2)
> !             format2 = grub_strlen (tmp);
> !           if (! rightfill && format2 < format1)
> !         write_fill (zerofill, format1 - format2);
> !           if ( grub_strlen (tmp) < format2)
> !         write_fill ('0', format2 - grub_strlen (tmp));
>             write_str (tmp);
> !           if (rightfill && format2 < format1)
> !         write_fill (zerofill, format1 - format2);
>             break;
>
>           case 'c':
> --- 777,787 ----
>               n = va_arg (args, int);
>             grub_itoa (tmp, c, n);
>           }
> !           if (! rightfill && grub_strlen (tmp) < format1)
> !         write_fill (zerofill, format1 - grub_strlen (tmp));
>             write_str (tmp);
> !           if (rightfill && grub_strlen (tmp) < format1)
> !         write_fill (zerofill, format1 - grub_strlen (tmp));
>             break;
>
>           case 'c':
> ***************
> *** 862,895 ****
>             p = va_arg (args, char *);
>             if (p)
>           {
> !           if ( format2_default )
> !             {
> !               if (!rightfill && grub_strlen (p) < format1)
> !                 write_fill (' ', format1 - grub_strlen (p));
>
> !               write_str (p);
>
> !               if (rightfill && grub_strlen (p) < format1)
> !                 write_fill (' ', format1 - grub_strlen (p));
> !             }
> !             else
> !             {
> !               if (!rightfill && format2 < format1)
> !                 write_fill (' ', format1 - format2);
> !
> !               if ( grub_strlen (p) < format2)
> !                 {
> !                   if ( format2 <= format1)
> !                     write_fill (' ', format2 - grub_strlen (p));
> !                   else
> !                     write_fill (' ', format1 - grub_strlen (p));
> !                 }
> !
> !               write_str_limit (p, format2);
> !
> !               if (rightfill && format2 < format1)
> !                 write_fill (' ', format1 - format2);
> !             }
>           }
>             else
>           write_str ("(null)");
> --- 843,855 ----
>             p = va_arg (args, char *);
>             if (p)
>           {
> !           if (!rightfill && grub_strlen (p) < format1)
> !             write_fill (zerofill, format1 - grub_strlen (p));
>
> !           write_str (p);
>
> !           if (rightfill && grub_strlen (p) < format1)
> !             write_fill (zerofill, format1 - grub_strlen (p));
>           }
>             else
>           write_str ("(null)");
>
> ###############end of diff
>
> ######start of test case
> int main()
> {
>     typedef int (*printf_ptr)(char const *str, ...);
>     printf_ptr p;
>     if(getenv("GRUB_PRINTF"))
>     {
>         printf("using grub_printf\n");
>         p = grub_printf;
>     }
>     else
>     {
>         printf("using printf\n");
>         p = printf;
>     }
>     p("##%4.2d##\n",1);
>     p("##%4.2d##\n",12);
>     p("##%4.2d##\n",123);
>     p("##%4.2d##\n",1234);
>     p("##%4.2d##\n",12345);
>     p("##%3.3d##\n",12);
>     p("##%3.3d##\n",123);
>     p("##%3.3d##\n",1234);
>     p("##%2.4d##\n",12345);
>     p("##%2.4d##\n",1234);
>     p("##%2.4d##\n",123);
>     p("##%2.4d##\n",12);
>     p("##%2.4d##\n",1);
>     p("##%.0d##\n",0);
>     p("##%.0d##\n",1);
>     p("##%4.2s##\n","1");
>     p("##%4.2s##\n","12");
>     p("##%4.2s##\n","123");
>     p("##%4.2s##\n","1234");
>     p("##%4.2s##\n","12345");
>     p("##%3.3s##\n","12");
>     p("##%3.3s##\n","123");
>     p("##%3.3s##\n","1234");
>     p("##%2.4s##\n","12345");
>     p("##%2.4s##\n","1234");
>     p("##%2.4s##\n","123");
>     p("##%2.4s##\n","12");
>     p("##%2.4s##\n","1");
>     return 0;
> }
>

[-- Attachment #1.2: Type: text/html, Size: 14436 bytes --]

[-- Attachment #2: misc.c.diff --]
[-- Type: application/octet-stream, Size: 3333 bytes --]

--- /home/deepakv/orig/grub2-1.96+20080724/kern/misc.c	2008-06-16 06:12:48.000000000 +0530
+++ kern/misc.c	2008-08-18 04:46:36.000000000 +0530
@@ -565,6 +565,8 @@
       *p++ = (d > 9) ? d + 'a' - 10 : d + '0';
     }
   while (n /= base);
+  if ( p == str)
+    *p++ = '0';
   *p = 0;
 
   grub_reverse (str);
@@ -680,6 +682,12 @@
 	write_char (*s++);
     }
 
+  void write_str_limit (const char *s, int count)
+    {
+      while (*s && count--)
+	write_char (*s++);
+    }
+
   void write_fill (const char ch, int n)
     {
       int i;
@@ -696,7 +704,8 @@
 	  char tmp[32];
 	  char *p;
 	  unsigned int format1 = 0;
-	  unsigned int format2 = 3;
+	  unsigned int format2 = 1;
+	  grub_bool_t format2_default = TRUE;
 	  char zerofill = ' ';
 	  int rightfill = 0;
 	  int n;
@@ -714,14 +723,15 @@
 	  while (*p && grub_isdigit (*p))
 	    p++;
 
-	  if (p > fmt)
+	  if (p > fmt || *p == '.')
 	    {
 	      char s[p - fmt + 1];
 	      grub_strncpy (s, fmt, p - fmt);
 	      s[p - fmt] = 0;
 	      if (s[0] == '0')
 		zerofill = '0';
-	      format1 = grub_strtoul (s, 0, 10);
+	      if (p - fmt)
+	        format1 = grub_strtoul (s, 0, 10);
 	      fmt = p;
 	      if (*p && *p == '.')
 		{
@@ -737,6 +747,9 @@
 		      format2 = grub_strtoul (fstr, 0, 10);
 		      fmt = p;
 		    }
+		  else
+		    format2 = 0;
+		  format2_default = FALSE;
 		}
 	    }
 
@@ -777,11 +790,17 @@
 		    n = va_arg (args, int);
 		  grub_itoa (tmp, c, n);
 		}
-	      if (! rightfill && grub_strlen (tmp) < format1)
-		write_fill (zerofill, format1 - grub_strlen (tmp));
+	      if ( format2 == 0 && grub_strcmp (tmp, "0") == 0)
+		break;
+	      if ( grub_strlen (tmp) > format2)
+	        format2 = grub_strlen (tmp);
+	      if (! rightfill && format2 < format1)
+		write_fill (zerofill, format1 - format2);
+	      if ( grub_strlen (tmp) < format2)
+		write_fill ('0', format2 - grub_strlen (tmp));
 	      write_str (tmp);
-	      if (rightfill && grub_strlen (tmp) < format1)
-		write_fill (zerofill, format1 - grub_strlen (tmp));
+	      if (rightfill && format2 < format1)
+		write_fill (zerofill, format1 - format2);
 	      break;
 	      
 	    case 'c':
@@ -843,13 +862,34 @@
 	      p = va_arg (args, char *);
 	      if (p)
 		{
-		  if (!rightfill && grub_strlen (p) < format1)
-		    write_fill (zerofill, format1 - grub_strlen (p));
+		  if ( format2_default )
+		    {
+		      if (!rightfill && grub_strlen (p) < format1)
+		        write_fill (' ', format1 - grub_strlen (p));
 		  
-		  write_str (p);
+		      write_str (p);
 		  
-		  if (rightfill && grub_strlen (p) < format1)
-		    write_fill (zerofill, format1 - grub_strlen (p));
+		      if (rightfill && grub_strlen (p) < format1)
+		        write_fill (' ', format1 - grub_strlen (p));
+		    }
+		    else
+		    {
+		      if (!rightfill && format2 < format1)
+		        write_fill (' ', format1 - format2);
+		  
+		      if ( grub_strlen (p) < format2)
+		        {
+		          if ( format2 <= format1)
+		            write_fill (' ', format2 - grub_strlen (p));
+		          else
+		            write_fill (' ', format1 - grub_strlen (p));
+		        }
+
+		      write_str_limit (p, format2);
+		  
+		      if (rightfill && format2 < format1)
+		        write_fill (' ', format1 - format2);
+		    }
 		}
 	      else
 		write_str ("(null)");

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2008-08-18  5:22 ` Deepak Vankadaru
@ 2008-08-22 12:26   ` Deepak Vankadaru
  2009-03-12  8:49     ` Deepak Vankadaru
  0 siblings, 1 reply; 10+ messages in thread
From: Deepak Vankadaru @ 2008-08-22 12:26 UTC (permalink / raw)
  To: grub-devel

[-- Attachment #1: Type: text/plain, Size: 7114 bytes --]

Hi,

Does this patch look okay? Or do I need to give any more information?

By the way, this is my first patch submission to GNU :)

Thanks
Deepak

On Mon, Aug 18, 2008 at 10:52 AM, Deepak Vankadaru <
deepak.vankadaru@gmail.com> wrote:

> Attached the same in unified diff format.
>
> This is listed in known bugs (http://grub.enbug.org/KnownBugs)
>
>
> On Sun, Aug 17, 2008 at 11:28 PM, Deepak Vankadaru <
> deepak.vankadaru@gmail.com> wrote:
>
>> Hi
>>
>> I have implemented precision formatting support in grub_printf. Following
>> is the diff (of kern/misc.c)
>>
>> Thanks
>> Deepak
>>
>> ###############start of diff
>> *** kern/misc.c    2008-08-18 04:46:36.000000000 +0530
>> --- /home/deepakv/orig/grub2-1.96+20080724/kern/misc.c    2008-06-16
>> 06:12:48.000000000 +0530
>> ***************
>> *** 565,572 ****
>>         *p++ = (d > 9) ? d + 'a' - 10 : d + '0';
>>       }
>>     while (n /= base);
>> -   if ( p == str)
>> -     *p++ = '0';
>>     *p = 0;
>>
>>     grub_reverse (str);
>> --- 565,570 ----
>> ***************
>> *** 682,693 ****
>>       write_char (*s++);
>>       }
>>
>> -   void write_str_limit (const char *s, int count)
>> -     {
>> -       while (*s && count--)
>> -     write_char (*s++);
>> -     }
>> -
>>     void write_fill (const char ch, int n)
>>       {
>>         int i;
>> --- 680,685 ----
>> ***************
>> *** 704,711 ****
>>         char tmp[32];
>>         char *p;
>>         unsigned int format1 = 0;
>> !       unsigned int format2 = 1;
>> !       grub_bool_t format2_default = TRUE;
>>         char zerofill = ' ';
>>         int rightfill = 0;
>>         int n;
>> --- 696,702 ----
>>         char tmp[32];
>>         char *p;
>>         unsigned int format1 = 0;
>> !       unsigned int format2 = 3;
>>         char zerofill = ' ';
>>         int rightfill = 0;
>>         int n;
>> ***************
>> *** 723,737 ****
>>         while (*p && grub_isdigit (*p))
>>           p++;
>>
>> !       if (p > fmt || *p == '.')
>>           {
>>             char s[p - fmt + 1];
>>             grub_strncpy (s, fmt, p - fmt);
>>             s[p - fmt] = 0;
>>             if (s[0] == '0')
>>           zerofill = '0';
>> !           if (p - fmt)
>> !             format1 = grub_strtoul (s, 0, 10);
>>             fmt = p;
>>             if (*p && *p == '.')
>>           {
>> --- 714,727 ----
>>         while (*p && grub_isdigit (*p))
>>           p++;
>>
>> !       if (p > fmt)
>>           {
>>             char s[p - fmt + 1];
>>             grub_strncpy (s, fmt, p - fmt);
>>             s[p - fmt] = 0;
>>             if (s[0] == '0')
>>           zerofill = '0';
>> !           format1 = grub_strtoul (s, 0, 10);
>>             fmt = p;
>>             if (*p && *p == '.')
>>           {
>> ***************
>> *** 747,755 ****
>>                 format2 = grub_strtoul (fstr, 0, 10);
>>                 fmt = p;
>>               }
>> -           else
>> -             format2 = 0;
>> -           format2_default = FALSE;
>>           }
>>           }
>>
>> --- 737,742 ----
>> ***************
>> *** 790,806 ****
>>               n = va_arg (args, int);
>>             grub_itoa (tmp, c, n);
>>           }
>> !           if ( format2 == 0 && grub_strcmp (tmp, "0") == 0)
>> !         break;
>> !           if ( grub_strlen (tmp) > format2)
>> !             format2 = grub_strlen (tmp);
>> !           if (! rightfill && format2 < format1)
>> !         write_fill (zerofill, format1 - format2);
>> !           if ( grub_strlen (tmp) < format2)
>> !         write_fill ('0', format2 - grub_strlen (tmp));
>>             write_str (tmp);
>> !           if (rightfill && format2 < format1)
>> !         write_fill (zerofill, format1 - format2);
>>             break;
>>
>>           case 'c':
>> --- 777,787 ----
>>               n = va_arg (args, int);
>>             grub_itoa (tmp, c, n);
>>           }
>> !           if (! rightfill && grub_strlen (tmp) < format1)
>> !         write_fill (zerofill, format1 - grub_strlen (tmp));
>>             write_str (tmp);
>> !           if (rightfill && grub_strlen (tmp) < format1)
>> !         write_fill (zerofill, format1 - grub_strlen (tmp));
>>             break;
>>
>>           case 'c':
>> ***************
>> *** 862,895 ****
>>             p = va_arg (args, char *);
>>             if (p)
>>           {
>> !           if ( format2_default )
>> !             {
>> !               if (!rightfill && grub_strlen (p) < format1)
>> !                 write_fill (' ', format1 - grub_strlen (p));
>>
>> !               write_str (p);
>>
>> !               if (rightfill && grub_strlen (p) < format1)
>> !                 write_fill (' ', format1 - grub_strlen (p));
>> !             }
>> !             else
>> !             {
>> !               if (!rightfill && format2 < format1)
>> !                 write_fill (' ', format1 - format2);
>> !
>> !               if ( grub_strlen (p) < format2)
>> !                 {
>> !                   if ( format2 <= format1)
>> !                     write_fill (' ', format2 - grub_strlen (p));
>> !                   else
>> !                     write_fill (' ', format1 - grub_strlen (p));
>> !                 }
>> !
>> !               write_str_limit (p, format2);
>> !
>> !               if (rightfill && format2 < format1)
>> !                 write_fill (' ', format1 - format2);
>> !             }
>>           }
>>             else
>>           write_str ("(null)");
>> --- 843,855 ----
>>             p = va_arg (args, char *);
>>             if (p)
>>           {
>> !           if (!rightfill && grub_strlen (p) < format1)
>> !             write_fill (zerofill, format1 - grub_strlen (p));
>>
>> !           write_str (p);
>>
>> !           if (rightfill && grub_strlen (p) < format1)
>> !             write_fill (zerofill, format1 - grub_strlen (p));
>>           }
>>             else
>>           write_str ("(null)");
>>
>> ###############end of diff
>>
>> ######start of test case
>> int main()
>> {
>>     typedef int (*printf_ptr)(char const *str, ...);
>>     printf_ptr p;
>>     if(getenv("GRUB_PRINTF"))
>>     {
>>         printf("using grub_printf\n");
>>         p = grub_printf;
>>     }
>>     else
>>     {
>>         printf("using printf\n");
>>         p = printf;
>>     }
>>     p("##%4.2d##\n",1);
>>     p("##%4.2d##\n",12);
>>     p("##%4.2d##\n",123);
>>     p("##%4.2d##\n",1234);
>>     p("##%4.2d##\n",12345);
>>     p("##%3.3d##\n",12);
>>     p("##%3.3d##\n",123);
>>     p("##%3.3d##\n",1234);
>>     p("##%2.4d##\n",12345);
>>     p("##%2.4d##\n",1234);
>>     p("##%2.4d##\n",123);
>>     p("##%2.4d##\n",12);
>>     p("##%2.4d##\n",1);
>>     p("##%.0d##\n",0);
>>     p("##%.0d##\n",1);
>>     p("##%4.2s##\n","1");
>>     p("##%4.2s##\n","12");
>>     p("##%4.2s##\n","123");
>>     p("##%4.2s##\n","1234");
>>     p("##%4.2s##\n","12345");
>>     p("##%3.3s##\n","12");
>>     p("##%3.3s##\n","123");
>>     p("##%3.3s##\n","1234");
>>     p("##%2.4s##\n","12345");
>>     p("##%2.4s##\n","1234");
>>     p("##%2.4s##\n","123");
>>     p("##%2.4s##\n","12");
>>     p("##%2.4s##\n","1");
>>     return 0;
>> }
>>
>
>

[-- Attachment #2: Type: text/html, Size: 15091 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2008-08-22 12:26   ` Deepak Vankadaru
@ 2009-03-12  8:49     ` Deepak Vankadaru
  2009-03-13 19:20       ` Robert Millan
  0 siblings, 1 reply; 10+ messages in thread
From: Deepak Vankadaru @ 2009-03-12  8:49 UTC (permalink / raw)
  To: grub-devel

[-- Attachment #1: Type: text/plain, Size: 7555 bytes --]

Hi

I have completed the copyright assignment procedure. Just a reminder.

Thanks
Deepak

On Fri, Aug 22, 2008 at 5:56 PM, Deepak Vankadaru <
deepak.vankadaru@gmail.com> wrote:

> Hi,
>
> Does this patch look okay? Or do I need to give any more information?
>
> By the way, this is my first patch submission to GNU :)
>
> Thanks
> Deepak
>
>
> On Mon, Aug 18, 2008 at 10:52 AM, Deepak Vankadaru <
> deepak.vankadaru@gmail.com> wrote:
>
>> Attached the same in unified diff format.
>>
>> This is listed in known bugs (http://grub.enbug.org/KnownBugs)
>>
>>
>> On Sun, Aug 17, 2008 at 11:28 PM, Deepak Vankadaru <
>> deepak.vankadaru@gmail.com> wrote:
>>
>>> Hi
>>>
>>> I have implemented precision formatting support in grub_printf. Following
>>> is the diff (of kern/misc.c)
>>>
>>> Thanks
>>> Deepak
>>>
>>> ###############start of diff
>>> *** kern/misc.c    2008-08-18 04:46:36.000000000 +0530
>>> --- /home/deepakv/orig/grub2-1.96+20080724/kern/misc.c    2008-06-16
>>> 06:12:48.000000000 +0530
>>> ***************
>>> *** 565,572 ****
>>>         *p++ = (d > 9) ? d + 'a' - 10 : d + '0';
>>>       }
>>>     while (n /= base);
>>> -   if ( p == str)
>>> -     *p++ = '0';
>>>     *p = 0;
>>>
>>>     grub_reverse (str);
>>> --- 565,570 ----
>>> ***************
>>> *** 682,693 ****
>>>       write_char (*s++);
>>>       }
>>>
>>> -   void write_str_limit (const char *s, int count)
>>> -     {
>>> -       while (*s && count--)
>>> -     write_char (*s++);
>>> -     }
>>> -
>>>     void write_fill (const char ch, int n)
>>>       {
>>>         int i;
>>> --- 680,685 ----
>>> ***************
>>> *** 704,711 ****
>>>         char tmp[32];
>>>         char *p;
>>>         unsigned int format1 = 0;
>>> !       unsigned int format2 = 1;
>>> !       grub_bool_t format2_default = TRUE;
>>>         char zerofill = ' ';
>>>         int rightfill = 0;
>>>         int n;
>>> --- 696,702 ----
>>>         char tmp[32];
>>>         char *p;
>>>         unsigned int format1 = 0;
>>> !       unsigned int format2 = 3;
>>>         char zerofill = ' ';
>>>         int rightfill = 0;
>>>         int n;
>>> ***************
>>> *** 723,737 ****
>>>         while (*p && grub_isdigit (*p))
>>>           p++;
>>>
>>> !       if (p > fmt || *p == '.')
>>>           {
>>>             char s[p - fmt + 1];
>>>             grub_strncpy (s, fmt, p - fmt);
>>>             s[p - fmt] = 0;
>>>             if (s[0] == '0')
>>>           zerofill = '0';
>>> !           if (p - fmt)
>>> !             format1 = grub_strtoul (s, 0, 10);
>>>             fmt = p;
>>>             if (*p && *p == '.')
>>>           {
>>> --- 714,727 ----
>>>         while (*p && grub_isdigit (*p))
>>>           p++;
>>>
>>> !       if (p > fmt)
>>>           {
>>>             char s[p - fmt + 1];
>>>             grub_strncpy (s, fmt, p - fmt);
>>>             s[p - fmt] = 0;
>>>             if (s[0] == '0')
>>>           zerofill = '0';
>>> !           format1 = grub_strtoul (s, 0, 10);
>>>             fmt = p;
>>>             if (*p && *p == '.')
>>>           {
>>> ***************
>>> *** 747,755 ****
>>>                 format2 = grub_strtoul (fstr, 0, 10);
>>>                 fmt = p;
>>>               }
>>> -           else
>>> -             format2 = 0;
>>> -           format2_default = FALSE;
>>>           }
>>>           }
>>>
>>> --- 737,742 ----
>>> ***************
>>> *** 790,806 ****
>>>               n = va_arg (args, int);
>>>             grub_itoa (tmp, c, n);
>>>           }
>>> !           if ( format2 == 0 && grub_strcmp (tmp, "0") == 0)
>>> !         break;
>>> !           if ( grub_strlen (tmp) > format2)
>>> !             format2 = grub_strlen (tmp);
>>> !           if (! rightfill && format2 < format1)
>>> !         write_fill (zerofill, format1 - format2);
>>> !           if ( grub_strlen (tmp) < format2)
>>> !         write_fill ('0', format2 - grub_strlen (tmp));
>>>             write_str (tmp);
>>> !           if (rightfill && format2 < format1)
>>> !         write_fill (zerofill, format1 - format2);
>>>             break;
>>>
>>>           case 'c':
>>> --- 777,787 ----
>>>               n = va_arg (args, int);
>>>             grub_itoa (tmp, c, n);
>>>           }
>>> !           if (! rightfill && grub_strlen (tmp) < format1)
>>> !         write_fill (zerofill, format1 - grub_strlen (tmp));
>>>             write_str (tmp);
>>> !           if (rightfill && grub_strlen (tmp) < format1)
>>> !         write_fill (zerofill, format1 - grub_strlen (tmp));
>>>             break;
>>>
>>>           case 'c':
>>> ***************
>>> *** 862,895 ****
>>>             p = va_arg (args, char *);
>>>             if (p)
>>>           {
>>> !           if ( format2_default )
>>> !             {
>>> !               if (!rightfill && grub_strlen (p) < format1)
>>> !                 write_fill (' ', format1 - grub_strlen (p));
>>>
>>> !               write_str (p);
>>>
>>> !               if (rightfill && grub_strlen (p) < format1)
>>> !                 write_fill (' ', format1 - grub_strlen (p));
>>> !             }
>>> !             else
>>> !             {
>>> !               if (!rightfill && format2 < format1)
>>> !                 write_fill (' ', format1 - format2);
>>> !
>>> !               if ( grub_strlen (p) < format2)
>>> !                 {
>>> !                   if ( format2 <= format1)
>>> !                     write_fill (' ', format2 - grub_strlen (p));
>>> !                   else
>>> !                     write_fill (' ', format1 - grub_strlen (p));
>>> !                 }
>>> !
>>> !               write_str_limit (p, format2);
>>> !
>>> !               if (rightfill && format2 < format1)
>>> !                 write_fill (' ', format1 - format2);
>>> !             }
>>>           }
>>>             else
>>>           write_str ("(null)");
>>> --- 843,855 ----
>>>             p = va_arg (args, char *);
>>>             if (p)
>>>           {
>>> !           if (!rightfill && grub_strlen (p) < format1)
>>> !             write_fill (zerofill, format1 - grub_strlen (p));
>>>
>>> !           write_str (p);
>>>
>>> !           if (rightfill && grub_strlen (p) < format1)
>>> !             write_fill (zerofill, format1 - grub_strlen (p));
>>>           }
>>>             else
>>>           write_str ("(null)");
>>>
>>> ###############end of diff
>>>
>>> ######start of test case
>>> int main()
>>> {
>>>     typedef int (*printf_ptr)(char const *str, ...);
>>>     printf_ptr p;
>>>     if(getenv("GRUB_PRINTF"))
>>>     {
>>>         printf("using grub_printf\n");
>>>         p = grub_printf;
>>>     }
>>>     else
>>>     {
>>>         printf("using printf\n");
>>>         p = printf;
>>>     }
>>>     p("##%4.2d##\n",1);
>>>     p("##%4.2d##\n",12);
>>>     p("##%4.2d##\n",123);
>>>     p("##%4.2d##\n",1234);
>>>     p("##%4.2d##\n",12345);
>>>     p("##%3.3d##\n",12);
>>>     p("##%3.3d##\n",123);
>>>     p("##%3.3d##\n",1234);
>>>     p("##%2.4d##\n",12345);
>>>     p("##%2.4d##\n",1234);
>>>     p("##%2.4d##\n",123);
>>>     p("##%2.4d##\n",12);
>>>     p("##%2.4d##\n",1);
>>>     p("##%.0d##\n",0);
>>>     p("##%.0d##\n",1);
>>>     p("##%4.2s##\n","1");
>>>     p("##%4.2s##\n","12");
>>>     p("##%4.2s##\n","123");
>>>     p("##%4.2s##\n","1234");
>>>     p("##%4.2s##\n","12345");
>>>     p("##%3.3s##\n","12");
>>>     p("##%3.3s##\n","123");
>>>     p("##%3.3s##\n","1234");
>>>     p("##%2.4s##\n","12345");
>>>     p("##%2.4s##\n","1234");
>>>     p("##%2.4s##\n","123");
>>>     p("##%2.4s##\n","12");
>>>     p("##%2.4s##\n","1");
>>>     return 0;
>>> }
>>>
>>
>>
>

[-- Attachment #2: Type: text/html, Size: 9629 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2009-03-12  8:49     ` Deepak Vankadaru
@ 2009-03-13 19:20       ` Robert Millan
  2009-03-16 18:38         ` Deepak Vankadaru
  0 siblings, 1 reply; 10+ messages in thread
From: Robert Millan @ 2009-03-13 19:20 UTC (permalink / raw)
  To: The development of GRUB 2

On Thu, Mar 12, 2009 at 02:19:44PM +0530, Deepak Vankadaru wrote:
> Hi
> 
> I have completed the copyright assignment procedure. Just a reminder.

Hi Deepak,

Thanks for the reminder.  Could you please include a ChangeLog entry?

-- 
Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2009-03-13 19:20       ` Robert Millan
@ 2009-03-16 18:38         ` Deepak Vankadaru
  2009-03-18 10:09           ` Robert Millan
  2009-03-24 20:39           ` Christian Franke
  0 siblings, 2 replies; 10+ messages in thread
From: Deepak Vankadaru @ 2009-03-16 18:38 UTC (permalink / raw)
  To: The development of GRUB 2


[-- Attachment #1.1: Type: text/plain, Size: 1153 bytes --]

Hi,

There was a redundant piece of code in the diff file I sent earlier. I have
removed it and prepared another patch file. I am attaching the same. Please
use this one instead.

Following is the changelog.

Changelog:
2008-08-17  Deepak Vankadaru  <deepak.vankadaru@gmail.com>

       Support for precision formatting in grub_printf

       * kern/misc.c: modified grub_vsprintf to parse and handle precision
formatting

Thanks
Deepak

On Sat, Mar 14, 2009 at 12:50 AM, Robert Millan <rmh@aybabtu.com> wrote:

> On Thu, Mar 12, 2009 at 02:19:44PM +0530, Deepak Vankadaru wrote:
> > Hi
> >
> > I have completed the copyright assignment procedure. Just a reminder.
>
> Hi Deepak,
>
> Thanks for the reminder.  Could you please include a ChangeLog entry?
>
> --
> Robert Millan
>
>  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
>  how) you may access your data; but nobody's threatening your freedom: we
>  still allow you to remove your data and not access it at all."
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
>

[-- Attachment #1.2: Type: text/html, Size: 1876 bytes --]

[-- Attachment #2: misc.c.patch --]
[-- Type: application/octet-stream, Size: 4047 bytes --]

*** kern/misc.c.org	2009-03-16 04:14:32.466999000 -0700
--- kern/misc.c	2009-03-16 04:36:57.679110000 -0700
***************
*** 691,696 ****
--- 691,702 ----
  	write_char (*s++);
      }
  
+   void write_str_limit (const char *s, int count)
+     {
+       while (*s && count--)
+ 	write_char (*s++);
+     }
+ 
    void write_fill (const char ch, int n)
      {
        int i;
***************
*** 707,713 ****
  	  char tmp[32];
  	  char *p;
  	  unsigned int format1 = 0;
! 	  unsigned int format2 = 3;
  	  char zerofill = ' ';
  	  int rightfill = 0;
  	  int n;
--- 713,720 ----
  	  char tmp[32];
  	  char *p;
  	  unsigned int format1 = 0;
! 	  unsigned int format2 = 1;
! 	  grub_bool_t format2_default = TRUE;
  	  char zerofill = ' ';
  	  int rightfill = 0;
  	  int n;
***************
*** 725,738 ****
  	  while (*p && grub_isdigit (*p))
  	    p++;
  
! 	  if (p > fmt)
  	    {
  	      char s[p - fmt + 1];
  	      grub_strncpy (s, fmt, p - fmt);
  	      s[p - fmt] = 0;
  	      if (s[0] == '0')
  		zerofill = '0';
! 	      format1 = grub_strtoul (s, 0, 10);
  	      fmt = p;
  	      if (*p && *p == '.')
  		{
--- 732,746 ----
  	  while (*p && grub_isdigit (*p))
  	    p++;
  
! 	  if (p > fmt || *p == '.')
  	    {
  	      char s[p - fmt + 1];
  	      grub_strncpy (s, fmt, p - fmt);
  	      s[p - fmt] = 0;
  	      if (s[0] == '0')
  		zerofill = '0';
! 	      if (p - fmt)
! 	        format1 = grub_strtoul (s, 0, 10);
  	      fmt = p;
  	      if (*p && *p == '.')
  		{
***************
*** 748,753 ****
--- 756,764 ----
  		      format2 = grub_strtoul (fstr, 0, 10);
  		      fmt = p;
  		    }
+ 		  else
+ 		    format2 = 0;
+ 		  format2_default = FALSE;
  		}
  	    }
  
***************
*** 788,798 ****
  		    n = va_arg (args, int);
  		  grub_itoa (tmp, c, n);
  		}
! 	      if (! rightfill && grub_strlen (tmp) < format1)
! 		write_fill (zerofill, format1 - grub_strlen (tmp));
  	      write_str (tmp);
! 	      if (rightfill && grub_strlen (tmp) < format1)
! 		write_fill (zerofill, format1 - grub_strlen (tmp));
  	      break;
  	      
  	    case 'c':
--- 799,815 ----
  		    n = va_arg (args, int);
  		  grub_itoa (tmp, c, n);
  		}
! 	      if ( format2 == 0 && grub_strcmp (tmp, "0") == 0)
! 		break;
! 	      if ( grub_strlen (tmp) > format2)
! 	        format2 = grub_strlen (tmp);
! 	      if (! rightfill && format2 < format1)
! 		write_fill (zerofill, format1 - format2);
! 	      if ( grub_strlen (tmp) < format2)
! 		write_fill ('0', format2 - grub_strlen (tmp));
  	      write_str (tmp);
! 	      if (rightfill && format2 < format1)
! 		write_fill (zerofill, format1 - format2);
  	      break;
  	      
  	    case 'c':
***************
*** 867,879 ****
  	      p = va_arg (args, char *);
  	      if (p)
  		{
! 		  if (!rightfill && grub_strlen (p) < format1)
! 		    write_fill (zerofill, format1 - grub_strlen (p));
  		  
! 		  write_str (p);
  		  
! 		  if (rightfill && grub_strlen (p) < format1)
! 		    write_fill (zerofill, format1 - grub_strlen (p));
  		}
  	      else
  		write_str ("(null)");
--- 884,917 ----
  	      p = va_arg (args, char *);
  	      if (p)
  		{
! 		  if ( format2_default )
! 		    {
! 		      if (!rightfill && grub_strlen (p) < format1)
! 		        write_fill (' ', format1 - grub_strlen (p));
  		  
! 		      write_str (p);
  		  
! 		      if (rightfill && grub_strlen (p) < format1)
! 		        write_fill (' ', format1 - grub_strlen (p));
! 		    }
! 		    else
! 		    {
! 		      if (!rightfill && format2 < format1)
! 		        write_fill (' ', format1 - format2);
! 		  
! 		      if ( grub_strlen (p) < format2)
! 		        {
! 		          if ( format2 <= format1)
! 		            write_fill (' ', format2 - grub_strlen (p));
! 		          else
! 		            write_fill (' ', format1 - grub_strlen (p));
! 		        }
! 
! 		      write_str_limit (p, format2);
! 		  
! 		      if (rightfill && format2 < format1)
! 		        write_fill (' ', format1 - format2);
! 		    }
  		}
  	      else
  		write_str ("(null)");

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2009-03-16 18:38         ` Deepak Vankadaru
@ 2009-03-18 10:09           ` Robert Millan
  2009-03-18 10:49             ` Christian Franke
  2009-03-24 20:39           ` Christian Franke
  1 sibling, 1 reply; 10+ messages in thread
From: Robert Millan @ 2009-03-18 10:09 UTC (permalink / raw)
  To: The development of GRUB 2

On Tue, Mar 17, 2009 at 12:08:25AM +0530, Deepak Vankadaru wrote:
> Hi,
> 
> There was a redundant piece of code in the diff file I sent earlier. I have
> removed it and prepared another patch file. I am attaching the same. Please
> use this one instead.
> 
> Following is the changelog.
> 
> Changelog:
> 2008-08-17  Deepak Vankadaru  <deepak.vankadaru@gmail.com>
> 
>        Support for precision formatting in grub_printf
> 
>        * kern/misc.c: modified grub_vsprintf to parse and handle precision
> formatting

Thanks.  Please could you provide this in unified diff format? (diff -u)

-- 
Robert Millan

  The DRM opt-in fallacy: "Your data belongs to us. We will decide when (and
  how) you may access your data; but nobody's threatening your freedom: we
  still allow you to remove your data and not access it at all."



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2009-03-18 10:09           ` Robert Millan
@ 2009-03-18 10:49             ` Christian Franke
  0 siblings, 0 replies; 10+ messages in thread
From: Christian Franke @ 2009-03-18 10:49 UTC (permalink / raw)
  To: The development of GRUB 2

Robert Millan wrote:
> > Changelog:
> > 2008-08-17  Deepak Vankadaru  <deepak.vankadaru@gmail.com>
> > 
> > Support for precision formatting in grub_printf
> > 
> > * kern/misc.c: modified grub_vsprintf to parse and handle precision
> > formatting
> > 
> 
> Thanks.  Please could you provide this in unified diff format? (diff
> -u) 


I already added (fixed) the precision parsing and added handling of '%s'
precision (truncation):
http://svn.savannah.gnu.org/viewvc/trunk/grub2/kern/misc.c?root=grub&r1=1936&r2=1954
The parsing part of this new patch might conflict with this change.

-- 
Christian Franke






^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: precision formatting in grub_printf
  2009-03-16 18:38         ` Deepak Vankadaru
  2009-03-18 10:09           ` Robert Millan
@ 2009-03-24 20:39           ` Christian Franke
  1 sibling, 0 replies; 10+ messages in thread
From: Christian Franke @ 2009-03-24 20:39 UTC (permalink / raw)
  To: The development of GRUB 2

Deepak Vankadaru wrote:
> Hi,
>
> There was a redundant piece of code in the diff file I sent earlier. I 
> have removed it and prepared another patch file. I am attaching the 
> same. Please use this one instead.
>
> Following is the changelog.
>
> Changelog:
> 2008-08-17  Deepak Vankadaru  <deepak.vankadaru@gmail.com 
> <mailto:deepak.vankadaru@gmail.com>>
>
>        Support for precision formatting in grub_printf
>
>        * kern/misc.c: modified grub_vsprintf to parse and handle 
> precision formatting
>

Thanks.

Unfortunately, the patch can no longer be applied to current svn without 
a conflict.
The precision parsing and '%s' precision (truncation) handling is 
already implemented.

But the '%d' precision (zero fill) handling part of your patch is still 
missing in the code.

Could you please repost an updated patch in diff -u format?
Note that the current code does not use a format2_default flag buts sets 
format2 to ~0U ('infinite' :-) if no precision is specified.

Thanks

-- 
Christian Franke




^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2009-03-24 20:39 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-08-17 17:58 precision formatting in grub_printf Deepak Vankadaru
2008-08-17 21:14 ` Robert Millan
2008-08-18  5:22 ` Deepak Vankadaru
2008-08-22 12:26   ` Deepak Vankadaru
2009-03-12  8:49     ` Deepak Vankadaru
2009-03-13 19:20       ` Robert Millan
2009-03-16 18:38         ` Deepak Vankadaru
2009-03-18 10:09           ` Robert Millan
2009-03-18 10:49             ` Christian Franke
2009-03-24 20:39           ` Christian Franke

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.