File nscd-libnsl.patch of Package glibc.7761
2017-10-11 Andreas Schwab <schwab@suse.de>
* nis/Makefile (aux): Remove.
* nscd/Makefile (aux): Add nscd_hash.
(nscd-modules): Likewise.
($(objpfx)nscd): Don't depend on libnsl.
* nscd/nscd_hash.c: New file.
* nscd/nscd_hash.h: Likewise.
* nscd/cache.c: Include "nscd_hash.h" instead of <rpcsvc/nis.h>.
(cache_search, cache_add): Use __nscd_hash instead of __nis_hash.
* nscd/nscd_helper.c: Include <sys/param.h> and "nscd_hash.h"
instead of <nis/rpcsvc/nis.h>.
(__nscd_cache_search): Use __nscd_hash instead of __nis_hash.
Index: glibc-2.26/nis/Makefile
===================================================================
--- glibc-2.26.orig/nis/Makefile
+++ glibc-2.26/nis/Makefile
@@ -22,8 +22,6 @@ subdir := nis
include ../Makeconfig
-aux := nis_hash
-
ifeq ($(build-obsolete-nsl),yes)
headers := $(wildcard rpcsvc/*.[hx])
Index: glibc-2.26/nscd/Makefile
===================================================================
--- glibc-2.26.orig/nscd/Makefile
+++ glibc-2.26/nscd/Makefile
@@ -25,7 +25,7 @@ include ../Makeconfig
ifneq ($(use-nscd),no)
routines := nscd_getpw_r nscd_getgr_r nscd_gethst_r nscd_getai \
nscd_initgroups nscd_getserv_r nscd_netgroup
-aux := nscd_helper
+aux := nscd_helper nscd_hash
endif
# To find xmalloc.c
@@ -36,7 +36,7 @@ nscd-modules := nscd connections pwdcach
getsrvbynm_r getsrvbypt_r servicescache \
dbg_log nscd_conf nscd_stat cache mem nscd_setup_thread \
xmalloc xstrdup aicache initgrcache gai res_hconf \
- netgroupcache
+ netgroupcache nscd_hash
ifeq ($(build-nscd)$(have-thread-library),yesyes)
@@ -97,7 +97,7 @@ include $(patsubst %,$(..)libof-iterator
$(objpfx)nscd: $(nscd-modules:%=$(objpfx)%.o)
ifeq ($(build-shared),yes)
-$(objpfx)nscd: $(shared-thread-library) $(common-objpfx)nis/libnsl.so
+$(objpfx)nscd: $(shared-thread-library)
else
-$(objpfx)nscd: $(static-thread-library) $(common-objpfx)nis/libnsl.a
+$(objpfx)nscd: $(static-thread-library)
endif
Index: glibc-2.26/nscd/cache.c
===================================================================
--- glibc-2.26.orig/nscd/cache.c
+++ glibc-2.26/nscd/cache.c
@@ -25,7 +25,6 @@
#include <string.h>
#include <libintl.h>
#include <arpa/inet.h>
-#include <rpcsvc/nis.h>
#include <sys/mman.h>
#include <sys/param.h>
#include <sys/stat.h>
@@ -33,6 +32,7 @@
#include "nscd.h"
#include "dbg_log.h"
+#include "nscd_hash.h"
/* Wrapper functions with error checking for standard functions. */
@@ -74,7 +74,7 @@ struct datahead *
cache_search (request_type type, const void *key, size_t len,
struct database_dyn *table, uid_t owner)
{
- unsigned long int hash = __nis_hash (key, len) % table->head->module;
+ unsigned long int hash = __nscd_hash (key, len) % table->head->module;
unsigned long int nsearched = 0;
struct datahead *result = NULL;
@@ -153,7 +153,7 @@ cache_add (int type, const void *key, si
first ? _(" (first)") : "");
}
- unsigned long int hash = __nis_hash (key, len) % table->head->module;
+ unsigned long int hash = __nscd_hash (key, len) % table->head->module;
struct hashentry *newp;
newp = mempool_alloc (table, sizeof (struct hashentry), 0);
Index: glibc-2.26/nscd/nscd_hash.c
===================================================================
--- /dev/null
+++ glibc-2.26/nscd/nscd_hash.c
@@ -0,0 +1,19 @@
+/* Copyright (C) 2017 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, see
+ <http://www.gnu.org/licenses/>. */
+
+#define __nis_hash __nscd_hash
+#include <nis/nis_hash.c>
Index: glibc-2.26/nscd/nscd_hash.h
===================================================================
--- /dev/null
+++ glibc-2.26/nscd/nscd_hash.h
@@ -0,0 +1,21 @@
+/* Copyright (C) 2017 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, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdint.h>
+
+extern uint32_t __nscd_hash (const void *__keyarg, size_t __len)
+ attribute_hidden;
Index: glibc-2.26/nscd/nscd_helper.c
===================================================================
--- glibc-2.26.orig/nscd/nscd_helper.c
+++ glibc-2.26/nscd/nscd_helper.c
@@ -27,6 +27,7 @@
#include <unistd.h>
#include <stdint.h>
#include <sys/mman.h>
+#include <sys/param.h>
#include <sys/poll.h>
#include <sys/socket.h>
#include <sys/stat.h>
@@ -34,10 +35,10 @@
#include <sys/uio.h>
#include <sys/un.h>
#include <not-cancel.h>
-#include <nis/rpcsvc/nis.h>
#include <kernel-features.h>
#include "nscd-client.h"
+#include "nscd_hash.h"
/* Extra time we wait if the socket is still receiving data. This
@@ -451,7 +452,7 @@ struct datahead *
__nscd_cache_search (request_type type, const char *key, size_t keylen,
const struct mapped_database *mapped, size_t datalen)
{
- unsigned long int hash = __nis_hash (key, keylen) % mapped->head->module;
+ unsigned long int hash = __nscd_hash (key, keylen) % mapped->head->module;
size_t datasize = mapped->datasize;
ref_t trail = mapped->head->array[hash];