>From 41473cf94a0e9eef96870b76eed9070f87d0c01a Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 15 Sep 2014 08:59:18 -0700 Subject: [PATCH] qsort_r: new module, for GNU-style qsort_r * m4/qsort_r.m4: New file. Forgot to add this earlier. --- ChangeLog | 5 +++++ m4/qsort_r.m4 | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 m4/qsort_r.m4 diff --git a/ChangeLog b/ChangeLog index 3748237..689d21b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-09-15 Paul Eggert + + qsort_r: new module, for GNU-style qsort_r + * m4/qsort_r.m4: New file. Forgot to add this earlier. + 2014-09-15 Werner LEMBERG strerror_r-posix: support compilation with C++ diff --git a/m4/qsort_r.m4 b/m4/qsort_r.m4 new file mode 100644 index 0000000..c4576f4 --- /dev/null +++ b/m4/qsort_r.m4 @@ -0,0 +1,48 @@ +dnl Reentrant sort function. + +dnl Copyright 2014 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. + +dnl Written by Paul Eggert. + +AC_DEFUN([gl_FUNC_QSORT_R], +[ + dnl Persuade glibc to declare qsort_r. + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + + AC_CACHE_CHECK([for qsort_r signature], [gl_cv_qsort_r_signature], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include + void qsort_r (void *, size_t, size_t, + int (*) (void const *, void const *, + void *), + void *); + void (*p) (void *, size_t, size_t, + int (*) (void const *, void const *, + void *), + void *) = qsort_r; + ]])], + [gl_cv_qsort_r_signature=GNU], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[#include + void qsort_r (void *, size_t, size_t, void *, + int (*) (void *, + void const *, + void const *)); + void (*p) (void *, size_t, size_t, void *, + int (*) (void *, void const *, + void const *)) = qsort_r; + ]])], + [gl_cv_qsort_r_signature=BSD], + [gl_cv_qsort_r_signature=no])])]) + + case $gl_cv_qsort_r_signature in + GNU) HAVE_QSORT_R=1;; + BSD) HAVE_QSORT_R=1 REPLACE_QSORT_R=1;; + *) HAVE_QSORT_R=0 REPLACE_QSORT_R=1;; + esac +]) -- 1.9.3