summaryrefslogtreecommitdiffstats
path: root/newlib/libc/search/qsort_r.c
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/search/qsort_r.c')
-rw-r--r--newlib/libc/search/qsort_r.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/newlib/libc/search/qsort_r.c b/newlib/libc/search/qsort_r.c
new file mode 100644
index 000000000..0567be71e
--- /dev/null
+++ b/newlib/libc/search/qsort_r.c
@@ -0,0 +1,56 @@
+/*
+FUNCTION
+<<qsort_r>>---sort an array
+
+INDEX
+ qsort_r
+
+ANSI_SYNOPSIS
+ #define _BSD_SOURCE
+ #include <stdlib.h>
+ void qsort_r(void *<[base]>, size_t <[nmemb]>, size_t <[size]>,
+ void *<[thunk]>,
+ int (*<[compar]>)(void*, const void *, const void *));
+
+ #define _GNU_SOURCE
+ #include <stdlib.h>
+ void qsort_r(void *<[base]>, size_t <[nmemb]>, size_t <[size]>,
+ int (*<[compar]>)(const void *, const void *, void *),
+ void *<[thunk]>);
+
+TRAD_SYNOPSIS
+ #include <stdlib.h>
+ qsort_r(<[base]>, <[nmemb]>, <[size]>, <[compar]>, <[thumb]>)
+ char *<[base]>;
+ size_t <[nmemb]>;
+ size_t <[size]>;
+ int (*<[compar]>)();
+ char *<[thumb]>;
+
+DESCRIPTION
+<<qsort_r>> sorts an array (beginning at <[base]>) of <[nmemb]> objects.
+<[size]> describes the size of each element of the array.
+
+You must supply a pointer to a comparison function, using the argument
+shown as <[compar]>. (This permits sorting objects of unknown
+properties.) There are two forms of this function, in each the
+comparison function is defined to accept three arguments, but in a
+different order. Two are pointers to an element of the array starting at
+<[base]>, and another being an arbitrary pointer <[thunk]>. The
+result of <<(*<[compar]>)>> must be negative if the first argument is
+less than the second, zero if the two arguments match, and positive if
+the first argument is greater than the second (where ``less than'' and
+``greater than'' refer to whatever arbitrary ordering is appropriate).
+
+The array is sorted in place; that is, when <<qsort_r>> returns, the
+array elements beginning at <[base]> have been reordered.
+
+RETURNS
+<<qsort_r>> does not return a result.
+
+PORTABILITY
+<<qsort_r>>, in various forms, appears in both BSD and glibc.
+*/
+
+#define I_AM_GNU_QSORT_R
+#include "qsort.c"