> Also, POSIX isn't explicit as to whether that restriction applies > to the format string or just the arguments to %lc and %ls conversions. > > What it does say is: > > The format is composed of zero or more directives: ordinary > characters, which are simply copied to the output stream, and > conversion specifications, each of which shall result in the > fetching of zero or more arguments.
Well that says the format string is a string, not a wide string. I think EILSEQ and -1 are intended to apply entirely to failed conversions, and these checks were mistakenly added to printf a while ago.
