diff options
author | Kamil Dudka <kdudka@redhat.com> | 2008-10-03 11:03:40 +0200 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2008-10-03 11:59:17 +0200 |
commit | e505736f8211a608b00dfe75fb186a5211e1a183 (patch) | |
tree | d5d0e1cb62e0148acf9b0cb11585d999b61d259c /src | |
parent | 7eb15e1020590ebc1f39e5679feea8f1106d241c (diff) | |
download | coreutils-e505736f8211a608b00dfe75fb186a5211e1a183.tar.xz |
ls and sort: use filevercmp instead of strverscmp
* src/ls.c (cmp_version): Use filevercmp instead of strverscmp.
* src/sort.c (usage): Remove mna reference to strverscmp(3).
(compare_version): Use filevercmp instead of strverscmp.
* bootstrap.conf: Add filevercmp to list of gnulib modules.
* tests/misc/sort-version: Remove conflicting string and enhance test.
* NEWS: Mention the change.
Diffstat (limited to 'src')
-rw-r--r-- | src/ls.c | 8 | ||||
-rw-r--r-- | src/sort.c | 9 |
2 files changed, 10 insertions, 7 deletions
@@ -94,6 +94,7 @@ #include "hash.h" #include "human.h" #include "filemode.h" +#include "filevercmp.h" #include "idcache.h" #include "ls.h" #include "lstat.h" @@ -3123,8 +3124,9 @@ DEFINE_SORT_FUNCTIONS (extension, cmp_extension) /* Compare file versions. Unlike all other compare functions above, cmp_version depends only - on strverscmp, which does not fail (even for locale reasons), and does not - need a secondary sort key. + on filevercmp, which does not fail (even for locale reasons), and does not + need a secondary sort key. See lib/filevercmp.h for function description. + All the other sort options, in fact, need xstrcoll and strcmp variants, because they all use a string comparison (either as the primary or secondary sort key), and xstrcoll has the ability to do a longjmp if strcoll fails for @@ -3133,7 +3135,7 @@ DEFINE_SORT_FUNCTIONS (extension, cmp_extension) static inline int cmp_version (struct fileinfo const *a, struct fileinfo const *b) { - return strverscmp (a->name, b->name); + return filevercmp (a->name, b->name); } static int xstrcoll_version (V a, V b) diff --git a/src/sort.c b/src/sort.c index 44bfbe075..43c28fc84 100644 --- a/src/sort.c +++ b/src/sort.c @@ -29,6 +29,7 @@ #include "system.h" #include "argmatch.h" #include "error.h" +#include "filevercmp.h" #include "hard-locale.h" #include "hash.h" #include "md5.h" @@ -346,7 +347,7 @@ Ordering options:\n\ --sort=WORD sort according to WORD:\n\ general-numeric -g, month -M, numeric -n,\n\ random -R, version -V\n\ - -V, --version-sort sort by numeric version (see strverscmp(3))\n\ + -V, --version-sort sort by numeric version\n\ \n\ "), stdout); fputs (_("\ @@ -1823,7 +1824,7 @@ compare_random (char *restrict texta, size_t lena, } /* Compare the keys TEXTA (of length LENA) and TEXTB (of length LENB) - using strverscmp. */ + using filevercmp. See lib/filevercmp.h for function description. */ static int compare_version (char *restrict texta, size_t lena, @@ -1832,7 +1833,7 @@ compare_version (char *restrict texta, size_t lena, int diff; /* It is necessary to save the character after the end of the field. - "strverscmp" works with NUL terminated strings. Our blocks of + "filevercmp" works with NUL terminated strings. Our blocks of text are not necessarily terminated with a NUL byte. */ char sv_a = texta[lena]; char sv_b = textb[lenb]; @@ -1840,7 +1841,7 @@ compare_version (char *restrict texta, size_t lena, texta[lena] = '\0'; textb[lenb] = '\0'; - diff = strverscmp (texta, textb); + diff = filevercmp (texta, textb); texta[lena] = sv_a; textb[lenb] = sv_b; |