* nis/Makefile (libnsl-routimes): Add nss-default.
* nis/Versions (libnsl) [GLIBC_PRIVATE]: Export _nsl_default_nss. * nis/nss-nis.c: Move /etc/default/nss handling to... * nis/nss-default.c: ...here. New file. * nis/libnsl.h: New file. * nis/nss-nis.h: Remove NSS_FLAG_* definitions and _nis_default_nss plus auxilary definitions. * nis/nss_nis/nis-initgroups.c: Use _nsl_default_nss instead of _nis_default_nss. * nis/nss_nis/nis-service.c: Likewise. 2006-04-07 Steven Munroe <sjmunroe@us.ibm.com> * sysdeps/powerpc/fpu/bits/mathinline.h [__WORDSIZE == 64 || _ARCH_PWR4]: Define __CPU_HAS_FSQRT. (__ieee754_sqrt): Fix comment. (__ieee754_sqrtf): Fix comment. * sysdeps/powerpc/fpu/e_sqrt.c (__ieee754_sqrt): Fix comment. Check __CPU_HAS_FSQRT instead of dl_hwcap. * sysdeps/powerpc/fpu/e_sqrtf.c (__ieee754_sqrtf): Likewise.
This commit is contained in:
parent
70e228a7b7
commit
433f49c402
23
ChangeLog
23
ChangeLog
|
@ -1,3 +1,26 @@
|
|||
2006-04-13 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* nis/Makefile (libnsl-routimes): Add nss-default.
|
||||
* nis/Versions (libnsl) [GLIBC_PRIVATE]: Export _nsl_default_nss.
|
||||
* nis/nss-nis.c: Move /etc/default/nss handling to...
|
||||
* nis/nss-default.c: ...here. New file.
|
||||
* nis/libnsl.h: New file.
|
||||
* nis/nss-nis.h: Remove NSS_FLAG_* definitions and _nis_default_nss
|
||||
plus auxilary definitions.
|
||||
* nis/nss_nis/nis-initgroups.c: Use _nsl_default_nss instead of
|
||||
_nis_default_nss.
|
||||
* nis/nss_nis/nis-service.c: Likewise.
|
||||
|
||||
2006-04-07 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/fpu/bits/mathinline.h
|
||||
[__WORDSIZE == 64 || _ARCH_PWR4]: Define __CPU_HAS_FSQRT.
|
||||
(__ieee754_sqrt): Fix comment.
|
||||
(__ieee754_sqrtf): Fix comment.
|
||||
* sysdeps/powerpc/fpu/e_sqrt.c (__ieee754_sqrt): Fix comment.
|
||||
Check __CPU_HAS_FSQRT instead of dl_hwcap.
|
||||
* sysdeps/powerpc/fpu/e_sqrtf.c (__ieee754_sqrtf): Likewise.
|
||||
|
||||
2006-04-08 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* inet/inet_ntoa.c: Rewrite to use TLS instead of TSD.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (C) 1996, 1997, 1998, 2001, 2004 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1996,1997,1998,2001,2004,2006 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
|
||||
|
@ -54,7 +54,7 @@ libnsl-routines = yp_xdr ypclnt ypupdate_xdr \
|
|||
nis_print_group_entry nis_domain_of nis_domain_of_r\
|
||||
nis_modify nis_remove nis_add nis_defaults\
|
||||
nis_findserv nis_callback nis_clone_dir nis_clone_obj\
|
||||
nis_clone_res
|
||||
nis_clone_res nss-default
|
||||
|
||||
libnss_compat-routines := $(addprefix compat-,grp pwd spwd initgroups)
|
||||
libnss_compat-inhibit-o = $(filter-out .os,$(object-suffixes))
|
||||
|
|
|
@ -57,6 +57,9 @@ libnsl {
|
|||
GLIBC_2.2 {
|
||||
xdr_ypall;
|
||||
}
|
||||
GLIBC_PRIVATE {
|
||||
_nsl_default_nss;
|
||||
}
|
||||
}
|
||||
|
||||
libnss_compat {
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/* Copyright (C) 2005, 2006 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. */
|
||||
|
||||
#define NSS_FLAG_NETID_AUTHORITATIVE 1
|
||||
#define NSS_FLAG_SERVICES_AUTHORITATIVE 2
|
||||
|
||||
|
||||
/* Get current set of default flags. */
|
||||
extern int _nsl_default_nss (void);
|
|
@ -0,0 +1,117 @@
|
|||
/* Copyright (C) 1996, 2001, 2004, 2006 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. */
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdio_ext.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <bits/libc-lock.h>
|
||||
|
||||
#include <libnsl.h>
|
||||
|
||||
|
||||
/* Path of the file. */
|
||||
static const char default_nss[] = "/etc/default/nss";
|
||||
|
||||
/* Flags once read from the file. */
|
||||
static int default_nss_flags;
|
||||
|
||||
/* Code to make sure we call 'init' once. */
|
||||
__libc_once_define (static, once);
|
||||
|
||||
|
||||
static void
|
||||
init (void)
|
||||
{
|
||||
FILE *fp = fopen (default_nss, "rc");
|
||||
if (fp != NULL)
|
||||
{
|
||||
char *line = NULL;
|
||||
size_t linelen = 0;
|
||||
|
||||
__fsetlocking (fp, FSETLOCKING_BYCALLER);
|
||||
|
||||
while (!feof_unlocked (fp))
|
||||
{
|
||||
ssize_t n = getline (&line, &linelen, fp);
|
||||
if (n <= 0)
|
||||
break;
|
||||
|
||||
/* There currently are only two variables we expect, so
|
||||
simplify the parsing. Recognize only
|
||||
|
||||
NETID_AUTHORITATIVE = TRUE
|
||||
SERVICES_AUTHORITATIVE = TRUE
|
||||
|
||||
with arbitrary white spaces. */
|
||||
char *cp = line;
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
|
||||
/* Recognize comment lines. */
|
||||
if (*cp == '#')
|
||||
continue;
|
||||
|
||||
static const char netid_authoritative[] = "NETID_AUTHORITATIVE";
|
||||
static const char services_authoritative[]
|
||||
= "SERVICES_AUTHORITATIVE";
|
||||
size_t flag_len;
|
||||
if (strncmp (cp, netid_authoritative,
|
||||
flag_len = sizeof (netid_authoritative) - 1) != 0
|
||||
&& strncmp (cp, services_authoritative,
|
||||
flag_len = sizeof (services_authoritative) - 1)
|
||||
!= 0)
|
||||
continue;
|
||||
|
||||
cp += flag_len;
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
if (*cp++ != '=')
|
||||
continue;
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
|
||||
if (strncmp (cp, "TRUE", 4) != 0)
|
||||
continue;
|
||||
cp += 4;
|
||||
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
|
||||
if (*cp == '\0')
|
||||
default_nss_flags |= (flag_len == sizeof (netid_authoritative) - 1
|
||||
? NSS_FLAG_NETID_AUTHORITATIVE
|
||||
: NSS_FLAG_SERVICES_AUTHORITATIVE);
|
||||
}
|
||||
|
||||
free (line);
|
||||
|
||||
fclose (fp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
_nsl_default_nss (void)
|
||||
{
|
||||
/* If we have not yet read the file yet do it now. */
|
||||
__libc_once (once, init);
|
||||
|
||||
return default_nss_flags;
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 1996, 2001, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 2001, 2004, 2006 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
|
||||
|
@ -16,13 +16,6 @@
|
|||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <stdio_ext.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <rpcsvc/ypclnt.h>
|
||||
|
||||
#include "nss-nis.h"
|
||||
#include "nsswitch.h"
|
||||
|
||||
|
@ -50,81 +43,3 @@ const enum nss_status __yperr2nss_tab[] =
|
|||
};
|
||||
const unsigned int __yperr2nss_count = (sizeof (__yperr2nss_tab)
|
||||
/ sizeof (__yperr2nss_tab[0]));
|
||||
|
||||
int _nis_default_nss_flags;
|
||||
|
||||
static const char default_nss[] = "/etc/default/nss";
|
||||
|
||||
int
|
||||
_nis_check_default_nss (void)
|
||||
{
|
||||
FILE *fp = fopen (default_nss, "rc");
|
||||
int flags = NSS_FLAG_SET;
|
||||
if (fp != NULL)
|
||||
{
|
||||
char *line = NULL;
|
||||
size_t linelen = 0;
|
||||
|
||||
__fsetlocking (fp, FSETLOCKING_BYCALLER);
|
||||
|
||||
while (!feof_unlocked (fp))
|
||||
{
|
||||
ssize_t n = getline (&line, &linelen, fp);
|
||||
if (n <= 0)
|
||||
break;
|
||||
|
||||
/* There currently are only two variables we expect, so
|
||||
simplify the parsing. Recognize only
|
||||
|
||||
NETID_AUTHORITATIVE = TRUE
|
||||
SERVICES_AUTHORITATIVE = TRUE
|
||||
|
||||
with arbitrary white spaces. */
|
||||
char *cp = line;
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
|
||||
/* Recognize comment lines. */
|
||||
if (*cp == '#')
|
||||
continue;
|
||||
|
||||
static const char netid_authoritative[] = "NETID_AUTHORITATIVE";
|
||||
static const char services_authoritative[]
|
||||
= "SERVICES_AUTHORITATIVE";
|
||||
size_t flag_len;
|
||||
if (strncmp (cp, netid_authoritative,
|
||||
flag_len = sizeof (netid_authoritative) - 1) != 0
|
||||
&& strncmp (cp, services_authoritative,
|
||||
flag_len = sizeof (services_authoritative) - 1)
|
||||
!= 0)
|
||||
continue;
|
||||
|
||||
cp += flag_len;
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
if (*cp++ != '=')
|
||||
continue;
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
|
||||
if (strncmp (cp, "TRUE", 4) != 0)
|
||||
continue;
|
||||
cp += 4;
|
||||
|
||||
while (isspace (*cp))
|
||||
++cp;
|
||||
|
||||
if (*cp == '\0')
|
||||
flags |= flag_len == sizeof (netid_authoritative) - 1
|
||||
? NSS_FLAG_NETID_AUTHORITATIVE
|
||||
: NSS_FLAG_SERVICES_AUTHORITATIVE;
|
||||
}
|
||||
|
||||
free (line);
|
||||
|
||||
fclose (fp);
|
||||
}
|
||||
|
||||
_nis_default_nss_flags = flags;
|
||||
return flags;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (C) 1996, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996, 2004, 2006 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
|
||||
|
@ -36,16 +36,4 @@ yperr2nss (int errval)
|
|||
return __yperr2nss_tab[(unsigned int) errval];
|
||||
}
|
||||
|
||||
#define NSS_FLAG_SET 1
|
||||
#define NSS_FLAG_NETID_AUTHORITATIVE 2
|
||||
#define NSS_FLAG_SERVICES_AUTHORITATIVE 4
|
||||
extern int _nis_default_nss_flags attribute_hidden;
|
||||
extern int _nis_check_default_nss (void) attribute_hidden;
|
||||
|
||||
extern inline __attribute__((always_inline)) int
|
||||
_nis_default_nss (void)
|
||||
{
|
||||
return _nis_default_nss_flags ?: _nis_check_default_nss ();
|
||||
}
|
||||
|
||||
#endif /* nis/nss-nis.h */
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include <sys/param.h>
|
||||
|
||||
#include "nss-nis.h"
|
||||
#include <libnsl.h>
|
||||
|
||||
/* Get the declaration of the parser function. */
|
||||
#define ENTNAME grent
|
||||
|
@ -243,7 +244,7 @@ _nss_nis_initgroups_dyn (const char *user, gid_t group, long int *start,
|
|||
return NSS_STATUS_UNAVAIL;
|
||||
|
||||
/* Check whether we are supposed to use the netid.byname map. */
|
||||
if (_nis_default_nss () & NSS_FLAG_NETID_AUTHORITATIVE)
|
||||
if (_nsl_default_nss () & NSS_FLAG_NETID_AUTHORITATIVE)
|
||||
{
|
||||
/* We need the user ID. */
|
||||
uid_t uid;
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <rpcsvc/ypclnt.h>
|
||||
|
||||
#include "nss-nis.h"
|
||||
#include <libnsl.h>
|
||||
|
||||
|
||||
/* Get the declaration of the parser function. */
|
||||
|
@ -324,7 +325,7 @@ _nss_nis_getservbyname_r (const char *name, const char *protocol,
|
|||
}
|
||||
|
||||
/* Check if it is safe to rely on services.byservicename. */
|
||||
if (_nis_default_nss () & NSS_FLAG_SERVICES_AUTHORITATIVE)
|
||||
if (_nsl_default_nss () & NSS_FLAG_SERVICES_AUTHORITATIVE)
|
||||
return status;
|
||||
|
||||
struct ypall_callback ypcb;
|
||||
|
|
|
@ -129,7 +129,7 @@ __NTH (fdimf (float __x, float __y))
|
|||
#include <ldsodefs.h>
|
||||
#include <dl-procinfo.h>
|
||||
|
||||
# if __WORDSIZE == 64
|
||||
# if __WORDSIZE == 64 || defined _ARCH_PWR4
|
||||
# define __CPU_HAS_FSQRT 1
|
||||
# else
|
||||
# define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
|
||||
|
@ -141,7 +141,7 @@ __NTH (__ieee754_sqrt (double __x))
|
|||
{
|
||||
double __z;
|
||||
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions we. */
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions. */
|
||||
if (__CPU_HAS_FSQRT)
|
||||
{
|
||||
/* Volatile is required to prevent the compiler from moving the
|
||||
|
@ -163,7 +163,7 @@ __NTH (__ieee754_sqrtf (float __x))
|
|||
{
|
||||
float __z;
|
||||
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions we. */
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions. */
|
||||
if (__CPU_HAS_FSQRT)
|
||||
{
|
||||
/* Volatile is required to prevent the compiler from moving the
|
||||
|
|
|
@ -169,8 +169,8 @@ __ieee754_sqrt (x)
|
|||
{
|
||||
double z;
|
||||
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions we. */
|
||||
if ((GLRO (dl_hwcap) & PPC_FEATURE_64) != 0)
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions. */
|
||||
if (__CPU_HAS_FSQRT)
|
||||
{
|
||||
/* Volatile is required to prevent the compiler from moving the
|
||||
fsqrt instruction above the branch. */
|
||||
|
|
|
@ -146,8 +146,8 @@ __ieee754_sqrtf (x)
|
|||
{
|
||||
double z;
|
||||
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions we. */
|
||||
if ((GLRO (dl_hwcap) & PPC_FEATURE_64) != 0)
|
||||
/* If the CPU is 64-bit we can use the optional FP instructions. */
|
||||
if (__CPU_HAS_FSQRT)
|
||||
{
|
||||
/* Volatile is required to prevent the compiler from moving the
|
||||
fsqrt instruction above the branch. */
|
||||
|
|
Loading…
Reference in New Issue