summaryrefslogtreecommitdiff
path: root/lib/filevercmp.c
diff options
context:
space:
mode:
authorKamil Dudka <kdudka@redhat.com>2009-03-05 22:56:29 +0100
committerBruno Haible <bruno@clisp.org>2009-03-05 22:56:29 +0100
commit0443c2f39943017f0aaa0afacbf68fb725858963 (patch)
tree0d9a7a146684d5ebfe6a0ebe677e3b95821a4f5f /lib/filevercmp.c
parentaec2096599fbee3a857e494034ff31d1aefd7a6e (diff)
downloadgnulib-0443c2f39943017f0aaa0afacbf68fb725858963.tar.gz
filevercmp: Move hidden files up in ordering.
Diffstat (limited to 'lib/filevercmp.c')
-rw-r--r--lib/filevercmp.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/lib/filevercmp.c b/lib/filevercmp.c
index 856f30ff0c..7b40c98f7b 100644
--- a/lib/filevercmp.c
+++ b/lib/filevercmp.c
@@ -124,8 +124,8 @@ verrevcmp (const char *s1, size_t s1_len, const char *s2, size_t s2_len)
int
filevercmp (const char *s1, const char *s2)
{
- const char *s1_pos = s1;
- const char *s2_pos = s2;
+ const char *s1_pos;
+ const char *s2_pos;
const char *s1_suffix, *s2_suffix;
size_t s1_len, s2_len;
int result;
@@ -135,7 +135,18 @@ 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++;
+ }
+
/* "cut" file suffixes */
+ s1_pos = s1;
+ s2_pos = s2;
s1_suffix = match_suffix (&s1_pos);
s2_suffix = match_suffix (&s2_pos);
s1_len = (s1_suffix ? s1_suffix : s1_pos) - s1;