1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-01 10:06:57 +03:00
2003-04-17  Ulrich Drepper  <drepper@redhat.com>

	* nss/getXXbyYY_r.c [USE_NSCD] (REENTRANT_NAME): Only retry
	contacting nscd if NOT_USENSCD_NAME > 0.
	* nss/nsswitch.c (__nss_disable_nscd): New function.
	* nss/nsswitch.h: Declare it.
	* nss/Versions [GLIBC_PRIVATE]: Export __nss_disable_nscd.
	* nscd/nscd.c (main): Call __nss_disable_nscd.
This commit is contained in:
Ulrich Drepper
2003-04-17 08:42:06 +00:00
parent f542ba5b79
commit ef4d5b32b3
7 changed files with 60 additions and 16 deletions

View File

@ -1,3 +1,12 @@
2003-04-17 Ulrich Drepper <drepper@redhat.com>
* nss/getXXbyYY_r.c [USE_NSCD] (REENTRANT_NAME): Only retry
contacting nscd if NOT_USENSCD_NAME > 0.
* nss/nsswitch.c (__nss_disable_nscd): New function.
* nss/nsswitch.h: Declare it.
* nss/Versions [GLIBC_PRIVATE]: Export __nss_disable_nscd.
* nscd/nscd.c (main): Call __nss_disable_nscd.
2003-04-16 Ulrich Drepper <drepper@redhat.com> 2003-04-16 Ulrich Drepper <drepper@redhat.com>
* stdio-common/perror.c (perror): We don't need to set the offset * stdio-common/perror.c (perror): We don't need to set the offset

View File

@ -14,6 +14,8 @@ escape_char /
% Charset: KOI8-U % Charset: KOI8-U
% Distribution and use is free, also % Distribution and use is free, also
% for commercial purposes. % for commercial purposes.
%
% Some collate fixes by Valentyn Solomko vesna@slovnyk.org
LC_IDENTIFICATION LC_IDENTIFICATION
title "Ukrainian locale for Ukraine" title "Ukrainian locale for Ukraine"
@ -25,8 +27,8 @@ tel ""
fax "" fax ""
language "Ukrainian" language "Ukrainian"
territory "Ukraine" territory "Ukraine"
revision "1.0" revision "1.3"
date "2000-06-29" date "2003-01-31"
% %
category "uk_UA:2000";LC_IDENTIFICATION category "uk_UA:2000";LC_IDENTIFICATION
category "uk_UA:2000";LC_CTYPE category "uk_UA:2000";LC_CTYPE
@ -47,19 +49,30 @@ copy "i18n"
END LC_CTYPE END LC_CTYPE
LC_COLLATE LC_COLLATE
copy "iso14651_t1" copy "iso14651_t1"
% iso14651_t1 is missing Ukrainian ghe % iso14651_t1 is missing Ukrainian ghe
collating-symbol <UKR-GHE> collating-symbol <UKR-GHE>
reorder-after <CYR-GZHE> reorder-after <CYR-GHE>
<UKR-GHE> <UKR-GHE>
reorder-after <U0453> reorder-after <U0433>
<U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE % <U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
<U0491> <CYR-GHE>;<UKR-GHE>;<MIN>;IGNORE
reorder-after <U0403> reorder-after <U0438>
<U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE % <U0456> <UKR-I>;<BAS>;<MIN>;IGNORE
<U0456> <CYR-I>;<UKR-I>;<MIN>;IGNORE
reorder-after <U0413>
% <U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
<U0490> <CYR-GHE>;<UKR-GHE>;<CAP>;IGNORE
reorder-after <U0418>
% <U0406> <UKR-I>;<BAS>;<CAP>;IGNORE
<U0406> <CYR-I>;<UKR-I>;<CAP>;IGNORE
reorder-end reorder-end
END LC_COLLATE END LC_COLLATE

View File

@ -41,6 +41,7 @@
#include "dbg_log.h" #include "dbg_log.h"
#include "nscd.h" #include "nscd.h"
#include "../nss/nsswitch.h"
#include <device-nrs.h> #include <device-nrs.h>
/* Get libc version number. */ /* Get libc version number. */
@ -213,6 +214,9 @@ main (int argc, char **argv)
/* Cleanup files created by a previous `bind'. */ /* Cleanup files created by a previous `bind'. */
unlink (_PATH_NSCDSOCKET); unlink (_PATH_NSCDSOCKET);
/* Make sure we do not get recursive calls. */
__nss_disable_nscd ();
/* Init databases. */ /* Init databases. */
nscd_init (conffile); nscd_init (conffile);

