summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Dudka <kdudka@redhat.com>2009-04-09 13:22:23 +0200
committerJim Meyering <meyering@redhat.com>2009-04-09 14:01:50 +0200
commit4fd008794167d43f31b6d2cb565597a14c59d10a (patch)
tree20e050d7f5afbec31336c69469975cf2d1a50b70
parentd29d6c11acd73086ac7ffabb9a451faa1d4984f9 (diff)
downloadgnulib-4fd008794167d43f31b6d2cb565597a14c59d10a.tar.gz
filevercmp: fix regression
-rw-r--r--ChangeLog7
-rw-r--r--lib/filevercmp.c21
-rw-r--r--tests/test-filevercmp.c2
3 files changed, 22 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index e4c9bf696b..0e45e71dce 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-04-09 Kamil Dudka <kdudka@redhat.com>
+
+ Fix regression in 'filevercmp' module. Thanks Sven Joachim
+ for reporting it.
+ * lib/filevercmp.c: Special handle for "", "." and "..".
+ * tests/test-filevercmp.c: Enlarge the set suite.
+
2009-04-07 Jim Meyering <meyering@redhat.com>
useless-if-before-free: show how to remove braced useless free, too
diff --git a/lib/filevercmp.c b/lib/filevercmp.c
index 99c07db9cc..caa4891c9c 100644
--- a/lib/filevercmp.c
+++ b/lib/filevercmp.c
@@ -135,14 +135,19 @@ filevercmp (const char *s1, const char *s2)
if (simple_cmp == 0)
return 0;
- /* handle hidden files */
- while (*s1 == '.' || *s2 == '.')
- {
- if (*s1 != *s2)
- return *s1 - *s2;
- s1++;
- s2++;
- }
+ /* special handle for "", "." and ".." */
+ if (!*s1)
+ return -1;
+ if (!*s2)
+ return 1;
+ if (0 == strcmp (".", s1))
+ return -1;
+ if (0 == strcmp (".", s2))
+ return 1;
+ if (0 == strcmp ("..", s1))
+ return -1;
+ if (0 == strcmp ("..", s2))
+ return 1;
/* "cut" file suffixes */
s1_pos = s1;
diff --git a/tests/test-filevercmp.c b/tests/test-filevercmp.c
index 9933b8a424..700e182777 100644
--- a/tests/test-filevercmp.c
+++ b/tests/test-filevercmp.c
@@ -37,6 +37,7 @@
/* set of well sorted examples */
static const char *const examples[] =
{
+ "",
".",
"..",
".a~",
@@ -73,6 +74,7 @@ static const char *const examples[] =
"nss_ldap-1.0-0.1a.tar.gz",
"nss_ldap-10beta1.fc8.tar.gz",
"nss_ldap-10.11.8.6.20040204cvs.fc10.ebuild",
+ "#.b#",
NULL
};