Provided by: manpages-es-dev_4.18.1-1_all bug

NOMBRE

       strverscmp - compara dos cadenas de versión

BIBLIOTECA

       Biblioteca Estándar C (libc, -lc)

SINOPSIS

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

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

DESCRIPCIÓN

       A menudo se dispone de los ficheros jan1, jan2, ..., jan9, jan10, ...  y parece incorrecto
       cuando ls(1) los ordena como jan1, jan10, ..., jan2, ..., jan9.  Para solucionar esto, GNU
       introdujo  la  opción  -v a ls(1), que es implementada usando versionsort(3), que a su vez
       utiliza strverscmp().

       De esta manera, la tarea de strverscmp() es comparar dos  cadenas  y  encontrar  el  orden
       "correcto",  mientras  que  strcmp(3)  solamente  encuentra  el  orden lexicográfico. Esta
       función no usa la categoría de localización LC_COLLATE, por lo que se utiliza  sobre  todo
       en situaciones donde se espera que las cadenas esten en formato ASCII.

       Lo  que  hace  esta función es lo siguiente.  Si ambas cadenas son iguales, devuelve 0. En
       otro caso encuentra la posición entre dos bytes con la propiedad  de  que  antes  de  esta
       posición  ambas  cadenas  son iguales, mientras que justamente después hay una diferencia.
       Encuentra las cadenas de dígitos consecutivos más largas  que  contienen  (o  comienzan  o
       terminan  en)  esta  posición. Si una o ambas están vacías, devuelve lo que strcmp hubiera
       devuelto (ordenamiento numérico de los valores de byte).   En  otro  caso,  compara  ambas
       cadenas  de  dígitos  numéricamente,  donde  las cadenas de dígitos con uno o más ceros al
       principio son interpretadas como si tuvieran un punto decimal delante (así que las cadenas
       de  dígitos  con más ceros al principio aparecen antes que aquellas cadenas de dígitos con
       menos ceros al principio).  Así, el ordenamiento es 000, 00, 01, 010, 09, 0, 1, 9, 10.

VALOR DEVUELTO

       La función strverscmp() devuelve un entero menor que, igual a, o mayor que cero si s1  es,
       respectivamente, anterior, igual, o posterior a s2.

ATRIBUTOS

       Para obtener una explicación de los términos usados en esta sección, véase attributes(7).

       ┌────────────────────────────────────────────────┬────────────────────┬───────────────────┐
       │InterfazAtributoValor             │
       ├────────────────────────────────────────────────┼────────────────────┼───────────────────┤
       │strverscmp()                                    │ Seguridad del hilo │ Multi-hilo seguro │
       └────────────────────────────────────────────────┴────────────────────┴───────────────────┘

ESTÁNDARES

       Esta función es una extensión GNU.

EJEMPLOS

       The  program  below  can  be  used  to  demonstrate the behavior of strverscmp().  It uses
       strverscmp()  to compare the two strings given as its command-line arguments.  An  example
       of its use is the following:

           $ ./a.out jan1 jan10
           jan1 < jan10

   Código fuente

       #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);
       }

VÉASE TAMBIÉN

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

TRADUCCIÓN

       La  traducción  al  español  de  esta  página del manual fue creada por Miguel Pérez Ibars
       <mpi79470@alu.um.es>

       Esta traducción es documentación libre; lea  la  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  o posterior con respecto a las condiciones de
       copyright.  No existe NINGUNA RESPONSABILIDAD.

       Si encuentra algún error en la traducción de esta  página  del  manual,  envíe  un  correo
       electrónico a ⟨debian-l10n-spanish@lists.debian.org⟩.