From 321dede6df5a2df1a5a54b65ba5755e7767832a1 Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Wed, 3 Sep 2008 15:29:12 +0200 Subject: [PATCH] more useful strverscmp * lib/strverscmp.c (strverscmp): Ignore postfix after version string. --- lib/strverscmp.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/lib/strverscmp.c b/lib/strverscmp.c index f077651..f861b66 100644 --- a/lib/strverscmp.c +++ b/lib/strverscmp.c @@ -100,7 +100,7 @@ __strverscmp (const char *s1, const char *s2) /* Hint: '0' is a digit too. */ state = S_N | ((c1 == '0') + (ISDIGIT (c1) != 0)); - while ((diff = c1 - c2) == 0 && c1 != '\0') + while ((c1 - c2) == 0 && c1 != '\0') { state = next_state[state]; c1 = *p1++; @@ -110,6 +110,12 @@ __strverscmp (const char *s1, const char *s2) state = result_type[state << 2 | ((c2 == '0') + (ISDIGIT (c2) != 0))]; + if (isalpha(c1) && !isalpha(c2)) + c1 = '\0'; + if (isalpha(c2) && !isalpha(c1)) + c2 = '\0'; + diff = c1 - c2; + switch (state) { case CMP: -- 1.5.4.1