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

NOM

       getpwent_r,  fgetpwent_r  -  Obtenir  un  enregistrement  du  fichier  passwd  de  manière
       réentrante

SYNOPSIS

       #include <pwd.h>

       int getpwent_r(struct passwd *pwbuf, char *buf,
                      size_t buflen, struct passwd **pwbufp);

       int fgetpwent_r(FILE *fp, struct passwd *pwbuf, char *buf,
                       size_t buflen, struct passwd **pwbufp);

   Exigences   de   macros   de   test   de   fonctionnalités   pour    la    glibc    (consultez
   feature_test_macros(7)) :

       getpwent_r() : _BSD_SOURCE || _SVID_SOURCE
       fgetpwent_r() : _SVID_SOURCE

DESCRIPTION

       Les  fonctions  getpwent_r()  et fgetpwent_r() sont les versions réentrantes des fonctions
       getpwent(3) et fgetpwent(3). La première lit l'enregistrement passwd suivant à  partir  du
       flux  initialisé  par setpwent(3). La seconde lit l'enregistrement passwd suivant à partir
       du flux fp.

       La structure passwd est définie dans <pwd.h> comme ceci :

           struct passwd {
               char    *pw_name;      /* Nom d'utilisateur */
               char    *pw_passwd;    /* Mot de passe de l'utilisateur */
               uid_t    pw_uid;       /* ID de l'utilisateur */
               gid_t    pw_gid;       /* ID du groupe */
               char    *pw_gecos;     /* Information utilisateur */
               char    *pw_dir;       /* Répertoire personnel */
               char    *pw_shell;     /* Interpréteur de commande */
           };

       Pour plus d'informations à propos des champs de cette structure, consultez passwd(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, le champ gecos, le répertoire
       personnel et le shell de l'utilisateur. 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 pwbuf qui
       contient une structure passwd. Puis le tampon  buf  de  taille  buflen  qui  contient  les
       chaînes  supplémentaires.  Le  résultat  de ces fonctions, la structure passwd lue dans le
       flux, est enregistré dans le tampon *pwbuf fourni, et un  pointeur  vers  cette  structure
       passwd est renvoyé dans *pwbufp.

VALEUR RENVOYÉE

       Si  elles  réussissent,  ces  fonctions  renvoient  0  et  *pwbufp est un pointeur vers la
       structure passwd. Si elles échouent,  ces  fonctions  renvoient  une  valeur  d'erreur  et
       *pwbufp 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 passwd *
           getpwent_r(struct passwd *pwd, char *buf, int buflen);

       ou mieux,

           int
           getpwent_r(struct passwd *pwd, char *buf, int buflen,
                      FILE **pw_fp);

NOTES

       La  fonction getpwent_r() n'est pas vraiment réentrante puisqu'elle partage la position de
       lecture dans le flux avec tous les autres threads.

EXEMPLE

       #define _GNU_SOURCE
       #include <pwd.h>
       #include <stdio.h>
       #define BUFLEN 4096

       int
       main(void)
       {
           struct passwd pw, *pwp;
           char buf[BUFLEN];
           int i;

           setpwent();
           while (1) {
               i = getpwent_r(&pw, buf, BUFLEN, &pwp);
               if (i)
                   break;
               printf("%s (%d)\tHOME %s\tSHELL %s\n", pwp->pw_name,
                      pwp->pw_uid, pwp->pw_dir, pwp->pw_shell);
           }
           endpwent();
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       fgetpwent(3), getpw(3), getpwent(3), getpwnam(3), getpwuid(3), putpwent(3), passwd(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/>.

       Christophe   Blaess   <http://www.blaess.fr/christophe/>   (1996-2003),    Alain    Portal
       <http://manpagesfr.free.fr/>  (2003-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> ».