File: argz_add.3

package info (click to toggle)
manpages-es 1.55-9
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 7,468 kB
  • ctags: 6
  • sloc: sh: 1,629; makefile: 64
file content (211 lines) | stat: -rw-r--r-- 5,267 bytes parent folder | download | duplicates (4)
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)