View File

@ -9,6 +9,7 @@ libc {
} }
GLIBC_PRIVATE { GLIBC_PRIVATE {
_nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent; _nss_files_parse_grent; _nss_files_parse_pwent; _nss_files_parse_spent;
__nss_disable_nscd;
} }
} }

View File

@ -163,7 +163,7 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
#endif #endif
#ifdef USE_NSCD #ifdef USE_NSCD
if (NOT_USENSCD_NAME && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY) if (NOT_USENSCD_NAME > 0 && ++NOT_USENSCD_NAME > NSS_NSCD_RETRY)
NOT_USENSCD_NAME = 0; NOT_USENSCD_NAME = 0;
if (!NOT_USENSCD_NAME) if (!NOT_USENSCD_NAME)

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc. /* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -39,6 +39,7 @@
#endif #endif
#include "nsswitch.h" #include "nsswitch.h"
#include "../nscd/nscd_proto.h"
/* Prototypes for the local functions. */ /* Prototypes for the local functions. */
static name_database *nss_parse_file (const char *fname) internal_function; static name_database *nss_parse_file (const char *fname) internal_function;
@ -696,6 +697,17 @@ nss_new_service (name_database *database, const char *name)
} }
/* Called by nscd and nscd alone. */
void
__nss_disable_nscd (void)
{
/* Disable all uses of NSCD. */
__nss_not_use_nscd_passwd = -1;
__nss_not_use_nscd_group = -1;
__nss_not_use_nscd_hosts = -1;
}
/* Free all resources if necessary. */ /* Free all resources if necessary. */
libc_freeres_fn (free_mem) libc_freeres_fn (free_mem)
{ {

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1996,1997,1998,1999,2001,2002 Free Software Foundation, Inc. /* Copyright (C) 1996-1999,2001,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -101,14 +101,15 @@ typedef struct name_database
If there is no configuration for this database in the file, If there is no configuration for this database in the file,
parse a service list from DEFCONFIG and use that. More parse a service list from DEFCONFIG and use that. More
than one function can use the database. */ than one function can use the database. */
int __nss_database_lookup (const char *database, const char *alternative_name, extern int __nss_database_lookup (const char *database,
const char *defconfig, service_user **ni); const char *alternative_name,
const char *defconfig, service_user **ni);
libc_hidden_proto (__nss_database_lookup) libc_hidden_proto (__nss_database_lookup)
/* Put first function with name FCT_NAME for SERVICE in FCTP. The /* Put first function with name FCT_NAME for SERVICE in FCTP. The
position is remembered in NI. The function returns a value < 0 if position is remembered in NI. The function returns a value < 0 if
an error occurred or no such function exists. */ an error occurred or no such function exists. */
int __nss_lookup (service_user **ni, const char *fct_name, void **fctp); extern int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
/* Determine the next step in the lookup process according to the /* Determine the next step in the lookup process according to the
result STATUS of the call to the last function returned by result STATUS of the call to the last function returned by
@ -123,13 +124,17 @@ int __nss_lookup (service_user **ni, const char *fct_name, void **fctp);
services. In other words, only if all four lookup results have services. In other words, only if all four lookup results have
the action RETURN associated the lookup process stops before the the action RETURN associated the lookup process stops before the
natural end. */ natural end. */
int __nss_next (service_user **ni, const char *fct_name, void **fctp, extern int __nss_next (service_user **ni, const char *fct_name, void **fctp,
int status, int all_values); int status, int all_values);
libc_hidden_proto (__nss_next) libc_hidden_proto (__nss_next)
/* Search for the service described in NI for a function named FCT_NAME /* Search for the service described in NI for a function named FCT_NAME
and return a pointer to this function if successful. */ and return a pointer to this function if successful. */
void *__nss_lookup_function (service_user *ni, const char *fct_name); extern void *__nss_lookup_function (service_user *ni, const char *fct_name);
/* Called by NSCD to disable recursive calls. */
extern void __nss_disable_nscd (void);
typedef int (*db_lookup_function) (service_user **, const char *, void **) typedef int (*db_lookup_function) (service_user **, const char *, void **)