Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       getgrent_r, fgetgrent_r - Obtenir un enregistrement du fichier group de
       maniere reentrante

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 fonctionnalites  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
       reentrantes des fonctions getgrent(3) et fgetgrent(3). La premiere  lit
       l'enregistrement   group  suivant  a  partir  du  flux  initialise  par
       setgrent(3). La seconde lit l'enregistrement group suivant a partir  du
       flux fp.

       La structure group est definie 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*/
           };

       Les  fonctions  non  reentrantes  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 reentrantes decrites 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  chaines  supplementaires.
       Le  resultat de ces fonctions, la structure group lue dans le flux, est
       enregistre dans le tampon *gbuf  fourni,  et  un  pointeur  vers  cette
       structure group est renvoye dans *gbufp.

VALEUR RENVOY'EE

       Si  elles  reussissent,  ces  fonctions  renvoient  0  et *gbufp est un
       pointeur vers la structure group.  Si  elles  echouent,  ces  fonctions
       renvoient une valeur d'erreur et *gbufp est NULL.

ERREURS

       ENOENT Plus d'entrees.

       ERANGE L'espace  tampon  fourni  est  insuffisant.  Veuillez  essayer a
              nouveau avec un tampon plus grand.

CONFORMIT'E

       Ces fonctions  sont  des  extensions  GNU,  effectuees  dans  un  style
       ressemblant  a  la  version  POSIX  de  fonctions  comme getpwnam_r(3).
       D'autres systemes 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  reentrante  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.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

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

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

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.