On 05/14/2010 10:58 AM, Eric Blake wrote:
Why didn't gcc -Wformat catch this one? Oh, because it
doesn't warn on
non-literal formats. So why didn't -Wformat-nonliteral catch it? Oh,
because we don't turn it on, since we have other (provably safe)
non-literals that would trip it up. Maybe it's time to play with the
appropriate '#pragma gcc' to temporarily disable -Wformat-nonliteral
around just the places audited to be safe, if we detect at configure
time that we have new-enough gcc?
I'm not sure when
#pragma GCC diagnostic ignored -Wformat-literal
was first supported, but unfortunately, gcc documents that it is an
all-or-nothing choice that must be made at the front of each compilation
unit. In other words, it's not something we can temporarily enable
around just the functions that need it.
Then again, since automake doesn't (yet) support per-file CFLAGS
granularity (only per-target, where target is program or library), and
creating convenience libraries around one file just to get per-target
support to disable a diagnostic for that file seems painful.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org