Provided by: manpages-fr_1.67.0-1_all bug

NOM

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

SYNOPSIS

       #define _GNU_SOURCE
       #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);

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 passé en paramètre.

       La structure passwd est définie dans <pwd.h> de la manière suivante :

              struct passwd {
                    char    *pw_name;      /* nom de l’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;     /* shell */
              };

       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.

EXEMPLE

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

       int main() {
             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();
             return 0;
       }

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 fils
       (threads).

VOIR AUSSI

       fgetpwent(3),   getpwent(3),   getpwnam(3),   getpwuid(3),    getpw(3),
       putpwent(3), passwd(5)

TRADUCTION

       Ce  document  est  une traduction réalisée par Alain Portal <aportal AT
       univ-montp2 DOT fr> le 8 juillet 2005 et révisée le 14 décembre 2005.

       L’équipe de traduction a fait le maximum pour réaliser  une  adaptation
       française de qualité. La version anglaise la plus à jour de ce document
       est      toujours       consultable       via       la       commande :
       « LANG=en man 3 getpwent_r ».   N’hésitez  pas à signaler à l’auteur ou
       au traducteur, selon le cas, toute erreur dans cette page de manuel.