tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Adding %m conversion to the printf(3) family



On Fri, Oct 23, 2015 at 11:37:06PM +0000, Christos Zoulas wrote:
> In article <20151023230052.GB12646%britannica.bec.de@localhost>,
> Joerg Sonnenberger  <joerg%britannica.bec.de@localhost> wrote:
> >On Fri, Oct 23, 2015 at 10:33:52PM +0100, Roy Marples wrote:
> >> Instead of trying to make gcc work better, I propose that our libc printf(3) 
> >> family of functions instead support %m.
> >
> >This has been discussed before and I don't believe you have given any
> >new convincing arguments.
> >
> >> this proposal, I expect you to supply a working solution to the problem noted 
> >> at the top of this email. A valid solution could be reverting the gcc change 
> >> and keeping the status quo.
> >
> >It would help if you give a test case of what problem you are actually
> >talking about. I still have no clue what you reall mean.
> >
> >Joerg
> >
> 
> #include <stdio.h>
> #include <stdarg.h>
> 
> static void __attribute__((__format__(__syslog__, 2, 3)))
> logmein(int fd, const char *fmt, ...)
> {
> 	va_list ap;
> 	va_start(ap, fmt);
> 	vdprintf(fd, fmt, ap);
> 	va_end(ap);
> }
> 
> int
> main(void) {
> 	logmein(1, "%s %m\n", "foo");
> 	return 0;
> }
> 
> $ gcc -Wformat=2 -Wmissing-format-attribute logfmt.c
> logfmt.c: In function 'logmein':
> logfmt.c:9:2: warning: function might be possible candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
>  vdprintf(fd, fmt, ap);

That's silly. I would understand warning about conflicting format
attributes, but this doesn't make sense.

Well, you can disable the warning locally with #pragma GCC diagnostic.  See:
pkgsrc/devel/anjuta/patches/patch-plugins_build-basic-autotools_executer.c

Joerg


Home | Main Index | Thread Index | Old Index