.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2002 walter harms (walter.harms@informatik.uni-oldenburg.de) .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\" based on the description in glibc source and infopages .\" .\" Corrections and additions, aeb .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH argz_add 3 "20 juillet 2023" "Pages du manuel de Linux 6.05.01" .SH 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 les vecteurs argz .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .PP \fBerror_t argz_add(char **restrict \fP\fIargz\fP\fB, size_t *restrict \fP\fIargz_len\fP\fB,\fP \fB const char *restrict \fP\fIstr\fP\fB);\fP .PP \fBerror_t argz_add_sep(char **restrict \fP\fIargz\fP\fB, size_t *restrict \fP\fIargz_len\fP\fB,\fP \fB const char *restrict \fP\fIstr\fP\fB, int \fP\fIdelim\fP\fB);\fP .PP \fBerror_t argz_append(char **restrict \fP\fIargz\fP\fB, size_t *restrict \fP\fIargz_len\fP\fB,\fP \fB const char *restrict \fP\fIbuf\fP\fB, size_t \fP\fIbuf_len\fP\fB);\fP .PP \fBsize_t argz_count(const char *\fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB);\fP .PP \fBerror_t argz_create(char *const \fP\fIargv\fP\fB[], char **restrict \fP\fIargz\fP\fB,\fP \fB size_t *restrict \fP\fIargz_len\fP\fB);\fP .PP \fBerror_t argz_create_sep(const char *restrict \fP\fIstr\fP\fB, int \fP\fIsep\fP\fB,\fP \fB char **restrict \fP\fIargz\fP\fB, size_t *restrict \fP\fIargz_len\fP\fB);\fP .PP \fBvoid argz_delete(char **restrict \fP\fIargz\fP\fB, size_t *restrict \fP\fIargz_len\fP\fB,\fP \fB char *restrict \fP\fIentry\fP\fB);\fP .PP \fBvoid argz_extract(const char *restrict \fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB,\fP \fB char **restrict \fP\fIargv\fP\fB);\fP .PP \fBerror_t argz_insert(char **restrict \fP\fIargz\fP\fB, size_t *restrict \fP\fIargz_len\fP\fB,\fP \fB char *restrict \fP\fIbefore\fP\fB, const char *restrict \fP\fIentry\fP\fB);\fP .PP \fBchar *argz_next(const char *restrict \fP\fIargz\fP\fB, size_t \fP\fIargz_len\fP\fB,\fP \fB const char *restrict \fP\fIentry\fP\fB);\fP .PP \fBerror_t argz_replace(char **restrict \fP\fIargz\fP\fB, size_t *restrict \fP\fIargz_len\fP\fB,\fP \fB const char *restrict \fP\fIstr\fP\fB, const char *restrict \fP\fIwith\fP\fB,\fP \fB unsigned int *restrict \fP\fIreplace_count\fP\fB);\fP .PP \fBvoid argz_stringify(char *\fP\fIargz\fP\fB, size_t \fP\fIlen\fP\fB, int \fP\fIsep\fP\fB);\fP .fi .SH DESCRIPTION Ces fonctions sont spécifiques à la glibc. .PP 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 («\ \e0\ »). Si la longueur est non nulle, le dernier octet du tampon doit être nul. .PP 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 \fBmalloc\fP(3) afin que \fBfree\fP(3) puisse être utilisée pour les libérer. .PP \fBargz_add\fP() ajoute la chaîne \fIstr\fP à la fin du tableau \fI*argz\fP et met à jour \fI*argz\fP et \fI*argz_len\fP. .PP \fBargz_add_sep\fP() est similaire, mais découpe la chaîne \fIstr\fP en sous\-chaînes séparées par le délimiteur \fIdelim\fP. Par exemple, on peut l'utiliser sur la liste de recherche des chemins UNIX avec le délimiteur «\ :\ ». .PP \fBargz_append\fP() ajoute le vecteur argz (\fIbuf\fP,\ \fIbuf_len\fP) après (\fI*argz\fP,\ \fI*argz_len\fP) et met à jour \fI*argz\fP et \fI*argz_len\fP (donc \fI*argz_len\fP sera augmenté de \fIbuf_len\fP). .PP \fBargz_count\fP() compte le nombre de chaînes, c'est\-à\-dire le nombre d'octets nuls («\ \e0\ ») dans le vecteur (\fIargz\fP,\ \fIargz_len\fP). .PP \fBargz_create\fP() convertit un vecteur de type UNIX \fIargv\fP terminé par \fI(char *)\ 0\fP en un vecteur argz (\fI*argz\fP,\ \fI*argz_len\fP). .PP \fBargz_create_sep\fP() convertit la chaîne terminée par un caractère nul \fIstr\fP en un vecteur argz (\fI*argz\fP,\ \fI*argz_len\fP) en la découpant à chaque occurrence du séparateur \fIsep\fP. .PP \fBargz_delete\fP() retire la sous\-chaîne pointée par \fIentry\fP du vecteur argz (\fI*argz\fP,\ \fI*argz_len\fP) et met à jour \fI*argz\fP et \fI*argz_len\fP. .PP \fBargz_extract\fP() est l'inverse de \fBargz_create\fP(). Elle prend le vecteur argz (\fIargz\fP,\ \fIargz_len\fP) et remplit le tableau commençant à \fIargv\fP avec des pointeurs sur les sous\-chaînes et un NULL final en créant un vecteur de type UNIX argv. Le tableau \fIargv\fP doit avoir assez de place pour \fIargz_count\fP(\fIargz\fP, \fIargz_len\fP) + 1 pointeurs. .PP \fBargz_insert\fP() est l'opposée de \fBargz_delete\fP(). Elle insère l'argument \fIentry\fP à la position \fIbefore\fP dans le vecteur argz (\fI*argz\fP,\ \fI*argz_len\fP) et met à jour \fI*argz\fP et \fI*argz_len\fP. Si \fIbefore\fP est NULL, alors \fIentry\fP est insérée à la fin. .PP \fBargz_next\fP() est une fonction pour se déplacer dans le vecteur argz. Si \fIentry\fP 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. .PP \fBargz_replace\fP() remplace chaque occurrence de \fIstr\fP avec \fIwith\fP, en réallouant argz si nécessaire. Si \fIreplace_count\fP est non NULL, \fI*replace_count\fP sera incrémenté du nombre de remplacements. .PP \fBargz_stringify\fP() est l'opposée de \fBargz_create_sep\fP(). Elle transforme le vecteur argz en une chaîne normale en remplaçant tous les octets nuls («\ \e0\ ») sauf le dernier par \fIsep\fP. .SH "VALEUR RENVOYÉE" Toutes les fonctions argz qui font de l'allocation mémoire ont un type de retour \fIerror_t\fP (un type entier), et renvoient \fB0\fP si elles réussissent et \fBENOMEM\fP si l'allocation échoue. .SH ATTRIBUTS Pour une explication des termes utilisés dans cette section, consulter \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interface Attribut Valeur T{ .na .nh \fBargz_add\fP(), \fBargz_add_sep\fP(), \fBargz_append\fP(), \fBargz_count\fP(), \fBargz_create\fP(), \fBargz_create_sep\fP(), \fBargz_delete\fP(), \fBargz_extract\fP(), \fBargz_insert\fP(), \fBargz_next\fP(), \fBargz_replace\fP(), \fBargz_stringify\fP() T} Sécurité des threads MT\-Safe .TE .sp 1 .SH STANDARDS GNU. .SH BOGUES Les vecteurs argz sans caractère nul final conduisent à une erreur de segmentation. .SH "VOIR AUSSI" \fBenvz_add\fP(3) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier et David Prévot . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .