+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.
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
-/* 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. */
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 */
-/* 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>
--- /dev/null
+# 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])
+])
-# 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
])
--- /dev/null
+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
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