commit:     21a3d43cf7f43040132e9035c7b095a17b5a8bdd
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Sep 26 13:52:33 2019 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Sep 26 13:52:33 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=21a3d43c

libq/xarray: add xarraysort function

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 libq/xarray.c | 5 +++++
 libq/xarray.h | 1 +
 2 files changed, 6 insertions(+)

diff --git a/libq/xarray.c b/libq/xarray.c
index a5cac49..49b478b 100644
--- a/libq/xarray.c
+++ b/libq/xarray.c
@@ -44,6 +44,11 @@ void *xarraypush(array_t *arr, const void *ele, size_t 
ele_len)
        return xarraypush_ptr(arr, xmemdup(ele, ele_len));
 }
 
+void xarraysort(array_t *arr, int (*compar)(const void *, const void *))
+{
+       qsort(arr->eles, arr->num, sizeof(void *), compar);
+}
+
 void xarraydelete_ptr(array_t *arr, size_t elem)
 {
        arr->num--;

diff --git a/libq/xarray.h b/libq/xarray.h
index 71dfecb..6af0d39 100644
--- a/libq/xarray.h
+++ b/libq/xarray.h
@@ -40,6 +40,7 @@ typedef struct {
 void *xarrayget(array_t *arr, size_t idx);
 void *xarraypush_ptr(array_t *arr, void *ele);
 void *xarraypush(array_t *arr, const void *ele, size_t ele_len);
+void xarraysort(array_t *arr, int (*compar)(const void *, const void *));
 void xarraydelete_ptr(array_t *arr, size_t elem);
 void xarraydelete(array_t *arr, size_t elem);
 void xarrayfree_int(array_t *arr);

Reply via email to