This is the mail archive of the
mailing list for the GCC project.
Re: Preparsing sprintf format strings
- From: rridge at csclub dot uwaterloo dot ca (Ross Ridge)
- To: gcc at gcc dot gnu dot org
- Date: Fri, 12 Oct 2007 09:24:58 -0400 (EDT)
- Subject: Re: Preparsing sprintf format strings
Ross Ridge writes:
>The compiler can't in general know what encoding that printf, fprintf,
>and sprintf will use to parse the string. It's locale dependent.
Paolo Bonzini writes:
>It is undefined what happens if you run a program in a different charset
>than in the one you specified for -fexec-charset. (locale != charset).
I don't think that's true, but regardless many systems have runtime
character sets that are dependent on locale. If GCC doesn't support this,
then GCC is broken.
>A google code search for printf.*\\x1[bB][($].*%s hints that this is
>not a problem in practice.
In practice, probably not. I doubt there are any ASCII based systems that
actually support stateful encodings like ISO 2202-JP in their C runtimes.
There is at least one EBCDIC based systems, that fully supports stateful
encodings, but I don't know if in these encodings '%' byte values can
appear outside of the initial shift state.