.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2001 Andries Brouwer .\" and Copyright (C) 2016 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH STRVERSCMP 3 "9 Junio 2020" GNU "Manual del Programador de Linux" .SH NOMBRE strverscmp \- compara dos cadenas de versión .SH SINOPSIS .nf \fB#define _GNU_SOURCE\fP /* Vea feature_test_macros(7) */ \fB#include \fP .PP \fBint strverscmp(const char *\fP\fIs1\fP\fB, const char *\fP\fIs2\fP\fB);\fP .fi .SH DESCRIPCIÓN .\" classical solution: "rename jan jan0 jan?" A menudo se dispone de los ficheros \fIjan1\fP, \fIjan2\fP, ..., \fIjan9\fP, \fIjan10\fP, ... y parece incorrecto cuando \fBls\fP(1) los ordena como \fIjan1\fP, \fIjan10\fP, ..., \fIjan2\fP, ..., \fIjan9\fP. Para solucionar esto, GNU introdujo la opción \fI\-v\fP a \fBls\fP(1), que es implementada usando \fBversionsort\fP(3), que a su vez utiliza \fBstrverscmp\fP(). .PP De esta manera, la tarea de \fBstrverscmp\fP() es comparar dos cadenas y encontrar el orden "correcto", mientras que \fBstrcmp\fP(3) solamente encuentra el orden lexicográfico. Esta función no usa la categoría de localización \fBLC_COLLATE\fP, por lo que se utiliza sobre todo en situaciones donde se espera que las cadenas esten en formato ASCII. .PP 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 \fBstrcmp\fP 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 \fI000\fP, \fI00\fP, \fI01\fP, \fI010\fP, \fI09\fP, \fI0\fP, \fI1\fP, \fI9\fP, \fI10\fP. .SH "VALOR DEVUELTO" La función \fBstrverscmp\fP() devuelve un entero menor que, igual a, o mayor que cero si \fIs1\fP es, respectivamente, anterior, igual, o posterior a \fIs2\fP. .SH ATRIBUTOS Para obtener una explicación de los términos usados en esta sección, véase \fBattributes\fP(7). .TS allbox; lb lb lb l l l. Interfaz Atributo Valor T{ \fBstrverscmp\fP() T} Seguridad del hilo Multi\-hilo seguro .TE .\" FIXME: The marking is different from that in the glibc manual, .\" which has: .\" .\" strverscmp: MT-Safe locale .\" .\" glibc manual says strverscmp should have marking locale because it calls .\" isdigit() multiple times and isdigit() uses locale variable. .\" But isdigit() has two implementations. With different compiling conditions, .\" we may call isdigit() in macro, then strverscmp() should not have locale .\" problem. .SH "CONFORME A" Esta función es una extensión GNU. .SH EJEMPLOS The program below can be used to demonstrate the behavior of \fBstrverscmp\fP(). It uses \fBstrverscmp\fP() to compare the two strings given as its command\-line arguments. An example of its use is the following: .PP .in +4n .EX $ \fB./a.out jan1 jan10\fP jan1 < jan10 .EE .in .SS "Código fuente" \& .EX #define _GNU_SOURCE #include #include #include int main(int argc, char *argv[]) { int res; if (argc != 3) { fprintf(stderr, "Usage: %s \en", argv[0]); exit(EXIT_FAILURE); } res = strverscmp(argv[1], argv[2]); printf("%s %s %s\en", argv[1], (res < 0) ? "<" : (res == 0) ? "==" : ">", argv[2]); exit(EXIT_SUCCESS); } .EE .SH "VÉASE TAMBIÉN" \fBrename\fP(1), \fBstrcasecmp\fP(3), \fBstrcmp\fP(3), \fBstrcoll\fP(3) .SH COLOFÓN Esta página es parte de la versión 5.10 del proyecto Linux \fIman\-pages\fP. Puede encontrar una descripción del proyecto, información sobre cómo informar errores y la última versión de esta página en \%https://www.kernel.org/doc/man\-pages/. .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Miguel Pérez Ibars . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .