Provided by: manpages-fr-dev_4.27.0-1_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

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

Pages du manuel de Linux 6.9.1                    15 juin 2024                                     strverscmp(3)