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