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 - Fonctions pour manipuler les vecteurs argz
Bibliothèque C standard (
libc,
-lc)
#include <argz.h>
error_t argz_add(char **restrict argz, size_t *restrict argz_len,
const char *restrict str);
error_t argz_add_sep(char **restrict argz, size_t *restrict argz_len,
const char *restrict str, int delim);
error_t argz_append(char **restrict argz, size_t *restrict argz_len,
const char *restrict buf, size_t buf_len);
size_t argz_count(const char *argz, size_t argz_len);
error_t argz_create(char *const argv[], char **restrict argz,
size_t *restrict argz_len);
error_t argz_create_sep(const char *restrict str, int sep,
char **restrict argz, size_t *restrict argz_len);
void argz_delete(char **restrict argz, size_t *restrict argz_len,
char *restrict entry);
void argz_extract(const char *restrict argz, size_t argz_len,
char **restrict argv);
error_t argz_insert(char **restrict argz, size_t *restrict argz_len,
char *restrict before, const char *restrict entry);
char *argz_next(const char *restrict argz, size_t argz_len,
const char *restrict entry);
error_t argz_replace(char **restrict argz, size_t *restrict argz_len,
const char *restrict str, const char *restrict with,
unsigned int *restrict replace_count);
void argz_stringify(char *argz, size_t len, int sep);
Ces fonctions sont spécifiques à la glibc.
Un vecteur argz est un pointeur sur un tampon de caractères
associé à une longueur. L'interprétation voulue pour le
tampon de caractères est un tableau de chaînes où les
chaînes sont séparées par des octets nuls
(« \0 »). Si la longueur est non nulle, le dernier
octet du tampon doit être nul.
Ces fonctions servent à manipuler les vecteurs argz. La paire (NULL, 0)
est un vecteur argz et réciproquement les vecteurs argz de longueur
zéro doivent avoir un pointeur NULL. L'allocation de vecteurs argz non
nuls est faite avec
malloc(3) afin que
free(3) puisse
être utilisée pour les libérer.
argz_add() ajoute la chaîne
str à la fin du tableau
*argz et met à jour
*argz et
*argz_len.
argz_add_sep() est similaire, mais découpe la chaîne
str en sous-chaînes séparées par le
délimiteur
delim. Par exemple, on peut l'utiliser sur la liste
de recherche des chemins UNIX avec le délimiteur
« : ».
argz_append() ajoute le vecteur argz (
buf,
buf_len)
après (
*argz,
*argz_len) et met à jour
*argz et
*argz_len (donc
*argz_len sera augmenté
de
buf_len).
argz_count() compte le nombre de chaînes, c'est-à-dire le
nombre d'octets nuls (« \0 ») dans le vecteur (
argz,
argz_len).
argz_create() convertit un vecteur de type UNIX
argv
terminé par
(char *) 0 en un vecteur argz
(
*argz,
*argz_len).
argz_create_sep() convertit la chaîne terminée par un
caractère nul
str en un vecteur argz
(
*argz,
*argz_len) en la découpant à chaque
occurrence du séparateur
sep.
argz_delete() retire la sous-chaîne pointée par
entry du vecteur argz (
*argz,
*argz_len) et met
à jour
*argz et
*argz_len.
argz_extract() est l'inverse de
argz_create(). Elle prend le
vecteur argz (
argz,
argz_len) et remplit le tableau
commençant à
argv avec des pointeurs sur les
sous-chaînes et un NULL final en créant un vecteur de type UNIX
argv. Le tableau
argv doit avoir assez de place pour
argz_count(
argz,
argz_len) + 1 pointeurs.
argz_insert() est l'opposée de
argz_delete(). Elle
insère l'argument
entry à la position
before dans
le vecteur argz (
*argz,
*argz_len) et met à jour
*argz et
*argz_len. Si
before est NULL, alors
entry est insérée à la fin.
argz_next() est une fonction pour se déplacer dans le vecteur
argz. Si
entry est NULL, elle renvoie la première entrée.
Sinon, l'entrée suivante est renvoyée. Elle renvoie NULL s'il
n'y a pas d'entrée suivante.
argz_replace() remplace chaque occurrence de
str avec
with,
en réallouant argz si nécessaire. Si
replace_count est
non NULL,
*replace_count sera incrémenté du nombre de
remplacements.
argz_stringify() est l'opposée de
argz_create_sep(). Elle
transforme le vecteur argz en une chaîne normale en remplaçant
tous les octets nuls (« \0 ») sauf le dernier par
sep.
Toutes les fonctions argz qui font de l'allocation mémoire ont un type de
retour
error_t (un type entier), et renvoient
0 si elles
réussissent et
ENOMEM si l'allocation échoue.
Pour une explication des termes utilisés dans cette section, consulter
attributes(7).
Interface |
Attribut |
Valeur |
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() |
Sécurité des threads |
MT-Safe |
Ces fonctions sont une extension GNU.
Les vecteurs argz sans caractère nul final conduisent à une erreur
de segmentation.
envz_add(3)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]> et David Prévot <
[email protected]>
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 à
[email protected]