From 429d5f88b94ff28416cbfc6420b6389fa284df97 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Tue, 10 Dec 2024 22:30:12 +0100 Subject: Import RTFL 0.1.1 --- tests/test_version_cmp.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 tests/test_version_cmp.c (limited to 'tests/test_version_cmp.c') diff --git a/tests/test_version_cmp.c b/tests/test_version_cmp.c new file mode 100644 index 0000000..98667d6 --- /dev/null +++ b/tests/test_version_cmp.c @@ -0,0 +1,49 @@ +// Used for "../configure.ac". + +#include +#include + +static int version_cmp (const char *v1, const char *v2) +{ + const char *s1 = v1, *s2 = v2; + while (*s1 && *s2) { + if (isdigit (*s1) && isdigit (*s2)) { + char buf1[10], buf2[10]; + int n1 = 0, n2 = 0; + + while (isdigit (*s1)) { + if (n1 < 9) buf1[n1++] = *s1; + s1++; + } + + while (isdigit (*s2)) { + if (n2 < 9) buf2[n2++] = *s2; + s2++; + } + + buf1[n1] = buf2[n2] = 0; + int c = atoi (buf1) - atoi (buf2); + if (c != 0) + return c; + } else { + if (*s1 != *s2) + return *s1 - *s2; + s1++; + s2++; + } + } + + return *s1 - *s2; +} + +#include + +int main (int argc, char *argv[]) +{ + printf ("%d, %d, %d %d\n", + version_cmp ("0.1", "0.001"), + version_cmp ("0.1", "0.002"), + version_cmp ("0.1a", "0.1"), + version_cmp ("2.38.0", "2.38.1")); + return 0; +} -- cgit v1.2.3