ARGZ_ADD
Section: Manuel du programmeur Linux (3) Updated: 21 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
BOGUES
NOTES
VOIR AUSSI
TRADUCTION
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 - functions to handle an argz list
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'inteprétation voulue pour le buffer de cartactères est un tableau de chaînes,
ou 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
Tout 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
TRADUCTION
Christophe Blaess, 2003.
|