]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
prioq: introduce prioq_ensure_put()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 28 Sep 2021 06:14:50 +0000 (15:14 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 28 Sep 2021 06:15:12 +0000 (15:15 +0900)
src/basic/prioq.c
src/basic/prioq.h

index 559e5d124d22c63985e147039faeacf9548c4c69..c15dcb26af8a185e42047a7b21a2ad1e434cb636 100644 (file)
@@ -173,6 +173,16 @@ int prioq_put(Prioq *q, void *data, unsigned *idx) {
         return 0;
 }
 
+int prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx) {
+        int r;
+
+        r = prioq_ensure_allocated(q, compare_func);
+        if (r < 0)
+                return r;
+
+        return prioq_put(*q, data, idx);
+}
+
 static void remove_item(Prioq *q, struct prioq_item *i) {
         struct prioq_item *l;
 
index 7c7664761135a761e194458fe931433a63991d81..508db88026e6a28378ac7922fa5c5e9b7aaa86ad 100644 (file)
@@ -16,6 +16,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Prioq*, prioq_free);
 int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func);
 
 int prioq_put(Prioq *q, void *data, unsigned *idx);
+int prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx);
 int prioq_remove(Prioq *q, void *data, unsigned *idx);
 int prioq_reshuffle(Prioq *q, void *data, unsigned *idx);