On 11/24/18 2:32 PM, Chet Ramey wrote: >> But IMO locale collation should not be used for an explicit list. > > Collation order is used for each individual character in a bracket > expression when compared against the string, as posix specifies. > >> I have been made aware that there is a >> cstart = cend = FOLD (cstart); >> inside the `sm_loop.c` file that will convert into a range many >> individual character. If that understanding is correct that is the >> source of the difference with other shells. > > I'm not sure what you mean by "convert into a range." If cstart and cend > were treated as a range, the start end and end characters would be the > same. If cstart == cend, a character that collates >= cstart and <= cend > would have to collate equal to cstart and cend.
If I were you, I would file a bug report with Debian against wcscoll. It returns 0 (equal) for L"٠" and L"0" without setting errno. That's clearly a problem with wcscoll (if the character isn't valid in the current locale) or the locale definition. -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, UTech, CWRU c...@case.edu http://tiswww.cwru.edu/~chet/