Provided by: manpages-fr-dev_3.57d1p1-1_all bug

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);

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consultez
   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.

       La structure group est définie dans <grp.h> comme ceci :

           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*/
           };

       Pour plus d'informations à propos des champs de cette structure, consultez group(5).

       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 group lue dans le  flux,  est  enregistré  dans  le  tampon  *gbuf
       fourni, et un pointeur vers cette structure 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>
       #include <stdlib.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)

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux.  Une  description
       du  projet  et  des  instructions  pour  signaler  des  anomalies  peuvent être trouvées à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis   2010,   cette   traduction   est   maintenue   à   l'aide   de    l'outil    po4a
       <http://po4a.alioth.debian.org/>  par l'équipe de traduction francophone au sein du projet
       perkamon <http://perkamon.alioth.debian.org/>.

       Alain  Portal  <http://manpagesfr.free.fr/> (2004-2006).  Florentin  Duneau  et   l'équipe
       francophone de traduction de Debian (2006-2009).

       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> ».