mirror of https://gitee.com/Nocallback/glibc.git
Browse Source
Mon Aug 12 04:33:09 1996 Ulrich Drepper <drepper@cygnus.com> * nss/nsswitch.c (__nss_database_lookup): Always release locks before returning. Reported by Miles Bader. (distributes): Add databases.def.cvs/thomas-posix1996 cvs/libc-ud-960811-2
16 changed files with 271 additions and 79 deletions
@ -0,0 +1,45 @@ |
|||
#! /bin/sh |
|||
# interlock - wrap program invocation in lock to allow |
|||
# parallel builds to work. |
|||
# Written by Tom Tromey <tromey@cygnus.com>, Aug 10 1996 |
|||
# |
|||
# This program is free software; you can redistribute it and/or modify |
|||
# it under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation; either version 2, or (at your option) |
|||
# any later version. |
|||
# |
|||
# This program 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 General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with this program; if not, write to the Free Software |
|||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
|||
|
|||
# Usage: |
|||
# interlock lock-dir-name program args-to-program... |
|||
|
|||
dirname="$1" |
|||
program="$2" |
|||
|
|||
shift |
|||
shift |
|||
|
|||
while (mkdir $dirname > /dev/null 2>&1 && exit 1 || exit 0); do |
|||
# Wait a bit. |
|||
sleep 1 |
|||
done |
|||
|
|||
# Race condition here: if interrupted after the loop but before this |
|||
# trap, the lock can be left around. |
|||
trap "rmdir $dirname > /dev/null 2>&1" 1 2 3 15 |
|||
|
|||
# We have the lock, so run the program. |
|||
$program ${1+"$@"} |
|||
ret=$? |
|||
|
|||
# Release the lock. |
|||
rmdir $dirname > /dev/null 2>&1 |
|||
|
|||
exit $ret |
|||
@ -0,0 +1 @@ |
|||
#include <nss/nss.h> |
|||
@ -0,0 +1,31 @@ |
|||
/* List of all databases defined for the NSS in GNU C Library. |
|||
Copyright (C) 1996 Free Software Foundation, Inc. |
|||
This file is part of the GNU C Library. |
|||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. |
|||
|
|||
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. |
|||
|
|||
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. |
|||
|
|||
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. */ |
|||
|
|||
/* This list must be kept sorted!!! */ |
|||
|
|||
DEFINE_DATABASE (ethers) |
|||
DEFINE_DATABASE (group) |
|||
DEFINE_DATABASE (hosts) |
|||
DEFINE_DATABASE (networks) |
|||
DEFINE_DATABASE (passwd) |
|||
DEFINE_DATABASE (protocols) |
|||
DEFINE_DATABASE (rpc) |
|||
DEFINE_DATABASE (services) |
|||
DEFINE_DATABASE (shadow) |
|||
@ -0,0 +1,54 @@ |
|||
/* Copyright (C) 1996 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. |
|||
|
|||
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. |
|||
|
|||
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. */ |
|||
|
|||
/* Define interface to NSS. This is meant for the interface functions
|
|||
and for implementors of new services. */ |
|||
|
|||
#ifndef _NSS_H |
|||
|
|||
#define _NSS_H 1 |
|||
#include <features.h> |
|||
|
|||
/* Revision number of NSS interface (must be a string). */ |
|||
#define NSS_SHLIB_REVISION ".1" |
|||
|
|||
|
|||
__BEGIN_DECLS |
|||
|
|||
/* Possible results of lookup using a nss_* function. */ |
|||
enum nss_status |
|||
{ |
|||
NSS_STATUS_TRYAGAIN = -2, |
|||
NSS_STATUS_UNAVAIL, |
|||
NSS_STATUS_NOTFOUND, |
|||
NSS_STATUS_SUCCESS, |
|||
}; |
|||
|
|||
|
|||
/* Overwrite service selection for database DBNAME using specification
|
|||
in STRING. |
|||
This function should only be used by system programs which have to |
|||
work around non-existing services (e.e., while booting). |
|||
Attention: Using this function repeatedly will slowly eat up the |
|||
whole memory since previous selection data cannot be freed. */ |
|||
extern int __nss_configure_lookup __P ((__const char *__dbname, |
|||
__const char *__string)); |
|||
|
|||
__END_DECLS |
|||
|
|||
#endif /* nss.h */ |
|||
Loading…
Reference in new issue