int main (void) { const char *const *i; /* Following tests taken from test-strverscmp.c */ ASSERT (filevercmp ("", "") == 0); ASSERT (filevercmp ("a", "a") == 0); ASSERT (filevercmp ("a", "b") < 0); ASSERT (filevercmp ("b", "a") > 0); ASSERT (filevercmp ("a0", "a") > 0); ASSERT (filevercmp ("00", "01") < 0); ASSERT (filevercmp ("01", "010") < 0); ASSERT (filevercmp ("9", "10") < 0); ASSERT (filevercmp ("0a", "0") > 0); /* compare each version string with each other - O(n^2) */ for (i = examples; *i; i++) { const char *const *j; for (j = examples; *j; j++) { int result = filevercmp (*i, *j); if (result < 0) ASSERT (i < j); else if (0 < result) ASSERT (j < i); else ASSERT (i == j); } } return 0; }
int reverse_filevercmp (const void *p1, const void *p2) { const char *s1 = * (char * const *) p1; const char *s2 = * (char * const *) p2; /* Note, arguments are reversed to achieve a reverse sort. */ return filevercmp (s2, s1); }