]> git.ipfire.org Git - thirdparty/gnulib.git/commitdiff
New module 'search'.
authorBruno Haible <bruno@clisp.org>
Sun, 25 Mar 2007 02:45:24 +0000 (02:45 +0000)
committerBruno Haible <bruno@clisp.org>
Sun, 25 Mar 2007 02:45:24 +0000 (02:45 +0000)
ChangeLog
NEWS
lib/search_.h [moved from lib/tsearch.h with 70% similarity]
lib/tsearch.c
m4/search_h.m4 [new file with mode: 0644]
m4/tsearch.m4
modules/search [new file with mode: 0644]
modules/tsearch

index 861905555b34757a0c7cb213fae4f1ea0af10a46..af8c74b714ca851f261a949f9c58857acced5286 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2007-03-24  Bruno Haible  <bruno@clisp.org>
+
+       * modules/search: New file.
+       * lib/search_.h: New file, incorporating lib/tsearch.h.
+       * m4/search_h.m4: New file.
+       * lib/tsearch.h: Remove file.
+       * lib/tsearch.c: Include search.h instead of tsearch.h.
+       * m4/tsearch.m4 (gl_FUNC_TSEARCH): Require gl_SEARCH_H_DEFAULTS. Set
+       HAVE_TSEARCH.
+       * modules/tsearch (Files): Remove lib/tsearch.h.
+       (Depends-on): Add search.
+       (configure.ac): Invoke gl_SEARCH_MODULE_INDICATOR.
+       (Include): Change tsearch.h into search.h.
+
 2007-03-24  Bruno Haible  <bruno@clisp.org>
 
        * modules/fpucw: New file.
diff --git a/NEWS b/NEWS
index ef6734d2ed6944f2c5787a0dc806b50f1135cc7e..acd4e2d0b4bb25a32084dd1cdcb170471541dad9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,9 @@ User visible incompatible changes
 
 Date        Modules         Changes
 
+2007-03-24  tsearch         The include file is changed from "tsearch.h" to
+                            <search.h>.
+
 2007-03-24  utf8-ucs4       The include file is changed from "utf8-ucs4.h"
                             to "unistr.h".
             utf8-ucs4-unsafe  The include file is changed from
similarity index 70%
rename from lib/tsearch.h
rename to lib/search_.h
index a42b0c86d68e9c492cf687a915932e2a9e85ac67..233cc63db05874a6702bbb21e8f417cd9960a0c9 100644 (file)
@@ -1,5 +1,6 @@
-/* Binary tree data structure.
-   Copyright (C) 2006 Free Software Foundation, Inc.
+/* A GNU-like <search.h>.
+
+   Copyright (C) 2007 Free Software Foundation, Inc.
 
    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
    along with this program; if not, write to the Free Software Foundation,
    Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
 
-#ifndef _TSEARCH_H
-#define _TSEARCH_H
+#ifndef _GL_SEARCH_H
+#define _GL_SEARCH_H
+
+#if @HAVE_SEARCH_H@
+# include @ABSOLUTE_SEARCH_H@
+#endif
 
-#if HAVE_TSEARCH
 
-/* Get tseach(), tfind(), tdelete(), twalk() declarations.  */
-#include <search.h>
+/* The definition of GL_LINK_WARNING is copied here.  */
 
-#else
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+
+#if @GNULIB_TSEARCH@
+# if !@HAVE_TSEARCH@
+
 /* See <http://www.opengroup.org/susv3xbd/search.h.html>,
        <http://www.opengroup.org/susv3xsh/tsearch.html>
    for details.  */
@@ -73,10 +79,33 @@ extern void * tdelete (const void *key, void **vrootp,
 extern void twalk (const void *vroot,
                   void (*action) (const void *, VISIT, int));
 
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef tsearch
+# define tsearch(k,v,c) \
+    (GL_LINK_WARNING ("tsearch is unportable - " \
+                      "use gnulib module tsearch for portability"), \
+     tsearch (k, v, c))
+# undef tfind
+# define tfind(k,v,c) \
+    (GL_LINK_WARNING ("tfind is unportable - " \
+                      "use gnulib module tsearch for portability"), \
+     tfind (k, v, c))
+# undef tdelete
+# define tdelete(k,v,c) \
+    (GL_LINK_WARNING ("tdelete is unportable - " \
+                      "use gnulib module tsearch for portability"), \
+     tdelete (k, v, c))
+# undef twalk
+# define twalk(v,a) \
+    (GL_LINK_WARNING ("twalk is unportable - " \
+                      "use gnulib module tsearch for portability"), \
+     twalk (v, a))
+#endif
+
+
 #ifdef __cplusplus
 }
 #endif
 
 #endif
