printf long format
PATCH 1/1 printf long format
Hmm, no idea what happened to the first mail.
Debugging a partition map bug, I was adding more grub_dprintf messages... and re-discovered that our printf doesn't handle e.g. "%lx" format strings (yet gcc requires these when printing longs).
This patch works for me, though I didn't check that it implements all "l" formating according to POSIX or SUS or whatever. Has not been tested on 64-bit platforms. Comments?
-Hollis
* kern/misc.c (grub_vsprintf): Add longfmt'. If format string contains l' modifier, get a long from va_arg().
Index: kern/misc.c
===================================================================
RCS file: /cvsroot/grub/grub2/kern/misc.c,v
retrieving revision 1.19
misc.c +12 -3
@@ -562,13 +562,14 @@ grub_vsprintf (char *str, const char *fmchar 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 *fm } c = *fmt++; +if (c =='l' ) + { + longfmt =1 ; + c = *fmt++; + }switch (c) {
@@ -610,7 +616,10 @@ grub_vsprintf (char *str, const char *fmcase '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));
Quoted 3 lines · Hollis Blanchard
Debugging a partition map bug, I was adding more
grub_dprintfmessages... and re-discovered that our printf doesn't handle e.g. "%lx" format strings (yet gcc requires these when printing longs).
Isn't that hexadecimal?
Quoted 2 lines
*
kern/misc.c(grub_vsprintf): Addlongfmt'. If format string containsl' modifier, get a long fromva_arg().
You forgot the first line... Please make sure the date you use is the date you check in. With your previous commit something went wrong.
misc.c grub_vsprintf (char *str, const char *fm · line 574
Quoted 9 lines
misc.c +1
-1if (*fmt && *fmt =='-' ) { rightfill =1 ; fmt++; } - + p = (char *) fmt;/* Read formatting parameters. */
Please watch out for such stuff. I know it is annoying...
The patch looks fine to me.
Thanks,
Marco
Quoted 7 lines · Marco Gerards
Quoted 3 lines · Hollis Blanchard
Debugging a partition map bug, I was adding more
grub_dprintfmessages... and re-discovered that our printf doesn't handle e.g. "%lx" format strings (yet gcc requires these when printing longs).Isn't that hexadecimal?
Yes... but that's not the point.
Quoted 5 lines
Quoted 2 lines
*
kern/misc.c(grub_vsprintf): Addlongfmt'. If format string containsl' modifier, get a long fromva_arg().You forgot the first line... Please make sure the date you use is the date you check in. With your previous commit something went wrong.
Sorry about that...
Quoted 11 lines
misc.c grub_vsprintf (char *str, const char *fm · line 574
Quoted 9 lines
misc.c +1
-1if (*fmt && *fmt =='-' ) { rightfill =1 ; fmt++; } - + p = (char *) fmt;/* Read formatting parameters. */ Please watch out for such stuff. I know it is annoying...
You have made this comment a few times now. Please understand: I do watch out for this stuff, apparently more carefully than other committers. I am removing whitespace from an otherwise blank line.
I am not saying I will never accidentally check in errant whitespace, but you can see that this is a correction, not an accident.
-Hollis
Quoted 6 lines · Hollis Blanchard
You have made this comment a few times now. Please understand: I do watch out for this stuff, apparently more carefully than other committers. I am removing whitespace from an otherwise blank line.
I am not saying I will never accidentally check in errant whitespace, but you can see that this is a correction, not an accident.
Why does Marco complain about this? Because of the readability of a patch? In this case, the option --ignore-space-change to diff would help you...
Okuji
Quoted 10 lines · Yoshinori K. Okuji
Quoted 6 lines · Hollis Blanchard
You have made this comment a few times now. Please understand: I do watch out for this stuff, apparently more carefully than other committers. I am removing whitespace from an otherwise blank line.
I am not saying I will never accidentally check in errant whitespace, but you can see that this is a correction, not an accident.
Why does Marco complain about this? Because of the readability of a patch? In this case, the option --ignore-space-change to diff would help you...
Readability. Hollis prefers no whitespace on a line. I do not care about these spaces, but it is too much noise to either add or remove it.
With --ignore-space-change you sometimes miss changes that were made on purpose.
--
Marco
Quoted 2 lines · Marco Gerards
With --ignore-space-change you sometimes miss changes that were made on purpose.
OK, then how about --ignore-blank-lines?
Personally I do not care about including space changes in a patch. But if you really hate it, I believe that we should define a rule here, like always removing trailing spaces. Honestly speaking, I'd like to say, "Don't care too much".
Okuji
Quoted 10 lines · Yoshinori K. Okuji
Quoted 2 lines · Marco Gerards
With --ignore-space-change you sometimes miss changes that were made on purpose.
OK, then how about --ignore-blank-lines?
Personally I do not care about including space changes in a patch. But if you really hate it, I believe that we should define a rule here, like always removing trailing spaces. Honestly speaking, I'd like to say, "Don't care too much".
In that case I will just stop nagging, unless blank lines are changed in files that do not have other changes or when it makes a patch really hard to read. Is that fine for you?
Thanks,
Marco
Quoted 3 lines · Marco Gerards
In that case I will just stop nagging, unless blank lines are changed in files that do not have other changes or when it makes a patch really hard to read. Is that fine for you?
No problem.
BTW, is there any way to have Emacs to remove trailing space when saving? As far as I know, this is possible with before_save_hook, but this requires modifying .emacs. Instead, I'd like to specify this within source files like this:
/*
* Local variables:
* delete-trailing-whitespace: t
* End:
*/
I guess not possible at the moment...
Okuji
Quoted 12 lines · Yoshinori K. Okuji
Quoted 3 lines · Marco Gerards
In that case I will just stop nagging, unless blank lines are changed in files that do not have other changes or when it makes a patch really hard to read. Is that fine for you?
No problem.
BTW, is there any way to have Emacs to remove trailing space when saving? As far as I know, this is possible with
before_save_hook, but this requires modifying .emacs. Instead, I'd like to specify this within source files like this:
Quoted 7 lines
/*
* Local variables:
* delete-trailing-whitespace: t
* End:
*/I guess not possible at the moment...
Why not?
I don't have any objections to changing my .emacs either.
Thanks,
Marco
Quoted 1 line · Marco Gerards
Why not?
Because I don't know how to do it. If you know, let me know.
Quoted 1 line
I don't have any objections to changing my .emacs either.
I do not want to change .emacs only for GRUB 2. Since .emacs is a global configuration, this affects other projects, and I do not like this.
Okuji