mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-10-26 03:00:57 +00:00
POSIX specifies the C conversion specifier as being "equivalent to %lc",
i.e. printf("%C", arg) is equivalent in behaviour to printf("%lc", arg).
This patch implements this conversion specifier, and adds a test for it,
alongside another test, which ensures that va_arg uses the correct size,
even though we set signbit to 63 in the code (which one might think will
result in the wrong size of argument being va_arg-ed, but having signbit
set to 63 is in fact what __fmt_stoa expects and is a requirement for it
properly formatting the wchar_t argument - this does not result in wrong
usage of va_arg because the implementation of the c conversion specifier
(which the implementation of the C conversion specifier fallsthrough to)
always calls va_arg with an argument type of int, to avoid the very same
bug occuring with %lc, as the l length modifier also sets signbit to 63)
|
||
|---|---|---|
| .. | ||
| BUILD.mk | ||
| crypt_test.c | ||
| devrand_test.c | ||
| dirstream_test.c | ||
| dtoa_test.c | ||
| dumphexc_test.c | ||
| ecvt_test.c | ||
| fds_torture_test.c | ||
| fgetln_test.c | ||
| fgets_test.c | ||
| fgetwc_test.c | ||
| fmemopen_test.c | ||
| fmt_test.c | ||
| fprintf_test.c | ||
| fputc_test.c | ||
| fputs_test.c | ||
| fread_test.c | ||
| freopen_test.c | ||
| fscanf_test.c | ||
| fseeko_test.c | ||
| ftell_test.c | ||
| fwrite_test.c | ||
| getdelim_test.c | ||
| getentropy_test.c | ||
| gz_test.c | ||
| iconv_test.c | ||
| joinstrlist_test.c | ||
| lemur64_test.c | ||
| memory_test.c | ||
| mt19937_test.c | ||
| palandprintf_test.c | ||
| popen_test.c | ||
| rand_test.c | ||
| rngset_test.c | ||
| snprintf_enomem_test.c | ||
| snprintf_test.c | ||
| sprintf_s.inc | ||
| sprintf_s_test.c | ||
| sscanf_test.c | ||
| tmpfile_test.c | ||
| ungetc_test.c | ||
| vappendf_test.c | ||
| zipdir_test.c | ||