The
strverscmp()
function
compares the null-terminated strings
s1
and
s2
according to their natural order
and returns an integer greater than, equal to, or less than 0,
depending on whether
s1
is greater than, equal to, or less than
s2.
More specifically, this natural order is found by iterating over both
strings until a difference is found.
If the difference is between non-decimal characters,
strverscmp()
acts like
strcmp(3)
(thus, the ordering would be "a", "b", "train").
If a decimal digit is found, the whole number is read and compared
(thus, the ordering would be "9", "10", "420" which is different to lexicographic order,
what
strcmp(3)
would have done).
Numbers with leading zeroes are interpreted as fractional parts (even without a decimal point),
and numbers with more leading zeroes are placed before numbers with fewer leading zeroes
(thus, the ordering would be "000", "00", "01", "010", "09", "0", "1", "9", "10").