Loading...
stdlib/FreeBSD/qsort.3.patch Libc-583 /dev/null
--- Libc/Libc-583/stdlib/FreeBSD/qsort.3.patch
+++ /dev/null
@@ -1,243 +0,0 @@
---- qsort.3.orig	2009-05-12 11:21:33.000000000 -0700
-+++ qsort.3	2009-05-20 15:00:21.000000000 -0700
-@@ -40,41 +40,78 @@
- .Dt QSORT 3
- .Os
- .Sh NAME
--.Nm qsort , qsort_r , heapsort , mergesort
-+.Nm heapsort ,
-+#ifdef UNIFDEF_BLOCKS
-+.Nm heapsort_b ,
-+#endif
-+.Nm mergesort ,
-+#ifdef UNIFDEF_BLOCKS
-+.Nm mergesort_b ,
-+#endif
-+.Nm qsort ,
-+#ifdef UNIFDEF_BLOCKS
-+.Nm qsort_b ,
-+#endif
-+.Nm qsort_r
- .Nd sort functions
--.Sh LIBRARY
--.Lb libc
- .Sh SYNOPSIS
- .In stdlib.h
--.Ft void
--.Fo qsort
-+.Ft int
-+.Fo heapsort
- .Fa "void *base"
--.Fa "size_t nmemb"
--.Fa "size_t size"
-+.Fa "size_t nel"
-+.Fa "size_t width"
- .Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
- .Fc
--.Ft void
--.Fo qsort_r
-+#ifdef UNIFDEF_BLOCKS
-+.Ft int
-+.Fo heapsort_b
- .Fa "void *base"
--.Fa "size_t nmemb"
--.Fa "size_t size"
--.Fa "void *thunk"
--.Fa "int \*[lp]*compar\*[rp]\*[lp]void *, const void *, const void *\*[rp]"
-+.Fa "size_t nel"
-+.Fa "size_t width"
-+.Fa "int \*[lp]^compar\*[rp]\*[lp]const void *, const void *\*[rp]"
- .Fc
-+#endif
- .Ft int
--.Fo heapsort
-+.Fo mergesort
- .Fa "void *base"
--.Fa "size_t nmemb"
--.Fa "size_t size"
-+.Fa "size_t nel"
-+.Fa "size_t width"
- .Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
- .Fc
-+#ifdef UNIFDEF_BLOCKS
- .Ft int
--.Fo mergesort
-+.Fo mergesort_b
- .Fa "void *base"
--.Fa "size_t nmemb"
--.Fa "size_t size"
-+.Fa "size_t nel"
-+.Fa "size_t width"
-+.Fa "int \*[lp]^compar\*[rp]\*[lp]const void *, const void *\*[rp]"
-+.Fc
-+#endif
-+.Ft void
-+.Fo qsort
-+.Fa "void *base"
-+.Fa "size_t nel"
-+.Fa "size_t width"
- .Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
- .Fc
-+#ifdef UNIFDEF_BLOCKS
-+.Ft void
-+.Fo qsort_b
-+.Fa "void *base"
-+.Fa "size_t nel"
-+.Fa "size_t width"
-+.Fa "int \*[lp]^compar\*[rp]\*[lp]const void *, const void *\*[rp]"
-+.Fc
-+#endif
-+.Ft void
-+.Fo qsort_r
-+.Fa "void *base"
-+.Fa "size_t nel"
-+.Fa "size_t width"
-+.Fa "void *thunk"
-+.Fa "int \*[lp]*compar\*[rp]\*[lp]void *, const void *, const void *\*[rp]"
-+.Fc
- .Sh DESCRIPTION
- The
- .Fn qsort
-@@ -84,7 +121,7 @@
- function is a modified selection sort.
- The
- .Fn mergesort
--function is a modified merge sort with exponential search
-+function is a modified merge sort with exponential search,
- intended for sorting data with pre-existing order.
- .Pp
- The
-@@ -92,19 +129,19 @@
- and
- .Fn heapsort
- functions sort an array of
--.Fa nmemb
-+.Fa nel
- objects, the initial member of which is pointed to by
- .Fa base .
- The size of each object is specified by
--.Fa size .
-+.Fa width .
- The
- .Fn mergesort
- function
- behaves similarly, but
- .Em requires
- that
--.Fa size
--be greater than
-+.Fa width
-+be greater than or equal to
- .Dq "sizeof(void *) / 2" .
- .Pp
- The contents of the array
-@@ -139,7 +176,7 @@
- .Fn heapsort
- are
- .Em not
--stable, that is, if two members compare as equal, their order in
-+stable; that is, if two members compare as equal, their order in
- the sorted array is undefined.
- The
- .Fn mergesort
-@@ -183,8 +220,8 @@
- The function
- .Fn mergesort
- requires additional memory of size
--.Fa nmemb *
--.Fa size
-+.Fa nel *
-+.Fa width
- bytes; it should be used only when space is not at a premium.
- The
- .Fn mergesort
-@@ -195,42 +232,83 @@
- Normally,
- .Fn qsort
- is faster than
--.Fn mergesort
--is faster than
-+.Fn mergesort ,
-+which is faster than
- .Fn heapsort .
- Memory availability and pre-existing order in the data can make this
- untrue.
-+#ifdef UNIFDEF_BLOCKS
-+.Pp
-+The
-+.Fn heapsort_b ,
-+.Fn mergesort_b ,
-+and
-+.Fn qsort_b
-+routines are like the corresponding routines without the _b suffix, expect
-+that the
-+.Fa compar
-+callback is a block pointer instead of a function pointer.
-+#endif
- .Sh RETURN VALUES
- The
-+#ifdef UNIFDEF_BLOCKS
-+.Fn qsort ,
-+.Fn qsort_b
-+#else
- .Fn qsort
-+#endif
- and
- .Fn qsort_r
- functions
- return no value.
- .Pp
--.Rv -std heapsort mergesort
-+#ifdef UNIFDEF_BLOCKS
-+.ds HEAPSORT_B heapsort_b
-+.ds MERGESORT_B mergesort_b
-+#endif
-+.Rv -std heapsort \*[HEAPSORT_B] mergesort \*[MERGESORT_B]
- .Sh ERRORS
- The
-+#ifdef UNIFDEF_BLOCKS
-+.Fn heapsort ,
-+.Fn heapsort_b ,
-+.Fn mergesort
-+and
-+.Fn mergesort_b
-+#else
- .Fn heapsort
- and
- .Fn mergesort
-+#endif
- functions succeed unless:
- .Bl -tag -width Er
- .It Bq Er EINVAL
- The
--.Fa size
-+.Fa width
- argument is zero, or,
- the
--.Fa size
-+.Fa width
- argument to
- .Fn mergesort
-+#ifdef UNIFDEF_BLOCKS
-+or
-+.Fn mergesort_b
-+#endif
- is less than
- .Dq "sizeof(void *) / 2" .
- .It Bq Er ENOMEM
- The
-+#ifdef UNIFDEF_BLOCKS
-+.Fn heapsort ,
-+.Fn heapsort_b ,
-+.Fn mergesort
-+and
-+.Fn mergesort_b
-+#else
- .Fn heapsort
--or
-+and
- .Fn mergesort
-+#endif
- functions
- were unable to allocate memory.
- .El