.\" -*- 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 envz_add 3 "5 février 2023" "Pages du manuel de Linux 6.03" 
.SH NOM
envz_add, envz_entry, envz_get, envz_merge, envz_remove, envz_strip \-
Gestion des chaînes d'environnement
.SH BIBLIOTHÈQUE
Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP)
.SH SYNOPSIS
.nf
\fB#include <envz.h>\fP
.PP
\fBerror_t envz_add(char **restrict \fP\fIenvz\fP\fB, size_t *restrict \fP\fIenvz_len\fP\fB,\fP
\fB               const char *restrict \fP\fIname\fP\fB, const char *restrict \fP\fIvalue\fP\fB);\fP
.PP
\fBchar *envz_entry(const char *restrict \fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB,\fP
\fB               const char *restrict \fP\fIname\fP\fB);\fP
.PP
\fBchar *envz_get(const char *restrict \fP\fIenvz\fP\fB, size_t \fP\fIenvz_len\fP\fB,\fP
\fB               const char *restrict \fP\fIname\fP\fB);\fP
.PP
\fBerror_t envz_merge(char **restrict \fP\fIenvz\fP\fB, size_t *restrict \fP\fIenvz_len\fP\fB,\fP
\fB               const char *restrict \fP\fIenvz2\fP\fB, size_t \fP\fIenvz2_len\fP\fB,\fP
\fB               int \fP\fIoverride\fP\fB);\fP
.PP
\fBvoid envz_remove(char **restrict \fP\fIenvz\fP\fB, size_t *restrict \fP\fIenvz_len\fP\fB,\fP
\fB               const char *restrict \fP\fIname\fP\fB);\fP
.PP
\fBvoid envz_strip(char **restrict \fP\fIenvz\fP\fB, size_t *restrict \fP\fIenvz_len\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ère associé à une
longueur, consultez \fBargz_add\fP(3). Un vecteur envz est un vecteur argz
spécial, plus précisément un dont les chaînes ont la forme «\ nom=valeur\ ». Tout ce qui suit le «\ =\ » est considéré comme la valeur. S'il n'y a pas
de «\ =\ », la valeur correspondante est NULL (tandis qu'un «\ =\ » en
dernière position indique une chaîne vide "").
.PP
Ces fonctions permettent la manipulation des vecteurs envz.
.PP
\fBenvz_add\fP() ajoute la chaîne «\ \fIname\fP=\fIvalue\fP\ » (si \fIvalue\fP n'est pas
NULL) ou «\ \fIname\fP\ » (si \fIvalue\fP est NULL) au vecteur envz (\fI*envz\fP,\ \fI*envz_len\fP) et met à jour \fI*envz\fP et \fI*envz_len\fP. Si une entrée avec le
même \fIname\fP existe, elle est supprimée.
.PP
\fBenvz_entry\fP() recherche \fIname\fP dans le vecteur envz (\fIenvz\fP,\ \fIenvz_len\fP) et renvoie son entrée si elle est trouvée, ou NULL sinon.
.PP
\fBenvz_get\fP() recherche le \fIname\fP dans le vecteur envz (\fIenvz\fP,\ \fIenvz_len\fP) et renvoie sa valeur si elle est trouvée, et NULL sinon. (Notez
que la valeur peut aussi être NULL, lorsqu'il y a une entrée pour \fIname\fP
sans le signe «\ =\ »).
.PP
\fBenvz_merge\fP() ajoute les entrées de \fIenvz2\fP dans \fI*envz\fP, comme avec
\fBenvz_add\fP(). Si \fIoverride\fP est vrai, alors les valeurs de \fIenvz2\fP
écraseront celles avec le même nom dans \fI*envz\fP, sinon elles seront
ignorées.
.PP
\fBenvz_remove\fP() supprime l'entrée correspondant à \fIname\fP du vecteur
(\fI*envz\fP,\ \fI*envz_len\fP) si elle s'y trouve.
.PP
\fBenvz_strip\fP supprime toutes les entrées avec une valeur NULL.
.SH "VALEUR RENVOYÉE"
Toutes les fonctions envz qui font une allocation mémoire ont un type de
retour \fIerror_t\fP (un type d'entier), et renvoient \fB0\fP en cas de succès et
\fBENOMEM\fP si une erreur d'allocation se produit.
.SH ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter
\fBattributes\fP(7).
.ad l
.nh
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribut	Valeur
T{
\fBenvz_add\fP(),
\fBenvz_entry\fP(),
\fBenvz_get\fP(),
\fBenvz_merge\fP(),
\fBenvz_remove\fP(),
\fBenvz_strip\fP()
T}	Sécurité des threads	MT\-Safe
.TE
.hy
.ad
.sp 1
.SH STANDARDS
Ces fonctions sont une extension de GNU.
.SH EXEMPLES
.\" SRC BEGIN (envz_add.c)
.EX
#include <envz.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[], char *envp[])
{
    char    *str;
    size_t  e_len = 0;

    for (size_t i = 0; envp[i] != NULL; i++)
        e_len += strlen(envp[i]) + 1;

    str = envz_entry(*envp, e_len, "HOME");
    printf("%s\en", str);
    str = envz_get(*envp, e_len, "HOME");
    printf("%s\en", str);
    exit(EXIT_SUCCESS);
}
.EE
.\" SRC END
.SH "VOIR AUSSI"
\fBargz_add\fP(3)
.PP
.SH TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>
et
David Prévot <david@tilapin.org>
.
.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 .