diff options
author | Kamil Dudka <kdudka@redhat.com> | 2009-04-09 13:22:23 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2009-04-09 14:01:50 +0200 |
commit | 4fd008794167d43f31b6d2cb565597a14c59d10a (patch) | |
tree | 20e050d7f5afbec31336c69469975cf2d1a50b70 | |
parent | d29d6c11acd73086ac7ffabb9a451faa1d4984f9 (diff) | |
download | gnulib-4fd008794167d43f31b6d2cb565597a14c59d10a.tar.gz |
filevercmp: fix regression
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | lib/filevercmp.c | 21 | ||||
-rw-r--r-- | tests/test-filevercmp.c | 2 |
3 files changed, 22 insertions, 8 deletions
@@ -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 }; |