Ondřej Vašík wrote: > > Does rpmvercmp have the above property? > > Similar. It separates name, epoch, version, release and architecture and > compares those. Uses subsections of alphanum segments separated by > non-alphanum chars. When same segment have different types, numeric is > always considered as newer than alpha or alphanum. This solves issue > with suffix
From this description and from its source code I can still not verify that this function has these properties which I consider essential: 1) cmp (s1, s2) == 0 if and only if s1 and s2 are the same, (otherwise the 'ls' output would not be deterministic) 2) whenever cmp (s1, s2) < 0 && cmp (s2, s3) < 0 then cmp (s1, s3) < 0 (otherwise the 'ls' output could be sorted differently if a file is added or removed). 3) cmp (concat (PREFIX, s1, SUFFIX), concat (PREFIX, s2, SUFFIX)) == cmp (s1, s2) for all PREFIXes, and for all SUFFIXes that start with a '.'. > but changes behaviour for prefix (name) - as fully numeric > project/file name will be considered as "newer" than alphanum > project/file name and will be listed after alphanumeric names. Hmm, indeed, rpmvercmp does not fulfill axiom 3: If I understand it correctly, rpmvercmp ("0002", "04") < 0 but rpmvercmp ("10002", "104") > 0. I would find it more reasonable to consider zeroes at the beginning of a segment as relevant when the segment is the first one. Bruno