Loading...
--- Libc/Libc-1725.40.4/stdlib/FreeBSD/qsort.3
+++ Libc/Libc-763.13/stdlib/FreeBSD/qsort.3
@@ -36,78 +36,41 @@
.Dt QSORT 3
.Os
.Sh NAME
-.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
+.Nm qsort , qsort_r , heapsort , mergesort
.Nd sort functions
+.Sh LIBRARY
+.Lb libc
.Sh SYNOPSIS
.In stdlib.h
+.Ft void
+.Fo qsort
+.Fa "void *base"
+.Fa "size_t nmemb"
+.Fa "size_t size"
+.Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
+.Fc
+.Ft void
+.Fo qsort_r
+.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]"
+.Fc
.Ft int
.Fo heapsort
.Fa "void *base"
-.Fa "size_t nel"
-.Fa "size_t width"
+.Fa "size_t nmemb"
+.Fa "size_t size"
.Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
.Fc
-#ifdef UNIFDEF_BLOCKS
-.Ft int
-.Fo heapsort_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 int
.Fo mergesort
.Fa "void *base"
-.Fa "size_t nel"
-.Fa "size_t width"
+.Fa "size_t nmemb"
+.Fa "size_t size"
.Fa "int \*[lp]*compar\*[rp]\*[lp]const void *, const void *\*[rp]"
.Fc
-#ifdef UNIFDEF_BLOCKS
-.Ft int
-.Fo mergesort_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
-.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
@@ -117,7 +80,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
@@ -125,19 +88,19 @@
and
.Fn heapsort
functions sort an array of
-.Fa nel
+.Fa nmemb
objects, the initial member of which is pointed to by
.Fa base .
The size of each object is specified by
-.Fa width .
+.Fa size .
The
.Fn mergesort
function
behaves similarly, but
.Em requires
that
-.Fa width
-be greater than or equal to
+.Fa size
+be greater than
.Dq "sizeof(void *) / 2" .
.Pp
The contents of the array
@@ -172,7 +135,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
@@ -216,8 +179,8 @@
The function
.Fn mergesort
requires additional memory of size
-.Fa nel *
-.Fa width
+.Fa nmemb *
+.Fa size
bytes; it should be used only when space is not at a premium.
The
.Fn mergesort
@@ -229,40 +192,19 @@
.Fn qsort
is faster than
.Fn mergesort
-which is faster than
+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
+.Fn qsort
and
.Fn qsort_r
functions
return no value.
.Pp
-#ifdef UNIFDEF_BLOCKS
-.ds HEAPSORT_B heapsort_b
-.ds MERGESORT_B mergesort_b
-#endif
-.Rv -std heapsort \*[HEAPSORT_B] mergesort \*[MERGESORT_B]
+.Rv -std heapsort mergesort
.Sh COMPATIBILITY
Previous versions of
.Fn qsort
@@ -271,46 +213,26 @@
This is no longer true.
.Sh ERRORS
The
-#ifdef UNIFDEF_BLOCKS
-.Fn heapsort ,
-.Fn heapsort_b ,
-.Fn mergesort ,
-and
-.Fn mergesort_b
-#else
-.Fn heapsort
-and
-.Fn mergesort
-#endif
+.Fn heapsort
+and
+.Fn mergesort
functions succeed unless:
.Bl -tag -width Er
.It Bq Er EINVAL
The
-.Fa width
+.Fa size
argument is zero, or,
the
-.Fa width
+.Fa size
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 ,
+.Fn heapsort
or
-.Fn mergesort_b
-#else
-.Fn heapsort
-or
-.Fn mergesort
-#endif
+.Fn mergesort
functions
were unable to allocate memory.
.El