On Tue, May 08, 2007 at 07:40:09AM -0700, Geoff Levand wrote: > Simon Horman wrote: > > On Mon, May 07, 2007 at 05:02:47PM -0700, Geoff Levand wrote: > >> kexec debug output improvments. > >> - Add better type checking for the debug output macro dfprintf(). > >> - Add a convenence macro dprintf(). > >> > >> Signed-off-by: Geoff Levand <geoffrey.levand at am.sony.com> > >> --- > >> kexec/kexec.h | 6 ++++-- > >> 1 file changed, 4 insertions(+), 2 deletions(-) > >> > >> --- kexec-tools-hacked.orig/kexec/kexec.h > >> +++ kexec-tools-hacked/kexec/kexec.h > >> @@ -217,10 +217,12 @@ int parse_iomem_single(char *str, uint64 > >> > >> #define MAX_LINE 160 > >> > >> +#define dprintf(args...) dfprintf(stdout, args) > >> #ifdef DEBUG > >> -#define dfprintf(args...) do {fprintf(args);} while(0) > >> +#define dfprintf(_f, _args...) do {fprintf(_f, _args);} while(0) > >> #else > >> -#define dfprintf(args...) do { } while(0) > >> +static inline int __attribute__ ((format (printf, 1, 2))) > >> + dfprintf(FILE *f, const char *fmt, ...) {return 0;} > >> #endif > > > > I think that this should be > > > > static inline int __attribute__ ((format (printf, 2, 3))) > > > > am I crazy? > > Yes, you are not crazy! My mistake. Thanks, I've applied a version with that fix. I also tried moving dprintf inside the #ifdef as suggested by Vivek. Turns out that both he and I were (somewhat obviously) wrong as if dprintf is in there and DEBUG isn't defined, then dprintf doesn't exists at all, which kind of bothers code that calls it. -- Horms H: http://www.vergenet.net/~horms/ W: http://www.valinux.co.jp/en/