From cc96df30d2b27745dca763ae41940f8a1319be4c Mon Sep 17 00:00:00 2001 From: Kamil Dudka Date: Thu, 9 Apr 2009 18:07:15 +0200 Subject: [PATCH] filevercmp: correct today's change * lib/filevercmp.c: Also handle coreutils' test inputs. * tests/test-filevercmp.c: Add inputs from one of coreutils' test scripts. --- ChangeLog | 4 ++++ lib/filevercmp.c | 11 +++++++++++ tests/test-filevercmp.c | 18 ++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/ChangeLog b/ChangeLog index 0e45e71dc..004d784a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2009-04-09 Kamil Dudka + filevercmp: correct today's change + * lib/filevercmp.c: Also handle coreutils' test inputs. + * tests/test-filevercmp.c: Add inputs from one of coreutils' test scripts. + Fix regression in 'filevercmp' module. Thanks Sven Joachim for reporting it. * lib/filevercmp.c: Special handle for "", "." and "..". diff --git a/lib/filevercmp.c b/lib/filevercmp.c index caa4891c9..20522d1c4 100644 --- a/lib/filevercmp.c +++ b/lib/filevercmp.c @@ -149,6 +149,17 @@ filevercmp (const char *s1, const char *s2) if (0 == strcmp ("..", s2)) return 1; + /* special handle for other hidden files */ + if (*s1 == '.' && *s2 != '.') + return -1; + if (*s1 != '.' && *s2 == '.') + return 1; + if (*s1 == '.' && *s2 == '.') + { + s1++; + s2++; + } + /* "cut" file suffixes */ s1_pos = s1; s2_pos = s2; diff --git a/tests/test-filevercmp.c b/tests/test-filevercmp.c index 700e18277..ca88eb3ca 100644 --- a/tests/test-filevercmp.c +++ b/tests/test-filevercmp.c @@ -40,10 +40,23 @@ static const char *const examples[] = "", ".", "..", + ".0", + ".9", + ".A", + ".Z", ".a~", ".a", ".b~", ".b", + ".z", + ".zz~", + ".zz", + ".zz.~1~", + ".zz.0", + "0", + "9", + "A", + "Z", "a~", "a", "a.b~", @@ -74,6 +87,11 @@ 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", + "z", + "zz~", + "zz", + "zz.~1~", + "zz.0", "#.b#", NULL }; -- 2.11.0