]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - shadow/shadow.h
powerpc: fma using builtins
[thirdparty/glibc.git] / shadow / shadow.h
index 1ebb0ae5e4a58d8bbf8d8aae32e22fd62856b049..d8635db0b118faa7f63bfaf22b26eb5e1869cf92 100644 (file)
@@ -1,22 +1,25 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2019 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
 
    The GNU C Library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
+   Lesser General Public License for more details.
 
-   You should have received a copy of the GNU Library General Public
-   License along with the GNU C Library; see the file COPYING.LIB.  If not,
-   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
 
-/* Declaration of types and functions for shadow password suite.  */
+/* Declaration of types and functions for "shadow" storage of hashed
+   passphrases.  The shadow database is like the user database, but is
+   only accessible with special privileges, so that malicious users
+   cannot retrieve everyone else's hashed passphrase to brute-force at
+   their convenience.  */
 
 #ifndef _SHADOW_H
 #define _SHADOW_H      1
 
 #include <paths.h>
 
-#define        __need_FILE
-#include <stdio.h>
 #define __need_size_t
 #include <stddef.h>
 
+#include <bits/types/FILE.h>
+
 /* Paths to the user database files.  */
 #define        SHADOW _PATH_SHADOW
 
 
 __BEGIN_DECLS
 
-/* Structure of the password file.  */
+/* A record in the shadow database.  */
 struct spwd
   {
     char *sp_namp;             /* Login name.  */
-    char *sp_pwdp;             /* Encrypted password.  */
+    char *sp_pwdp;             /* Hashed passphrase.  */
     long int sp_lstchg;                /* Date of last change.  */
     long int sp_min;           /* Minimum number of days between changes.  */
     long int sp_max;           /* Maximum number of days between changes.  */
@@ -54,51 +57,95 @@ struct spwd
   };
 
 
-/* Open database for reading.  */
-extern void setspent __P ((void));
+/* Open database for reading.
 
-/* Close database.  */
-extern void endspent __P ((void));
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern void setspent (void);
 
-/* Get next entry from database, perhaps after opening the file.  */
-extern struct spwd *getspent __P ((void));
+/* Close database.
 
-/* Get shadow entry matching NAME.  */
-extern struct spwd *getspnam __P ((__const char *__name));
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern void endspent (void);
 
-/* Read shadow entry from STRING.  */
-extern struct spwd *sgetspent __P ((__const char *__string));
+/* Get next entry from database, perhaps after opening the file.
 
-/* Read next shadow entry from STREAM.  */
-extern struct spwd *fgetspent __P ((FILE *__stream));
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern struct spwd *getspent (void);
 
-/* Write line containing shadow password entry to stream.  */
-extern int putspent __P ((__const struct spwd *__p, FILE *__stream));
+/* Get shadow entry matching NAME.
 
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern struct spwd *getspnam (const char *__name);
 
-#ifdef __USE_MISC
-/* Reentrant versions of some of the functions above.  */
-extern int getspent_r __P ((struct spwd *__result_buf, char *__buffer,
-                           size_t __buflen, struct spwd **__result));
+/* Read shadow entry from STRING.
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern struct spwd *sgetspent (const char *__string);
+
+/* Read next shadow entry from STREAM.
+
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern struct spwd *fgetspent (FILE *__stream);
 
-extern int getspnam_r __P ((__const char *__name, struct spwd *__result_buf,
-                           char *__buffer, size_t __buflen,
-                           struct spwd **__result));
+/* Write line containing shadow entry to stream.
 
-extern int sgetspent_r __P ((__const char *__string, struct spwd *__result_buf,
-                            char *__buffer, size_t __buflen,
-                            struct spwd **__result));
+   This function is not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation it is a cancellation point and
+   therefore not marked with __THROW.  */
+extern int putspent (const struct spwd *__p, FILE *__stream);
 
-extern int fgetspent_r __P ((FILE *__stream, struct spwd *__result_buf,
-                            char *__buffer, size_t __buflen,
-                            struct spwd **__result));
+
+#ifdef __USE_MISC
+/* Reentrant versions of some of the functions above.
+
+   These functions are not part of POSIX and therefore no official
+   cancellation point.  But due to similarity with an POSIX interface
+   or due to the implementation they are cancellation points and
+   therefore not marked with __THROW.  */
+extern int getspent_r (struct spwd *__result_buf, char *__buffer,
+                      size_t __buflen, struct spwd **__result);
+
+extern int getspnam_r (const char *__name, struct spwd *__result_buf,
+                      char *__buffer, size_t __buflen,
+                      struct spwd **__result);
+
+extern int sgetspent_r (const char *__string, struct spwd *__result_buf,
+                       char *__buffer, size_t __buflen,
+                       struct spwd **__result);
+
+extern int fgetspent_r (FILE *__stream, struct spwd *__result_buf,
+                       char *__buffer, size_t __buflen,
+                       struct spwd **__result);
 #endif /* misc */
 
-/* Protect password file against multi writers.  */
-extern int lckpwdf __P ((void));
 
-/* Unlock password file.  */
-extern int ulckpwdf __P ((void));
+/* The simple locking functionality provided here is not suitable for
+   multi-threaded applications.  */
+
+/* Request exclusive access to /etc/passwd and /etc/shadow.  */
+extern int lckpwdf (void) __THROW;
+
+/* Release exclusive access to /etc/passwd and /etc/shadow.  */
+extern int ulckpwdf (void) __THROW;
 
 __END_DECLS