From: Paul Eggert Date: Mon, 15 Sep 2014 15:59:18 +0000 (-0700) Subject: qsort_r: new module, for GNU-style qsort_r X-Git-Tag: v1.0~7298 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=41473cf94a0e9eef96870b76eed9070f87d0c01a;p=gnulib.git qsort_r: new module, for GNU-style qsort_r * m4/qsort_r.m4: New file. Forgot to add this earlier. --- diff --git a/ChangeLog b/ChangeLog index 3748237150..689d21b88d 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 0000000000..c4576f4bce --- /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 +])