]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nscd: remove reference to libnsl
authorAndreas Schwab <schwab@suse.de>
Tue, 10 Oct 2017 12:09:02 +0000 (14:09 +0200)
committerAndreas Schwab <schwab@suse.de>
Wed, 11 Oct 2017 13:51:52 +0000 (15:51 +0200)
This removes the dependency on libnsl from nscd.  It only used __nis_hash,
build its own copy under the name __nscd_hash.

ChangeLog
nis/Makefile
nscd/Makefile
nscd/cache.c
nscd/nscd_hash.c [new file with mode: 0644]
nscd/nscd_hash.h [new file with mode: 0644]
nscd/nscd_helper.c

index 3c668d18674ed07cb7f429673e77a447d8e2427b..1a89064e993eb772ba8666cb6edeb870de726a38 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+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.
+
 2017-10-11  Florian Weimer  <fweimer@redhat.com>
 
        [BZ #22078]
index 023916f44642ccfadc7e6bc8d9b5fb90b3701673..e602b09e37a41f75547fa35996104838eab0d337 100644 (file)
@@ -22,8 +22,6 @@ subdir        := nis
 
 include ../Makeconfig
 
-aux                    := nis_hash
-
 ifeq ($(build-obsolete-nsl),yes)
 headers                        := $(wildcard rpcsvc/*.[hx])
 
index 41269968874e479db02e4f17c9fa144de9aaa4b1..095f3e53d4c0c3a04fabba262ab90d0f70aaf526 100644 (file)
@@ -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 pwdcache getpwnam_r getpwuid_r grpcache \
                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.mk,$(cpp-srcs-left))
 $(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 b9dbc7a0bd47212e461e18bddffdb562795dabef..4a17c3371bd4bf934d3b626be22b36ce368dc73b 100644 (file)
@@ -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, size_t len, struct datahead *packet,
               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);
diff --git a/nscd/nscd_hash.c b/nscd/nscd_hash.c
new file mode 100644 (file)
index 0000000..1572af6
--- /dev/null
@@ -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>
diff --git a/nscd/nscd_hash.h b/nscd/nscd_hash.h
new file mode 100644 (file)
index 0000000..e56d710
--- /dev/null
@@ -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 56e6d1421fd5d88c8c2e51f45286167df8753971..a42a4a7da57836fc83e8059f126aaeeac5b69ab7 100644 (file)
@@ -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>
 #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
@@ -443,12 +444,6 @@ __nscd_get_map_ref (request_type type, const char *name,
 #define MINIMUM_HASHENTRY_SIZE \
   (offsetof (struct hashentry, dellist) + sizeof (int32_t))
 
-/* __nis_hash is defined in nis_hash.c which is included both libnsl
-   and libc.  Since the one in libnsl is exported and the one in libc
-   is hidden, __nis_hash is marked as hidden where it is referenced,
-   not where it is defined.  */
-extern __typeof (__nis_hash) __nis_hash attribute_hidden;
-
 /* Don't return const struct datahead *, as eventhough the record
    is normally constant, it can change arbitrarily during nscd
    garbage collection.  */
@@ -456,7 +451,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];