Provided by: manpages-fr-dev_2.64.1-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);

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