STRVERSCMP(3)          FreeBSD Library Functions Manual          STRVERSCMP(3)

NAME

     strverscmp - compare strings according to natural order

LIBRARY

     Standard C Library (libc, -lc)

SYNOPSIS

     #include <string.h>

     int
     strverscmp(const char *s1, const char *s2);

DESCRIPTION

     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").

SEE ALSO

     strcmp(3), versionsort(3)

STANDARDS

     The strverscmp() function is a GNU extension and conforms to no standard.

HISTORY

     The strverscmp() function was added in FreeBSD 13.2.

FreeBSD 15.1-STABLE-HBSD        August 31, 2023                  STRVERSCMP(3)