summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKamil Dudka <kdudka@redhat.com>2008-10-03 11:03:40 +0200
committerJim Meyering <meyering@redhat.com>2008-10-03 11:59:17 +0200
commite505736f8211a608b00dfe75fb186a5211e1a183 (patch)
treed5d0e1cb62e0148acf9b0cb11585d999b61d259c /src
parent7eb15e1020590ebc1f39e5679feea8f1106d241c (diff)
downloadcoreutils-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.c8
-rw-r--r--src/sort.c9
2 files changed, 10 insertions, 7 deletions
diff --git a/src/ls.c b/src/ls.c
index aeece67dd..e107162ef 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -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;