Provided by:
manpages-fr_1.67.0-1_all 
NOM
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 es vecteurs
argz.
SYNOPSIS
#include <argz.h>
error_t
argz_add(char **argz, size_t *argz_len, const char *str);
error_t
argz_add_sep(char **argz, size_t *argz_len,
const char *str, int delim);
error_t
argz_append(char **argz, size_t *argz_len,
const char *buf, size_t buf_len);
size_t
argz_count(const char *argz, size_t argz_len);
error_t
argz_create(char * const argv[], char **argz,
size_t *argz_len);
error_t
argz_create_sep(const char *str, int sep, char **argz,
size_t *argz_len);
error_t
argz_delete(char **argz, size_t *argz_len, char *entry);
void
argz_extract(char *argz, size_t argz_len, char **argv);
error_t
argz_insert (char **argz, size_t *argz_len, char *before,
const char *entry);
char *
argz_next(char *argz, size_t argz_len, const char *entry);
error_t
argz_replace(char **argz, size_t *argz_len, const char *str,
const char *with, unsigned int *replace_count);
void
argz_stringify(char *argz, size_t len, int sep);
DESCRIPTION
Ces fonctions sont spécifiques à la GlibC.
Un vecteur argz est un pointeur sur un buffer de caractères associé à
une longueur. L’interprétation voulue pour le buffer de caractères est
un tableau de chaînes, où les chaînes sont séparées par des octets
nuls. Si la longueur est non nulle, le dernier octet du buffer 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é
pour les libérer.
argz_add() ajoute la chaîne str à la fin de la table *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) à la fin de
(*argz,*argz_len) et met à jour *argz et *argz_len. (Donc, *argz_len
sera augmentée de buf_len).
argz_count() compte le nombre de chaînes, c’est-à-dire de caractères
nuls dans le vecteur (argz,argz_len).
argz_create() convertit un vecteur de type argv 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 la table commençant à argv avec des
pointeurs sur les sous-chaines, et un NULL final en créant un vecteur
de type argv Unix. La table 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 caractères
nuls sauf le dernier par sep.
VALEUR RENVOYÉE
Toutes les fonctions argz qui font de l’allocation mémoire ont un type
de retour error_t, et renvoient 0 si elles réussissent et ENOMEM si
l’allocation échoue.
BOGUES
Les vecteurs argz sans caractère nul final conduisent une faute de
segmentation.
NOTES
Ces fonctions sont des extensions GNU, à utiliser avec précaution.
VOIR AUSSI
envz(3)
TRADUCTION
Christophe Blaess, 2003.