Provided by: manpages-fr-dev_4.21.0-2_all bug

NOM

       strverscmp - Comparer deux chaînes versionnées

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #define _GNU_SOURCE         /* Consultez feature_test_macros(7) */
       #include <string.h>

       int strverscmp(const char *s1, const char *s2);

DESCRIPTION

       On  a  souvent  des fichiers jan1, jan2, ..., jan9, jan10, ... et il est malvenu que ls(1)
       les classe dans l'ordre jan1, jan10, ..., jan2, ..., jan9. Afin de remédier à cela, GNU  a
       introduit l'option -v à ls(1), option implémentée en utilisant versionsort(3), qui utilise
       lui-même strverscmp().

       Ainsi, la tâche de strverscmp() consiste à  comparer  deux  chaînes  et  à  déterminer  le
       « bon »  ordre,  alors  que  strcmp(3)  détermine seulement l'ordre lexicographique. Cette
       fonction  n'utilise  pas  la  catégorie  de  localisation  LC_COLLATE,  elle   vise   donc
       principalement les situations dans lesquelles les chaînes sont supposées être en ASCII.

       Cette  fonction  travaille  comme  suit : si les deux chaînes sont égales, elle renvoie 0.
       Sinon, elle recherche une position entre deux octets ayant la propriété  suivante :  avant
       cette  position,  les  deux  chaînes  sont  égales,  alors  qu'immédiatement  après, elles
       diffèrent. Elle détermine alors les plus longues chaînes de chiffres consécutifs contenant
       (ou  commençant  ou  se finissant à) cette position. Si l'une des chaînes ou bien les deux
       chaînes sont vides, alors  elle  renvoie  ce  que  strcmp(3)  aurait  renvoyé  (classement
       numérique  des  valeurs  d'octets).  Sinon, elle compare numériquement les deux chaînes de
       chiffres,  où  les  chaînes  de  chiffres  commençant  par  un  ou  plusieurs  zéros  sont
       interprétées  comme  si elles avaient un séparateur décimal en en-tête (de telle sorte que
       notamment les chaînes de chiffres commençant par davantage de  zéros  viennent  avant  les
       chaînes de chiffres avec moins de zéros en en-tête). Ainsi, le classement est 000, 00, 01,
       010, 09, 0, 1, 9, 10.

VALEUR RENVOYÉE

       La fonction strverscmp() renvoie un entier inférieur, égal ou supérieur à zéro si  s1  est
       déterminée comme étant respectivement plus récente, égale à ou postérieure à s2.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │strverscmp()                                            │ Sécurité des threads │ MT-Safe │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       Cette fonction est une extension GNU.

EXEMPLES

       Le  programme  suivant présente le fonctionnement de strverscmp(). Il utilise strverscmp()
       pour comparer deux chaînes de caractères fournies sur  la  ligne  de  commande.  Voici  un
       exemple de son utilisation :

           $ ./a.out jan1 jan10
           jan1 < jan10

   Source du programme

       #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>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           res = strverscmp(argv[1], argv[2]);

           printf("%s %s %s\n", argv[1],
                  (res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]);

           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       rename(1), strcasecmp(3), strcmp(3), strcoll(3)

TRADUCTION

       La  traduction  française  de  cette  page  de  manuel  a  été créée par Christophe Blaess
       <https://www.blaess.fr/christophe/>, Stéphan  Rafin  <stephan.rafin@laposte.net>,  Thierry
       Vignaud  <tvignaud@mandriva.com>,  François Micaux, Alain Portal <aportal@univ-montp2.fr>,
       Jean-Philippe   Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)    <jean-
       luc.coulon@wanadoo.fr>,    Julien    Cristau    <jcristau@debian.org>,    Thomas   Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau  <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis
       Barbier  <barbier@debian.org>,  David  Prévot   <david@tilapin.org>,   Frédéric   Hantrais
       <fhantrais@gmail.com>,   Grégoire   Scano   <gregoire.scano@malloc.fr>  et  Lucien  Gentis
       <lucien.gentis@waika9.com>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.