hush: fix a bug in argv restoration after sourcing a file
[oweals/busybox.git] / include / shadow_.h
index a677d5262667e5cffe6bd3f063a491b2399ed0e8..8e2581e7cddafbdf3f254df574268d1beb48baf5 100644 (file)
-/*
- * Copyright 1988 - 1994, Julianne Frances Haugh <jockgrrl@austin.rr.com>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Julianne F. Haugh nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef        _H_SHADOW
-#define        _H_SHADOW
-
-
-#ifdef USE_SYSTEM_SHADOW
-#include <shadow.h>
-#else
-
-/*
- * This information is not derived from AT&T licensed sources.  Posted
- * to the USENET 11/88, and updated 11/90 with information from SVR4.
- *
- *     $Id: shadow_.h,v 1.1 2002/06/23 04:24:20 andersen Exp $
- */
-
-typedef long sptime;
-
-/*
- * Shadow password security file structure.
- */
+/* vi: set sw=4 ts=4: */
+/* Copyright (C) 1996, 1997, 1998, 1999 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 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* Declaration of types and functions for shadow password suite */
+
+#ifndef BB_SHADOW_H
+#define BB_SHADOW_H 1
+
+PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
+
+/* Structure of the password file */
 struct spwd {
-       char *sp_namp;                          /* login name */
-       char *sp_pwdp;                          /* encrypted password */
-       sptime sp_lstchg;                       /* date of last change */
-       sptime sp_min;                          /* minimum number of days between changes */
-       sptime sp_max;                          /* maximum number of days between changes */
-       sptime sp_warn;                         /* number of days of warning before password
-                                                                  expires */
-       sptime sp_inact;                        /* number of days after password expires
-                                                                  until the account becomes unusable. */
-       sptime sp_expire;                       /* days since 1/1/70 until account expires */
-       unsigned long sp_flag;          /* reserved for future use */
+       char *sp_namp;          /* Login name */
+       char *sp_pwdp;          /* Encrypted password */
+       long sp_lstchg;         /* Date of last change */
+       long sp_min;            /* Minimum number of days between changes */
+       long sp_max;            /* Maximum number of days between changes */
+       long sp_warn;           /* Number of days to warn user to change the password */
+       long sp_inact;          /* Number of days the account may be inactive */
+       long sp_expire;         /* Number of days since 1970-01-01 until account expires */
+       unsigned long sp_flag;  /* Reserved */
 };
 
-/*
- * Shadow password security file functions.
- */
+#define setspent    bb_internal_setspent
+#define endspent    bb_internal_endspent
+#define getspent    bb_internal_getspent
+#define getspnam    bb_internal_getspnam
+#define sgetspent   bb_internal_sgetspent
+#define fgetspent   bb_internal_fgetspent
+#define putspent    bb_internal_putspent
+#define getspent_r  bb_internal_getspent_r
+#define getspnam_r  bb_internal_getspnam_r
+#define sgetspent_r bb_internal_sgetspent_r
+#define fgetspent_r bb_internal_fgetspent_r
+#define lckpwdf     bb_internal_lckpwdf
+#define ulckpwdf    bb_internal_ulckpwdf
+
+
+/* All function names below should be remapped by #defines above
+ * in order to not collide with libc names. */
+
+#ifdef UNUSED_FOR_NOW
+/* Open database for reading */
+void FAST_FUNC setspent(void);
+
+/* Close database */
+void FAST_FUNC endspent(void);
+
+/* Get next entry from database, perhaps after opening the file */
+struct spwd* FAST_FUNC getspent(void);
+
+/* Get shadow entry matching NAME */
+struct spwd* FAST_FUNC getspnam(const char *__name);
+
+/* Read shadow entry from STRING */
+struct spwd* FAST_FUNC sgetspent(const char *__string);
+
+/* Read next shadow entry from STREAM */
+struct spwd* FAST_FUNC fgetspent(FILE *__stream);
+
+/* Write line containing shadow password entry to stream */
+int FAST_FUNC putspent(const struct spwd *__p, FILE *__stream);
+
+/* Reentrant versions of some of the functions above */
+int FAST_FUNC getspent_r(struct spwd *__result_buf, char *__buffer,
+               size_t __buflen, struct spwd **__result);
+#endif
+
+int FAST_FUNC getspnam_r(const char *__name, struct spwd *__result_buf,
+               char *__buffer, size_t __buflen,
+               struct spwd **__result);
+
+#ifdef UNUSED_FOR_NOW
+int FAST_FUNC sgetspent_r(const char *__string, struct spwd *__result_buf,
+               char *__buffer, size_t __buflen,
+               struct spwd **__result);
 
-#include <stdio.h>                             /* for FILE */
+int FAST_FUNC fgetspent_r(FILE *__stream, struct spwd *__result_buf,
+               char *__buffer, size_t __buflen,
+               struct spwd **__result);
+/* Protect password file against multi writers */
+int FAST_FUNC lckpwdf(void);
 
-extern struct spwd *getspent(void);
-extern struct spwd *sgetspent(const char *);
-extern struct spwd *fgetspent(FILE *);
-extern void setspent(void);
-extern void endspent(void);
-extern int putspent(const struct spwd *, FILE *);
-extern struct spwd *getspnam(const char *name);
-extern struct spwd *pwd_to_spwd(const struct passwd *pw);
+/* Unlock password file */
+int FAST_FUNC ulckpwdf(void);
+#endif
 
-#endif                                                 /* USE_LOCAL_SHADOW */
+POP_SAVED_FUNCTION_VISIBILITY
 
-#endif                                                 /* _H_SHADOW */
+#endif /* shadow.h */