[CC += Bruno] Hi Alex, On 1/8/21 2:05 PM, Alejandro Colomar (man-pages) wrote: > Hi Michael, > > On 1/8/21 1:45 PM, Michael Kerrisk (man-pages) wrote: >> On 1/8/21 12:41 PM, Alejandro Colomar (man-pages) wrote: >>> Hi Michael, >>> >>> On 1/8/21 10:26 AM, Michael Kerrisk (man-pages) wrote: >>>> Hi Alex, >>>> >>>> On 1/7/21 7:32 PM, Alejandro Colomar (man-pages) wrote: >>>>> Hi Michael, >>>>> >>>>> I don't understand what this paragraph means, I think it needs some wfix. >>>>> >>>>> Around setlocale.3:179: >>>>> [ >>>>> On startup of the main program, the portable "C" locale is >>>>> selected as default. A program may be made portable to all >>>>> locales by calling: >>>>> >>>>> setlocale(LC_ALL, ""); >>>>> >>>>> after program initialization, by using the values returned >>>>> from a localeconv(3) call for locale-dependent information, >>>>> by using the multibyte and wide character functions for text >>>>> processing if MB_CUR_MAX > 1, and by using strcoll(3), wc‐ >>>>> scoll(3) or strxfrm(3), wcsxfrm(3) to compare strings. >>>>> >>>>> <<<Especially these last 2 lines >>>>> >>>>> ] >>>> >>>> I see what you mean. I had to read that a few times to parse it. >>>> It looks like the text was added in 1999. I think the following >>>> clarifies and preserves the meaning: >>>> >>>> [[ >>>> On startup of the main program, the portable "C" locale is select‐ >>>> ed as default. A program may be made portable to all locales by >>>> calling: >>>> >>>> setlocale(LC_ALL, ""); >>>> >>>> after program initialization, and then: >>>> >>>> (a) using the values returned from a localeconv(3) call for lo‐ >>>> cale-dependent information; >>>> >>>> (c) using the multibyte and wide character functions for text pro‐ >>>> cessing if MB_CUR_MAX > 1; and >>>> >>>> (c) using strcoll(3), wcscoll(3) or strxfrm(3), wcsxfrm(3) to com‐ >>>> pare strings. >>>> ]] >>>> >>>> What do you think? >>> >>> Much better. >>> >>> But I still don't get why [A, B or C, D]. What does it mean? >> >> I don't read it that way. I see it as: [A and (B and/or C and/or D]. >> Do you see what I mean? > > About the three lines (a) (b) (c) as a whole, yes, I understand that part. > About [strcoll(3), wcscoll(3) or strxfrm(3), wcsxfrm(3)], nope, I still > can't understand the punctuation there. > So I can't parse the inner contents of (c). Ah sorry. Now I see what you mean. I'm not sure of this, but I suspect that it's supposed to mean: Use [strcoll(3)+strxfrm(3)] for non-wide-char strings and [wcscoll(3)+wcsxfrm(3)] for wide char strings. Maybe Bruno can help. Thanks, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/