diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-24 04:52:22 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-24 04:52:22 +0000 |
commit | 3d08cd331c1adcf0d917392f7e527b3f00511748 (patch) | |
tree | 312f0d1e1632f48862f044b8bb87e602dcffb5f9 /man3/strverscmp.3 | |
parent | Adding debian version 6.7-2. (diff) | |
download | manpages-3d08cd331c1adcf0d917392f7e527b3f00511748.tar.xz manpages-3d08cd331c1adcf0d917392f7e527b3f00511748.zip |
Merging upstream version 6.8.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'man3/strverscmp.3')
-rw-r--r-- | man3/strverscmp.3 | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/man3/strverscmp.3 b/man3/strverscmp.3 deleted file mode 100644 index ad3ebeb..0000000 --- a/man3/strverscmp.3 +++ /dev/null @@ -1,146 +0,0 @@ -'\" t -.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl> -.\" and Copyright (C) 2016 Michael Kerrisk <mtk.manpages@gmail.com> -.\" -.\" SPDX-License-Identifier: Linux-man-pages-copyleft -.\" -.TH strverscmp 3 2023-10-31 "Linux man-pages 6.7" -.SH NAME -strverscmp \- compare two version strings -.SH LIBRARY -Standard C library -.RI ( libc ", " \-lc ) -.SH SYNOPSIS -.nf -.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */" -.B #include <string.h> -.P -.BI "int strverscmp(const char *" s1 ", const char *" s2 ); -.fi -.SH DESCRIPTION -Often one has files -.IR jan1 ", " jan2 ", ..., " jan9 ", " jan10 ", ..." -and it feels wrong when -.BR ls (1) -orders them -.IR jan1 ", " jan10 ", ..., " jan2 ", ..., " jan9 . -.\" classical solution: "rename jan jan0 jan?" -In order to rectify this, GNU introduced the -.I \-v -option to -.BR ls (1), -which is implemented using -.BR versionsort (3), -which again uses -.BR strverscmp (). -.P -Thus, the task of -.BR strverscmp () -is to compare two strings and find the "right" order, while -.BR strcmp (3) -finds only the lexicographic order. -This function does not use -the locale category -.BR LC_COLLATE , -so is meant mostly for situations -where the strings are expected to be in ASCII. -.P -What this function does is the following. -If both strings are equal, return 0. -Otherwise, find the position -between two bytes with the property that before it both strings are equal, -while directly after it there is a difference. -Find the largest consecutive digit strings containing (or starting at, -or ending at) this position. -If one or both of these is empty, -then return what -.BR strcmp (3) -would have returned (numerical ordering of byte values). -Otherwise, compare both digit strings numerically, where digit strings with -one or more leading zeros are interpreted as if they have a decimal point -in front (so that in particular digit strings with more leading zeros -come before digit strings with fewer leading zeros). -Thus, the ordering is -.IR 000 ", " 00 ", " 01 ", " 010 ", " 09 ", " 0 ", " 1 ", " 9 ", " 10 . -.SH RETURN VALUE -The -.BR strverscmp () -function returns an integer -less than, equal to, or greater than zero if -.I s1 -is found, respectively, to be earlier than, equal to, -or later than -.IR s2 . -.SH ATTRIBUTES -For an explanation of the terms used in this section, see -.BR attributes (7). -.TS -allbox; -lbx lb lb -l l l. -Interface Attribute Value -T{ -.na -.nh -.BR strverscmp () -T} Thread safety MT-Safe -.TE -.\" FIXME: The marking is different from that in the glibc manual, -.\" which has: -.\" -.\" strverscmp: MT-Safe locale -.\" -.\" glibc manual says strverscmp should have marking locale because it calls -.\" isdigit() multiple times and isdigit() uses locale variable. -.\" But isdigit() has two implementations. With different compiling conditions, -.\" we may call isdigit() in macro, then strverscmp() should not have locale -.\" problem. -.SH STANDARDS -GNU. -.SH EXAMPLES -The program below can be used to demonstrate the behavior of -.BR strverscmp (). -It uses -.BR strverscmp () -to compare the two strings given as its command-line arguments. -An example of its use is the following: -.P -.in +4n -.EX -$ \fB./a.out jan1 jan10\fP -jan1 < jan10 -.EE -.in -.SS Program source -\& -.\" SRC BEGIN (strverscmp.c) -.EX -#define _GNU_SOURCE -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -\& -int -main(int argc, char *argv[]) -{ - int res; -\& - if (argc != 3) { - fprintf(stderr, "Usage: %s <string1> <string2>\en", argv[0]); - exit(EXIT_FAILURE); - } -\& - res = strverscmp(argv[1], argv[2]); -\& - printf("%s %s %s\en", argv[1], - (res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]); -\& - exit(EXIT_SUCCESS); -} -.EE -.\" SRC END -.SH SEE ALSO -.BR rename (1), -.BR strcasecmp (3), -.BR strcmp (3), -.BR strcoll (3) |