Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       strverscmp - Comparer deux chaînes versionnées

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 │
       └──────────────┴──────────────────────┴─────────┘

CONFORMITÉ

       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 <string.h>
       #include <stdio.h>
       #include <stdlib.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)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux. Une description du projet et des
       instructions pour signaler des anomalies et la dernière version de cette page  peuvent  être  trouvées  à
       l'adresse https://www.kernel.org/doc/man-pages/.

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 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.

GNU                                                9 juin 2020                                     STRVERSCMP(3)