Provided by:
manpages-fr-dev_2.64.1-1_all 
NOM
getgrent_r, fgetgrent_r - Obtenir un enregistrement du fichier group de
manière ré-entrante
SYNOPSIS
#include <grp.h>
int getgrent_r(struct group *gbuf, char *buf,
size_t buflen, struct group **gbufp);
int fgetgrent_r(FILE *fp, struct group *gbuf, char *buf,
size_t buflen, struct group **gbufp);
Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
getgrent_r(): _GNU_SOURCE
fgetgrent_r(): _SVID_SOURCE
DESCRIPTION
Les fonctions getgrent_r() et fgetgrent_r() sont les versions
ré-entrantes des fonctions getgrent(3) et fgetgrent(3). La première lit
l’enregistrement group suivant à partir du flux initialisé par
setgrent(3). La seconde lit l’enregistrement group suivant à partir du
flux fp passé en paramètre.
La structure group est définie dans <grp.h> de la manière suivante :
struct group {
char *gr_name; /* Nom du groupe */
char *gr_passwd; /* Mot de passe du groupe */
gid_t gr_gid; /* ID du groupe */
char **gr_mem; /* Membres du groupe*/
};
Les fonctions non ré-entrantes renvoient un pointeur sur une zone
statique, zone qui contient d’autres pointeurs vers le nom, le mot de
passe et les membres du groupe. Les fonctions ré-entrantes décrites ici
renvoient tout ceci dans des tampons fournis par l’appelant. Il y a
tout d’abord le tampon gbuf qui contient une structure group. Puis le
tampon buf de taille buflen qui contient les chaînes supplémentaires.
Le résultat de ces fonctions, la structure i<group> lue dans le flux,
est enregistré dans le tampon *gbuf fourni, et un pointeur vers cette
structure i<group> est renvoyé dans *gbufp.
VALEUR RENVOYÉE
Si elles réussissent, ces fonctions renvoient 0 et *gbufp est un
pointeur vers la structure group. Si elles échouent, ces fonctions
renvoient une valeur d’erreur et *gbufp est NULL.
ERREURS
ENOENT Plus d’entrées.
ERANGE L’espace tampon fourni est insuffisant. Veuillez essayer à
nouveau avec un tampon plus grand.
CONFORMITÉ À
Ces fonctions sont des extensions GNU, effectuées dans un style
ressemblant à la version POSIX de fonctions comme getpwnam_r(3).
D’autres systèmes utilisent le prototype
struct group *
getgrent_r(struct group *grp, char *buf, int buflen);
ou mieux,
int
getgrent_r(struct group *grp, char *buf, int buflen,
FILE **gr_fp);
NOTES
La fonction getgrent_r() n’est pas vraiment ré-entrante puisqu’elle
partage la position de lecture dans le flux avec tous les autres fils
(threads).
EXEMPLE
#define _GNU_SOURCE
#include <grp.h>
#include <stdio.h>
#define BUFLEN 4096
int
main(void)
{
struct group grp, *grpp;
char buf[BUFLEN];
int i;
setgrent();
while (1) {
i = getgrent_r(&grp, buf, BUFLEN, &grpp);
if (i)
break;
printf("%s (%d):", grpp->gr_name, grpp->gr_gid);
for (i = 0; ; i++) {
if (grpp->gr_mem[i] == NULL)
break;
printf(" %s", grpp->gr_mem[i]);
}
printf("\n");
}
endgrent();
exit(EXIT_SUCCESS);
}
VOIR AUSSI
fgetgrent(3), getgrent(3), getgrgid(3), getgrnam(3), putgrent(3),
group(5)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par Alain Portal
<aportal AT univ-montp2 DOT fr> entre 2004 et 2006, et mise à
disposition sur http://manpagesfr.free.fr/.
Les mises à jour et corrections de la version présente dans Debian sont
directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
francophone de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document
en utilisant la commande « man -L C <section> <page_de_man> ».