Loading

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  (voir
   feature_test_macros(7)) :

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

       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;     /* Nom réel */
               char    *pw_dir;       /* Répertoire personnel */
               char    *pw_shell;     /* Interpréteur de commande */
           };

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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 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> ».