Submitter | Carl-Daniel Hailfinger |
---|---|
Date | 2010-01-09 03:13:39 |
Message ID | <4B47F463.2010402@gmx.net> |
Download | mbox | patch |
Permalink | /patch/757/ |
State | Accepted |
Commit | r841 |
Headers | show |
Comments
On 1/8/2010 7:13 PM, Carl-Daniel Hailfinger wrote: > This slipped through the review. The msg_* macros won't compile as is if > you use more than one parameter (i.e. have a format string and a variable). > There are two alternative styles: GNU or C99 variadic macros. While C99 > has limitations compared to the GNU extensions, these limitations do not > affect our macros, so I decided to go with the standard way. > > I adjusted whitespace a bit to have aligned values (cosmetic change). > > Signed-off-by: Carl-Daniel Hailfinger<c-d.hailfinger.devel.2006@gmx.net> > > Index: flashrom-msg_macro_fix/flash.h > =================================================================== > --- flashrom-msg_macro_fix/flash.h (Revision 839) > +++ flashrom-msg_macro_fix/flash.h (Arbeitskopie) > @@ -506,22 +506,22 @@ > > /* cli_output.c */ > int print(int type, const char *fmt, ...); > -#define MSG_ERROR 0 > -#define MSG_INFO 1 > -#define MSG_DEBUG 2 > -#define MSG_BARF 3 > -#define msg_gerr(x) print(MSG_ERROR, x) /* general errors */ > -#define msg_perr(x) print(MSG_ERROR, x) /* programmer errors */ > -#define msg_cerr(x) print(MSG_ERROR, x) /* chip errors */ > -#define msg_ginfo(x) print(MSG_INFO, x) /* general info */ > -#define msg_pinfo(x) print(MSG_INFO, x) /* programmer info */ > -#define msg_cinfo(x) print(MSG_INFO, x) /* chip info */ > -#define msg_gdbg(x) print(MSG_DEBUG, x) /* general debug */ > -#define msg_pdbg(x) print(MSG_DEBUG, x) /* programmer debug */ > -#define msg_cdbg(x) print(MSG_DEBUG, x) /* chip debug */ > -#define msg_gspew(x) print(MSG_BARF, x) /* general debug barf */ > -#define msg_pspew(x) print(MSG_BARF, x) /* programmer debug barf */ > -#define msg_cspew(x) print(MSG_BARF, x) /* chip debug barf */ > +#define MSG_ERROR 0 > +#define MSG_INFO 1 > +#define MSG_DEBUG 2 > +#define MSG_BARF 3 > +#define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ > +#define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ > +#define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ > +#define msg_ginfo(...) print(MSG_INFO, __VA_ARGS__) /* general info */ > +#define msg_pinfo(...) print(MSG_INFO, __VA_ARGS__) /* programmer info */ > +#define msg_cinfo(...) print(MSG_INFO, __VA_ARGS__) /* chip info */ > +#define msg_gdbg(...) print(MSG_DEBUG, __VA_ARGS__) /* general debug */ > +#define msg_pdbg(...) print(MSG_DEBUG, __VA_ARGS__) /* programmer debug */ > +#define msg_cdbg(...) print(MSG_DEBUG, __VA_ARGS__) /* chip debug */ > +#define msg_gspew(...) print(MSG_BARF, __VA_ARGS__) /* general debug barf */ > +#define msg_pspew(...) print(MSG_BARF, __VA_ARGS__) /* programmer debug barf */ > +#define msg_cspew(...) print(MSG_BARF, __VA_ARGS__) /* chip debug barf */ > > /* cli_classic.c */ > int cli_classic(int argc, char *argv[]); > > > .... I didn't even know about that, kinda strange that flashrom compiled fine on my system. i686-apple-darwin10-gcc-4.2.1 Acked-by: Sean Nelson <audiohacked@gmail.com>
On 09.01.2010 04:17, Sean Nelson wrote: > On 1/8/2010 7:13 PM, Carl-Daniel Hailfinger wrote: >> The msg_* macros won't compile as is if >> you use more than one parameter (i.e. have a format string and a >> variable). >> > .... I didn't even know about that, kinda strange that flashrom > compiled fine on my system. i686-apple-darwin10-gcc-4.2.1 It compiled fine unless you actually tried to use the macros as replacement for printf_debug("%s", "some string"); > Acked-by: Sean Nelson <audiohacked@gmail.com> Thanks, r841. Regards, Carl-Daniel
Patch
Index: flashrom-msg_macro_fix/flash.h =================================================================== --- flashrom-msg_macro_fix/flash.h (Revision 839) +++ flashrom-msg_macro_fix/flash.h (Arbeitskopie) @@ -506,22 +506,22 @@ /* cli_output.c */ int print(int type, const char *fmt, ...); -#define MSG_ERROR 0 -#define MSG_INFO 1 -#define MSG_DEBUG 2 -#define MSG_BARF 3 -#define msg_gerr(x) print(MSG_ERROR, x) /* general errors */ -#define msg_perr(x) print(MSG_ERROR, x) /* programmer errors */ -#define msg_cerr(x) print(MSG_ERROR, x) /* chip errors */ -#define msg_ginfo(x) print(MSG_INFO, x) /* general info */ -#define msg_pinfo(x) print(MSG_INFO, x) /* programmer info */ -#define msg_cinfo(x) print(MSG_INFO, x) /* chip info */ -#define msg_gdbg(x) print(MSG_DEBUG, x) /* general debug */ -#define msg_pdbg(x) print(MSG_DEBUG, x) /* programmer debug */ -#define msg_cdbg(x) print(MSG_DEBUG, x) /* chip debug */ -#define msg_gspew(x) print(MSG_BARF, x) /* general debug barf */ -#define msg_pspew(x) print(MSG_BARF, x) /* programmer debug barf */ -#define msg_cspew(x) print(MSG_BARF, x) /* chip debug barf */ +#define MSG_ERROR 0 +#define MSG_INFO 1 +#define MSG_DEBUG 2 +#define MSG_BARF 3 +#define msg_gerr(...) print(MSG_ERROR, __VA_ARGS__) /* general errors */ +#define msg_perr(...) print(MSG_ERROR, __VA_ARGS__) /* programmer errors */ +#define msg_cerr(...) print(MSG_ERROR, __VA_ARGS__) /* chip errors */ +#define msg_ginfo(...) print(MSG_INFO, __VA_ARGS__) /* general info */ +#define msg_pinfo(...) print(MSG_INFO, __VA_ARGS__) /* programmer info */ +#define msg_cinfo(...) print(MSG_INFO, __VA_ARGS__) /* chip info */ +#define msg_gdbg(...) print(MSG_DEBUG, __VA_ARGS__) /* general debug */ +#define msg_pdbg(...) print(MSG_DEBUG, __VA_ARGS__) /* programmer debug */ +#define msg_cdbg(...) print(MSG_DEBUG, __VA_ARGS__) /* chip debug */ +#define msg_gspew(...) print(MSG_BARF, __VA_ARGS__) /* general debug barf */ +#define msg_pspew(...) print(MSG_BARF, __VA_ARGS__) /* programmer debug barf */ +#define msg_cspew(...) print(MSG_BARF, __VA_ARGS__) /* chip debug barf */ /* cli_classic.c */ int cli_classic(int argc, char *argv[]);
This slipped through the review. The msg_* macros won't compile as is if you use more than one parameter (i.e. have a format string and a variable). There are two alternative styles: GNU or C99 variadic macros. While C99 has limitations compared to the GNU extensions, these limitations do not affect our macros, so I decided to go with the standard way. I adjusted whitespace a bit to have aligned values (cosmetic change). Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>