-
-#endif /* _TSEARCH_H */
index 6a9d2e06acf1306563f697674b9b7de7e96d1223..cc63a11e723f24fc22a6b4be9c4bb9ea09f71b62 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1997, 2000, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 1995-1997, 2000, 2006-2007 Free Software Foundation, Inc.
    Contributed by Bernd Schmidt <crux@Pool.Informatik.RWTH-Aachen.DE>, 1997.
 
    NOTE: The canonical source of this file is maintained with the GNU C
 #include <config.h>
 
 /* Specification.  */
-#include "tsearch.h"
+#ifdef IN_LIBINTL
+# include "tsearch.h"
+#else
+# include <search.h>
+#endif
 
 #include <stdlib.h>
 
diff --git a/m4/search_h.m4 b/m4/search_h.m4
new file mode 100644 (file)
index 0000000..d894ed0
--- /dev/null
@@ -0,0 +1,34 @@
+# search_h.m4 serial 1
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_SEARCH_H],
+[
+  AC_REQUIRE([gl_SEARCH_H_DEFAULTS])
+  AC_CHECK_HEADERS_ONCE([search.h])
+  if test $ac_cv_header_search_h = yes; then
+    HAVE_SEARCH_H=1
+    gl_ABSOLUTE_HEADER([search.h])
+    ABSOLUTE_SEARCH_H=\"$gl_cv_absolute_search_h\"
+  else
+    HAVE_SEARCH_H=0
+  fi
+  AC_SUBST([HAVE_SEARCH_H])
+  AC_SUBST([ABSOLUTE_SEARCH_H])
+])
+
+AC_DEFUN([gl_SEARCH_MODULE_INDICATOR],
+[
+  dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+  AC_REQUIRE([gl_SEARCH_H_DEFAULTS])
+  GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_SEARCH_H_DEFAULTS],
+[
+  GNULIB_TSEARCH=0; AC_SUBST([GNULIB_TSEARCH])
+  dnl Assume proper GNU behavior unless another module says otherwise.
+  HAVE_TSEARCH=1; AC_SUBST([HAVE_TSEARCH])
+])
index e279fc049f64661cfb6513cbbb265e8bc3611713..2a458f8755036c2c9b179eefa65c2bd4d5aa77ed 100644 (file)
@@ -1,13 +1,16 @@
-# tsearch.m4 serial 1
-dnl Copyright (C) 2006 Free Software Foundation, Inc.
+# tsearch.m4 serial 2
+dnl Copyright (C) 2006-2007 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 AC_DEFUN([gl_FUNC_TSEARCH],
 [
-  AC_REPLACE_FUNCS(tsearch)
+  AC_REQUIRE([gl_SEARCH_H_DEFAULTS])
+  AC_CHECK_FUNCS([tsearch])
   if test $ac_cv_func_tsearch = no; then
+    HAVE_TSEARCH=0
+    AC_LIBOBJ([tsearch])
     gl_PREREQ_TSEARCH
   fi
 ])
diff --git a/modules/search b/modules/search
new file mode 100644 (file)
index 0000000..f58fc59
--- /dev/null
@@ -0,0 +1,40 @@
+Description:
+A GNU-like <search.h>.
+
+Files:
+lib/search_.h
+m4/search_h.m4
+
+Depends-on:
+absolute-header
+link-warning
+
+configure.ac:
+gl_SEARCH_H
+
+Makefile.am:
+BUILT_SOURCES += search.h
+
+# We need the following in order to create <search.h> when the system
+# doesn't have one that works with the given compiler.
+search.h: search_.h
+       rm -f $@-t $@
+       { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+         sed -e 's|@''HAVE_SEARCH_H''@|$(HAVE_SEARCH_H)|g' \
+             -e 's|@''ABSOLUTE_SEARCH_H''@|$(ABSOLUTE_SEARCH_H)|g' \
+             -e 's|@''GNULIB_TSEARCH''@|$(GNULIB_TSEARCH)|g' \
+             -e 's|@''HAVE_TSEARCH''@|$(HAVE_TSEARCH)|g' \
+             -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+             < $(srcdir)/search_.h; \
+       } > $@-t
+       mv $@-t $@
+MOSTLYCLEANFILES += search.h search.h-t
+
+Include:
+#include <search.h>
+
+License:
+LGPL
+
+Maintainer:
+all
index c78d350bc4354aa29e78b8e3a9b2d65171a07a04..ad1bbefe0d709fbc4ec40810e26dbb7b6945c340 100644 (file)
@@ -2,19 +2,20 @@ Description:
 Binary tree data structure.
 
 Files:
-lib/tsearch.h
 lib/tsearch.c
 m4/tsearch.m4
 
 Depends-on:
+search
 
 configure.ac:
 gl_FUNC_TSEARCH
+gl_SEARCH_MODULE_INDICATOR([tsearch])
 
 Makefile.am:
 
 Include:
-"tsearch.h"
+<search.h>
 
 License:
 LGPL