LCOV - code coverage report
Current view: top level - usr/include - pwd.h (source / functions) Hit Total Coverage
Test: coverage report for master 2f515e9b Lines: 8 8 100.0 %
Date: 2024-04-21 15:09:00 Functions: 8 8 100.0 %

          Line data    Source code
       1             : /* Copyright (C) 1991-2022 Free Software Foundation, Inc.
       2             :    This file is part of the GNU C Library.
       3             : 
       4             :    The GNU C Library is free software; you can redistribute it and/or
       5             :    modify it under the terms of the GNU Lesser General Public
       6             :    License as published by the Free Software Foundation; either
       7             :    version 2.1 of the License, or (at your option) any later version.
       8             : 
       9             :    The GNU C Library is distributed in the hope that it will be useful,
      10             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      11             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12             :    Lesser General Public License for more details.
      13             : 
      14             :    You should have received a copy of the GNU Lesser General Public
      15             :    License along with the GNU C Library; if not, see
      16             :    <https://www.gnu.org/licenses/>.  */
      17             : 
      18             : /*
      19             :  *      POSIX Standard: 9.2.2 User Database Access      <pwd.h>
      20             :  */
      21             : 
      22             : #ifndef _PWD_H
      23             : #define _PWD_H  1
      24             : 
      25             : #include <features.h>
      26             : 
      27             : __BEGIN_DECLS
      28             : 
      29             : #include <bits/types.h>
      30             : 
      31             : #define __need_size_t
      32             : #include <stddef.h>
      33             : 
      34             : #if defined __USE_XOPEN || defined __USE_XOPEN2K
      35             : /* The Single Unix specification says that some more types are
      36             :    available here.  */
      37             : # ifndef __gid_t_defined
      38             : typedef __gid_t gid_t;
      39             : #  define __gid_t_defined
      40             : # endif
      41             : 
      42             : # ifndef __uid_t_defined
      43             : typedef __uid_t uid_t;
      44             : #  define __uid_t_defined
      45             : # endif
      46             : #endif
      47             : 
      48             : /* A record in the user database.  */
      49             : struct passwd
      50             : {
      51             :   char *pw_name;                /* Username.  */
      52             :   char *pw_passwd;              /* Hashed passphrase, if shadow database
      53             :                                    not in use (see shadow.h).  */
      54             :   __uid_t pw_uid;               /* User ID.  */
      55             :   __gid_t pw_gid;               /* Group ID.  */
      56             :   char *pw_gecos;               /* Real name.  */
      57             :   char *pw_dir;                 /* Home directory.  */
      58             :   char *pw_shell;               /* Shell program.  */
      59             : };
      60             : 
      61             : 
      62             : #ifdef __USE_MISC
      63             : # include <bits/types/FILE.h>
      64             : #endif
      65             : 
      66             : 
      67             : #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
      68             : /* Rewind the user database stream.
      69             : 
      70             :    This function is a possible cancellation point and therefore not
      71             :    marked with __THROW.  */
      72         362 : extern void setpwent (void);
      73             : 
      74             : /* Close the user database stream.
      75             : 
      76             :    This function is a possible cancellation point and therefore not
      77             :    marked with __THROW.  */
      78       12620 : extern void endpwent (void);
      79             : 
      80             : /* Read an entry from the user database stream, opening it if necessary.
      81             : 
      82             :    This function is a possible cancellation point and therefore not
      83             :    marked with __THROW.  */
      84       54122 : extern struct passwd *getpwent (void);
      85             : #endif
      86             : 
      87             : #ifdef  __USE_MISC
      88             : /* Read a user database entry from STREAM.
      89             : 
      90             :    This function is not part of POSIX and therefore no official
      91             :    cancellation point.  But due to similarity with an POSIX interface
      92             :    or due to the implementation it is a cancellation point and
      93             :    therefore not marked with __THROW.  */
      94             : extern struct passwd *fgetpwent (FILE *__stream) __nonnull ((1));
      95             : 
      96             : /* Write a given user database entry onto the given stream.
      97             : 
      98             :    This function is not part of POSIX and therefore no official
      99             :    cancellation point.  But due to similarity with an POSIX interface
     100             :    or due to the implementation it is a cancellation point and
     101             :    therefore not marked with __THROW.  */
     102             : extern int putpwent (const struct passwd *__restrict __p,
     103             :                      FILE *__restrict __f);
     104             : #endif
     105             : 
     106             : /* Retrieve the user database entry for the given user ID.
     107             : 
     108             :    This function is a possible cancellation point and therefore not
     109             :    marked with __THROW.  */
     110      142450 : extern struct passwd *getpwuid (__uid_t __uid);
     111             : 
     112             : /* Retrieve the user database entry for the given username.
     113             : 
     114             :    This function is a possible cancellation point and therefore not
     115             :    marked with __THROW.  */
     116       66314 : extern struct passwd *getpwnam (const char *__name) __nonnull ((1));
     117             : 
     118             : #ifdef __USE_POSIX
     119             : 
     120             : # ifdef __USE_MISC
     121             : /* Reasonable value for the buffer sized used in the reentrant
     122             :    functions below.  But better use `sysconf'.  */
     123             : #  define NSS_BUFLEN_PASSWD     1024
     124             : # endif
     125             : 
     126             : /* Reentrant versions of some of the functions above.
     127             : 
     128             :    PLEASE NOTE: the `getpwent_r' function is not (yet) standardized.
     129             :    The interface may change in later versions of this library.  But
     130             :    the interface is designed following the principals used for the
     131             :    other reentrant functions so the chances are good this is what the
     132             :    POSIX people would choose.  */
     133             : 
     134             : # ifdef __USE_MISC
     135             : /* This function is not part of POSIX and therefore no official
     136             :    cancellation point.  But due to similarity with an POSIX interface
     137             :    or due to the implementation it is a cancellation point and
     138             :    therefore not marked with __THROW.  */
     139        1608 : extern int getpwent_r (struct passwd *__restrict __resultbuf,
     140             :                        char *__restrict __buffer, size_t __buflen,
     141             :                        struct passwd **__restrict __result)
     142             :     __nonnull ((1, 2, 4))
     143             :     __attr_access ((__write_only__, 2, 3));
     144             : # endif
     145             : 
     146        4742 : extern int getpwuid_r (__uid_t __uid,
     147             :                        struct passwd *__restrict __resultbuf,
     148             :                        char *__restrict __buffer, size_t __buflen,
     149             :                        struct passwd **__restrict __result)
     150             :     __nonnull ((2, 3, 5))
     151             :     __attr_access ((__write_only__, 3, 4));
     152             : 
     153       49132 : extern int getpwnam_r (const char *__restrict __name,
     154             :                        struct passwd *__restrict __resultbuf,
     155             :                        char *__restrict __buffer, size_t __buflen,
     156             :                        struct passwd **__restrict __result)
     157             :     __nonnull ((1, 2, 3, 5))
     158             :     __attr_access ((__write_only__, 3, 4));
     159             : 
     160             : 
     161             : # ifdef __USE_MISC
     162             : /* Read a user database entry from STREAM.  This function is not
     163             :    standardized and probably never will.
     164             : 
     165             :    This function is not part of POSIX and therefore no official
     166             :    cancellation point.  But due to similarity with an POSIX interface
     167             :    or due to the implementation it is a cancellation point and
     168             :    therefore not marked with __THROW.  */
     169             : extern int fgetpwent_r (FILE *__restrict __stream,
     170             :                         struct passwd *__restrict __resultbuf,
     171             :                         char *__restrict __buffer, size_t __buflen,
     172             :                         struct passwd **__restrict __result)
     173             :     __nonnull ((1, 2, 3, 5))
     174             :     __attr_access ((__write_only__, 3, 4));
     175             : # endif
     176             : 
     177             : #endif  /* POSIX or reentrant */
     178             : 
     179             : #ifdef __USE_GNU
     180             : /* Write a traditional /etc/passwd line, based on the user database
     181             :    entry for the given UID, to BUFFER; space for BUFFER must be
     182             :    allocated by the caller.
     183             : 
     184             :    This function is not part of POSIX and therefore no official
     185             :    cancellation point.  But due to similarity with an POSIX interface
     186             :    or due to the implementation it is a cancellation point and
     187             :    therefore not marked with __THROW.  */
     188             : extern int getpw (__uid_t __uid, char *__buffer);
     189             : #endif
     190             : 
     191             : __END_DECLS
     192             : 
     193             : #endif /* pwd.h  */

Generated by: LCOV version 1.14