diff options
author | Kamil Dudka <kdudka@redhat.com> | 2009-03-05 22:56:29 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2009-03-05 22:56:29 +0100 |
commit | 0443c2f39943017f0aaa0afacbf68fb725858963 (patch) | |
tree | 0d9a7a146684d5ebfe6a0ebe677e3b95821a4f5f /lib/filevercmp.c | |
parent | aec2096599fbee3a857e494034ff31d1aefd7a6e (diff) | |
download | gnulib-0443c2f39943017f0aaa0afacbf68fb725858963.tar.gz |
filevercmp: Move hidden files up in ordering.
Diffstat (limited to 'lib/filevercmp.c')
-rw-r--r-- | lib/filevercmp.c | 15 |
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; |