summaryrefslogtreecommitdiff
path: root/src/libc/vendor/sortix/qsort.c
diff options
context:
space:
mode:
authordzwdz2023-08-24 19:10:35 +0200
committerdzwdz2023-08-24 19:10:35 +0200
commit3e09037780ca95633749be3acd52e817eed7f98c (patch)
tree83bcf5026cd4383809c81c5f38473a6b1e46755e /src/libc/vendor/sortix/qsort.c
parent292b2386d766826b15f5ca084d37aa2c485fdda6 (diff)
libc: get most of binutils to compile
Diffstat (limited to 'src/libc/vendor/sortix/qsort.c')
-rw-r--r--src/libc/vendor/sortix/qsort.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/libc/vendor/sortix/qsort.c b/src/libc/vendor/sortix/qsort.c
new file mode 100644
index 0000000..feef9ea
--- /dev/null
+++ b/src/libc/vendor/sortix/qsort.c
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2012, 2014 Jonas 'Sortie' Termansen.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * stdlib/qsort.c
+ * Sort an array.
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+
+static int compare_wrapper(const void* a, const void* b, void* arg)
+{
+ return ((int (*)(const void*, const void*)) arg)(a, b);
+}
+
+void qsort(void* base_ptr,
+ size_t num_elements,
+ size_t element_size,
+ int (*compare)(const void*, const void*))
+{
+ qsort_r(base_ptr, num_elements, element_size, compare_wrapper, (void*) compare);
+}