1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211
|
.\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de)
.\" Distributed under GPL
.\" based on the description in glibc source and infopages
.\"
.\" Corrections and additions, aeb
.\"
.\" Traducido por Miguel Pérez Ibars <mpi79470@alu.um.es> el 10-julio-2004
.\"
.TH ARGZ_ADD 3
.SH NOMBRE
argz_add, argz_add_sep, argz_append, argz_count, argz_create,
argz_create_sep, argz_delete, argz_extract, argz_insert,
argz_next, argz_replace, argz_stringify \- funciones para manejar una lista argz
.SH SINOPSIS
.nf
.sp
.B "#include <argz.h>"
.sp
.BI "error_t"
.BI "argz_add(char **" argz ", size_t *" argz_len ", const char *" str );
.sp
.BI "error_t"
.BI "argz_add_sep(char **" argz ", size_t *" argz_len ,
.ti 20n
.BI "const char *" str ", int " delim );
.sp
.BI "error_t"
.BI "argz_append(char **" argz ", size_t *" argz_len ,
.ti 20n
.BI "const char *" buf ", size_t " buf_len );
.sp
.BI "size_t"
.BI "argz_count(const char *" argz ", size_t " argz_len );
.sp
.BI "error_t"
.BI "argz_create(char * const " argv "[], char **" argz ,
.ti 20n
.BI "size_t *" argz_len );
.sp
.BI "error_t"
.BI "argz_create_sep(const char *" str ", int " sep ", char **" argz ,
.ti 20n
.BI "size_t *" argz_len );
.sp
.BI "error_t"
.BI "argz_delete(char **" argz ", size_t *" argz_len ", char *" entry );
.sp
.BI "void"
.BI "argz_extract(char *" argz ", size_t " argz_len ", char **" argv );
.sp
.BI "error_t"
.BI "argz_insert (char **" argz ", size_t *" argz_len ", char *" before ,
.ti 20n
.BI "const char *" entry );
.sp
.BI "char *"
.BI "argz_next(char *" argz ", size_t " argz_len ", const char *" entry );
.sp
.BI "error_t"
.BI "argz_replace(char **" argz ", size_t *" argz_len ", const char *" str ,
.ti 20n
.BI "const char *" with ", unsigned int *" replace_count );
.sp
.BI "void"
.BI "argz_stringify(char *" argz ", size_t " len ", int " sep );
.sp
.SH DESCRIPCIÓN
Estas funciones son específicas de glibc.
.LP
Un vector argz es un puntero a un buffer de caracteres junto con una longitud.
Se pretende que el buffer de caracteres sea interpretado como un array
de cadenas, donde las cadenas están separadas por bytes NUL.
Si la longitud es distinta de cero, el último byte del buffer debe ser NUL.
.LP
Estas funciones se ofrecen para manejar vectores argz.
El par (NULL,0) es un vector argz, y, al contrario,
los vectores argz de longitud 0 deben tener un puntero NULL.
La reserva de memoria de los vectores argz no vacíos se realiza mediante
.BR malloc (3),
así
.BR free (3)
puede utilizarse para liberarla después.
.LP
.B argz_add()
añade la cadena
.I str
al final del array
.RI * argz ,
y actualiza
.RI * argz
y
.RI * argz_len .
.LP
.B argz_add_sep()
es similar, pero separa la cadena
.I str
en dos subcadenas separadas por el delimitador
.IR delim .
Por ejemplo, se puede utilizar está función en una ruta de búsqueda Unix
con el delimitador ':'.
.LP
.B argz_append()
añade el vector argz
.RI ( buf , buf_len )
después de
.RI (* argz ,* argz_len )
y actualiza
.RI * argz
y
.RI * argz_len .
(Así,
.RI * argz_len
se incrementará en
.IR buf_len .)
.LP
.B argz_count()
cuenta el número de cadenas, esto es, el número de bytes NUL, en
.RI ( argz , argz_len ).
.LP
.B argz_create()
convierte un vector de argumentos al estilo Unix
.IR argv ,
terminado en (char *) 0, en un vector argz
.RI (* argz ,* argz_len ).
.LP
.B argz_create_sep()
convierte la cadena terminada en NUL
.I str
en un vector argz
.RI (* argz ,* argz_len )
partiéndola en cada ocurrencia del separador
.IR sep .
.LP
.B argz_delete()
elimina la subcadena apuntada por
.I entry
del vector argz
.RI (* argz ,* argz_len )
y actualiza
.RI * argz
y
.RI * argz_len .
.LP
.B argz_extract()
es la contraria de
.BR argz_create() .
Toma un vector argz
.RI ( argz , argz_len )
y rellena el array que comienza en
.I argv
con punteros a las subcadenas, añadiendo un NULL al final,
formando un vector argv al estilo Unix.
El array
.I argv
debe tener suficiente espacio para
.IR argz_count ( argz , argz_len ") + 1"
punteros.
.LP
.B argz_insert()
es la opuesta de
.BR argz_delete() .
Inserta el argumento
.I entry
en la posición
.I before
en el vector argz
.RI (* argz ,* argz_len )
y actualiza
.RI * argz
y
.RI * argz_len .
Si
.I before
es NULL,
.I entry
será insertada al final.
.LP
.B argz_next()
es una función para recorrer el vector argz. Si
.I entry
es NULL, se devuelve la primera entrada. En otro caso, se devuelve
la siguiente entrada. Devuelve NULL si no quedan más entradas.
.LP
.B argz_replace()
reemplaza cada ocurrencia de
.I str
con
.IR with ,
reasignando argz si es necesario. Si
.I replace_count
es distinto de NULL,
.RI * replace_count
se incrementará con el número de reemplazos.
.LP
.B argz_stringify()
es la opuesta de
.BR argz_create_sep() .
Transforma el vector argz en una cadena normal reemplazando
todos los NULs excepto el último por
.IR sep .
.SH "VALOR DEVUELTO"
Todas las funciones argz que realizan reserva de memoria devuelven un tipo
\fIerror_t\fP, devolviendo \fB0\fP en caso de éxito, y \fBENOMEM\fP
si ocurre un error de asignación de memoria.
.SH FALLOS
Los vectores argz sin un NUL final pueden provocar Violaciones de Segmento.
.SH OBSERVACIONES
Estas funciones son extensiones de GNU. Manejar con cuidado.
.SH "VÉASE TAMBIÉN"
.BR envz (3)
|