On Nov 15 17:58:38, [email protected] wrote:
> Hi Marc,
>
> Marc Espie wrote on Mon, Nov 15, 2021 at 05:06:23PM +0100:
> > On Mon, Nov 15, 2021 at 03:43:47PM +0100, Jan Stary wrote:
> >> On Nov 10 18:46:08, [email protected] wrote:
> >>> On Nov 10 18:15:44, [email protected] wrote:
>
> >>>> expr(1) says
> >>>>
> >>>> expr1 {=, >, >=, <, <=, !=} expr2
> >>>>
> >>>> Returns the results of integer comparison if both arguments
> >>>> are decimal integers; otherwise, returns the results of
> >>>> string comparison using the locale-specific collation
>
> Yikes. Yes, that is true in general. Then again, the OpenBSD
> C library intentionally supports only one single collation sequence:
> POSIX.
>
> >>>> sequence. The result of each comparison is 1 if the specified
> >>>> relation is true, or 0 if the relation is false.
> >>>>
> >>>> Looking at expr.c, it boils down to strcoll(), which ignores the locale.
> >>>> So the statement is technically true, but there isn't really any
> >>>> "locale-specific collation sequence".
> >>>>
> >>>> Would it be simpler to leave the mention of locale completely out?
>
> Yes, probably, and then add a CAVEATS section warning that on other
> operating systems, the collation order may vary depending on the
> LC_COLLATE environment variable.
I left that out on purpose and linked to strcoll(3) instead, because
(a) that's what the code actually does and
(b) strcoll(3) mentions the LC_COLLATE thing.
> >>>> Or state something similar to what sort(1) or strcoll(3) and other
> >>>> string-comparing routines say?
>
> >>> For example,
> >>>
> >>> $ expr č '<' d
> >>> 0
> >>>
> >>> Which locale-specific collation sequence determined that?
> >>> Byte by byte, it's
> >>>
> >>> c48d U+00010d č LATIN SMALL LETTER C HACEK
> >>> 64 U+000064 d LATIN SMALL LETTER D
> >>>
> >>> and I don't think there is anything more to it.
>
> Yes.
>
> >>> (Although in the Czech alphabet, č comes just before d.)
>
> Fair enough, but adding knowledge about that to the C library
> would be quite insane.
Cthulhu forbid; all I meant was it boils down to 0xc4 > 0x64 anyway,
so why talk about a "locale-specific collation sequence" at all.
I believe the manpage would be better off without it.
Jan