[U-Boot] [U-Boot, v0, 07/20] vsprintf.c: add wide string (%ls) support
Rob Clark
robdclark at gmail.com
Wed Aug 9 13:38:44 UTC 2017
On Tue, Aug 8, 2017 at 6:03 PM, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
> On 08/04/2017 09:31 PM, Rob Clark wrote:
>>
>> @@ -528,8 +549,13 @@ repeat:
>> continue;
>>
>> case 's':
>> - str = string(str, end, va_arg(args, char *),
>> - field_width, precision, flags);
>> + if (qualifier == 'l') {
>
> %ls refers to wchar with implementation dependent width in the C standard.
> There is no qualifier for 16-bit wchar. Couldn't we use %us here in
> reference to the u-notation ( u'MyString' ). This would leave the path
> open for a standard compliant '%ls'.
>
So two drawbacks I'm running into when converting to c11 u"string"
style, compared to the -fshort-wchar:
1) with -fshort-wchar plus %ls, gcc knows how to typecheck the
printf/sprintf/etc args
2) introducing a non-standard conversion character (since there
doesn't seem to be a standard one) means we need to drop -Wformat
So far, afaict, the only argument against -fshort-wchar seems to be
that someday ext4 might support utf32 filenames? (And really
-fshort-wchar doesn't preclude that. So I'm not sure this is a valid
argument.)
So independent of c11 (which might be a good idea for other reasons),
I'm back to thinking we should use -fshort-wchar. Possibly as a
kconfig option that EFI_LOADER selects.. or possibly just
unconditionally.
Thoughts?
BR,
-R
More information about the U-Boot
mailing list