strxfrm output stability
Florian Weimer
fweimer@redhat.com
Wed Sep 9 11:45:00 GMT 2015
On 09/08/2015 11:35 PM, Paul Eggert wrote:
> Florian Weimer wrote:
>> I don't see this documented anywhere
>
> Exactly. Because the behavior is undocumented, applications cannot rely
> on strxfrm calls being stable from one process to the next.
Well, the same is true for reading files written by another program.
The C standard does not guarantee you'll get the bytes as written by the
other program (only by an execution of the same program, subject to a
few additional tweaks), and yet programmers have a reasonable
expectation that what program A writes to a file can be read back by
program B.
>> The manual suggests to store the strxfrm output and use it for sorting.
>> I expect that some applications put it into on-disk database indexes as
>> a result. This will lead to subtle breakage on glibc updates.
>
> I'll go out on a limb and say that no sane application uses strxfrm,
> either on disk or off.
PostgreSQL uses it to avoid calling strcoll on strings which have
distinctly ordered prefixes in their strxfrm output.
--
Florian Weimer / Red Hat Product Security
More information about the Libc-alpha
mailing list