From 7f3caba522f4d24764f29d83aa2de9198bb7f01c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 24 May 2024 06:52:22 +0200 Subject: Adding upstream version 6.8. Signed-off-by: Daniel Baumann --- man3/strverscmp.3 | 146 ------------------------------------------------------ 1 file changed, 146 deletions(-) delete mode 100644 man3/strverscmp.3 (limited to 'man3/strverscmp.3') 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 -.\" and Copyright (C) 2016 Michael Kerrisk -.\" -.\" 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 -.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 -#include -#include -\& -int -main(int argc, char *argv[]) -{ - int res; -\& - if (argc != 3) { - fprintf(stderr, "Usage: %s \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) -- cgit v1.2.3