This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Format string wrapper and -Wformat-nonliteral


Hey,

Tobias Mueller wrote:
Kevin P. Fleming wrote:
Tobias Mueller wrote:

I think I want to make gcc
 * know that the wrapper is not responsible for the format string and
   thus the call to strftime is allowed
 * pass the responsibility up to the callers and thus check whether they
   call the wrapper with "good" strings.


And I don't know how to do that. Do you have any advices?

<snip>


size_t my_strftime(char *s, size_t max, const char *fmt,
                   const struct tm *tm)

Add "__attribute__((format (strftime, 3, 0)))" to your function declaration.



Well, I tried that:


size_t my_strftime(char *s, size_t max, const char *fmt,
                   const struct tm *tm)
                   __attribute__((format (strftime, 3, 0)))
{...}

and it fails:
muelli@bigbox /tmp $ gcc -Wformat -Wformat-nonliteral -Werror=format-nonliteral -Wfatal-errors -o mystrftime{,.c}
mystrftime.c:9: error: expected â,â or â;â before â{â token
compilation terminated due to -Wfatal-errors.
muelli@bigbox /tmp $


Now I tried


__attribute__(( format (strftime, 3, 0) ))
size_t my_strftime(char *s, size_t max, const char *fmt,
                   const struct tm *tm)
{...}

and at least it doesn't throw a syntax error. But it still fails to compile:
muelli@bigbox /tmp $ gcc -Wformat -Wformat-nonliteral -Werror=format-nonliteral -o mystrftime{,.c} mystrftime.c: In function âmy_strftimeâ:
mystrftime.c:14: error: format not a string literal, format string not checked
muelli@bigbox /tmp $


What would be the next step in solving this issue? Maybe filing a bug would be appropriate?

Cheers,
  Tobi


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]