Mercurial > hg > octave-nkf > gnulib-hg
changeset 17760:628a5850eee1
qsort_r: new module, for GNU-style qsort_r
* m4/qsort_r.m4: New file. Forgot to add this earlier.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Mon, 15 Sep 2014 08:59:18 -0700 |
parents | 33bdd06e1f91 |
children | af887cfa71dd |
files | ChangeLog m4/qsort_r.m4 |
diffstat | 2 files changed, 53 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-09-15 Paul Eggert <eggert@cs.ucla.edu> + + 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 <wl@gnu.org> strerror_r-posix: support compilation with C++
new file mode 100644 --- /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 <stdlib.h> + 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 <stdlib.h> + 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 +])