summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/analyze/analyze.c3
-rw-r--r--src/basic/conf-files.c2
-rw-r--r--src/basic/meson.build2
-rw-r--r--src/basic/sort-util.c27
-rw-r--r--src/basic/sort-util.h70
-rw-r--r--src/basic/strbuf.c2
-rw-r--r--src/basic/strv.c2
-rw-r--r--src/basic/util.c25
-rw-r--r--src/basic/util.h64
-rw-r--r--src/busctl/busctl.c2
-rw-r--r--src/cgtop/cgtop.c2
-rw-r--r--src/core/job.c1
-rw-r--r--src/core/namespace.c2
-rw-r--r--src/journal/catalog.c1
-rw-r--r--src/journal/journal-file.c1
-rw-r--r--src/journal/journal-vacuum.c2
-rw-r--r--src/libsystemd-network/sd-lldp.c1
-rw-r--r--src/libsystemd/sd-bus/bus-match.c1
-rw-r--r--src/libsystemd/sd-device/device-enumerator.c2
-rw-r--r--src/libsystemd/sd-hwdb/hwdb-util.c1
-rw-r--r--src/libsystemd/sd-netlink/local-addresses.c1
-rw-r--r--src/machine/machinectl.c2
-rw-r--r--src/mount/mount-tool.c3
-rw-r--r--src/network/networkctl.c2
-rw-r--r--src/nspawn/nspawn-mount.c2
-rw-r--r--src/portable/portable.c1
-rw-r--r--src/resolve/resolved-dns-dnssec.c1
-rw-r--r--src/resolve/resolved-dns-trust-anchor.c3
-rw-r--r--src/resolve/resolved-mdns.c1
-rw-r--r--src/shared/bootspec.c1
-rw-r--r--src/shared/bus-unit-util.c2
-rw-r--r--src/shared/calendarspec.c1
-rw-r--r--src/shared/cgroup-show.c1
-rw-r--r--src/shared/efivars.c2
-rw-r--r--src/shared/format-table.c1
-rw-r--r--src/shared/uid-range.c2
-rw-r--r--src/systemctl/systemctl.c1
-rw-r--r--src/test/test-prioq.c2
-rw-r--r--src/tmpfiles/tmpfiles.c2
39 files changed, 136 insertions, 108 deletions
diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c
index 77adbed83d..f838daada8 100644
--- a/src/analyze/analyze.c
+++ b/src/analyze/analyze.c
@@ -36,11 +36,12 @@
#if HAVE_SECCOMP
# include "seccomp-util.h"
#endif
+#include "sort-util.h"
#include "special.h"
#include "strv.h"
#include "strxcpyx.h"
-#include "time-util.h"
#include "terminal-util.h"
+#include "time-util.h"
#include "unit-name.h"
#include "util.h"
#include "verbs.h"
diff --git a/src/basic/conf-files.c b/src/basic/conf-files.c
index b70c6e50a8..d010fbb266 100644
--- a/src/basic/conf-files.c
+++ b/src/basic/conf-files.c
@@ -17,11 +17,11 @@
#include "missing.h"
#include "path-util.h"
#include "set.h"
+#include "sort-util.h"
#include "stat-util.h"
#include "string-util.h"
#include "strv.h"
#include "terminal-util.h"
-#include "util.h"
static int files_add(
Hashmap *h,
diff --git a/src/basic/meson.build b/src/basic/meson.build
index 3d382b3940..30466ce946 100644
--- a/src/basic/meson.build
+++ b/src/basic/meson.build
@@ -174,6 +174,8 @@ basic_sources = files('''
socket-label.c
socket-util.c
socket-util.h
+ sort-util.c
+ sort-util.h
sparse-endian.h
special.h
stat-util.c
diff --git a/src/basic/sort-util.c b/src/basic/sort-util.c
new file mode 100644
index 0000000000..5cf0d1d49b
--- /dev/null
+++ b/src/basic/sort-util.c
@@ -0,0 +1,27 @@
+#include "sort-util.h"
+#include "alloc-util.h"
+
+/* hey glibc, APIs with callbacks without a user pointer are so useless */
+void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
+ __compar_d_fn_t compar, void *arg) {
+ size_t l, u, idx;
+ const void *p;
+ int comparison;
+
+ assert(!size_multiply_overflow(nmemb, size));
+
+ l = 0;
+ u = nmemb;
+ while (l < u) {
+ idx = (l + u) / 2;
+ p = (const uint8_t*) base + idx * size;
+ comparison = compar(key, p, arg);
+ if (comparison < 0)
+ u = idx;
+ else if (comparison > 0)
+ l = idx + 1;
+ else
+ return (void *)p;
+ }
+ return NULL;
+}
diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
new file mode 100644
index 0000000000..e029f8646e
--- /dev/null
+++ b/src/basic/sort-util.h
@@ -0,0 +1,70 @@
+/* SPDX-License-Identifier: LGPL-2.1+ */
+#pragma once
+
+#include <stdlib.h>
+
+#include "macro.h"
+
+void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
+ __compar_d_fn_t compar, void *arg);
+
+#define typesafe_bsearch_r(k, b, n, func, userdata) \
+ ({ \
+ const typeof(b[0]) *_k = k; \
+ int (*_func_)(const typeof(b[0])*, const typeof(b[0])*, typeof(userdata)) = func; \
+ xbsearch_r((const void*) _k, (b), (n), sizeof((b)[0]), (__compar_d_fn_t) _func_, userdata); \
+ })
+
+/**
+ * Normal bsearch requires base to be nonnull. Here were require
+ * that only if nmemb > 0.
+ */
+static inline void* bsearch_safe(const void *key, const void *base,
+ size_t nmemb, size_t size, __compar_fn_t compar) {
+ if (nmemb <= 0)
+ return NULL;
+
+ assert(base);
+ return bsearch(key, base, nmemb, size, compar);
+}
+
+#define typesafe_bsearch(k, b, n, func) \
+ ({ \
+ const typeof(b[0]) *_k = k; \
+ int (*_func_)(const typeof(b[0])*, const typeof(b[0])*) = func; \
+ bsearch_safe((const void*) _k, (b), (n), sizeof((b)[0]), (__compar_fn_t) _func_); \
+ })
+
+/**
+ * Normal qsort requires base to be nonnull. Here were require
+ * that only if nmemb > 0.
+ */
+static inline void qsort_safe(void *base, size_t nmemb, size_t size, __compar_fn_t compar) {
+ if (nmemb <= 1)
+ return;
+
+ assert(base);
+ qsort(base, nmemb, size, compar);
+}
+
+/* A wrapper around the above, but that adds typesafety: the element size is automatically derived from the type and so
+ * is the prototype for the comparison function */
+#define typesafe_qsort(p, n, func) \
+ ({ \
+ int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \
+ qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
+ })
+
+static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
+ if (nmemb <= 1)
+ return;
+
+ assert(base);
+ qsort_r(base, nmemb, size, compar, userdata);
+}
+
+#define typesafe_qsort_r(p, n, func, userdata) \
+ ({ \
+ int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
+ qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
+ })
diff --git a/src/basic/strbuf.c b/src/basic/strbuf.c
index 81f4f21ade..769b22aba0 100644
--- a/src/basic/strbuf.c
+++ b/src/basic/strbuf.c
@@ -5,8 +5,8 @@
#include <string.h>
#include "alloc-util.h"
+#include "sort-util.h"
#include "strbuf.h"
-#include "util.h"
/*
* Strbuf stores given strings in a single continuous allocated memory
diff --git a/src/basic/strv.c b/src/basic/strv.c
index 3a62f25ded..3700ce5b30 100644
--- a/src/basic/strv.c
+++ b/src/basic/strv.c
@@ -11,9 +11,9 @@
#include "escape.h"
#include "extract-word.h"
#include "fileio.h"
+#include "sort-util.h"
#include "string-util.h"
#include "strv.h"
-#include "util.h"
char *strv_find(char **l, const char *name) {
char **i;
diff --git a/src/basic/util.c b/src/basic/util.c
index fd0277b5df..ce3e321925 100644
--- a/src/basic/util.c
+++ b/src/basic/util.c
@@ -126,31 +126,6 @@ void in_initrd_force(bool value) {
saved_in_initrd = value;
}
-/* hey glibc, APIs with callbacks without a user pointer are so useless */
-void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
- __compar_d_fn_t compar, void *arg) {
- size_t l, u, idx;
- const void *p;
- int comparison;
-
- assert(!size_multiply_overflow(nmemb, size));
-
- l = 0;
- u = nmemb;
- while (l < u) {
- idx = (l + u) / 2;
- p = (const uint8_t*) base + idx * size;
- comparison = compar(key, p, arg);
- if (comparison < 0)
- u = idx;
- else if (comparison > 0)
- l = idx + 1;
- else
- return (void *)p;
- }
- return NULL;
-}
-
int on_ac_power(void) {
bool found_offline = false, found_online = false;
_cleanup_closedir_ DIR *d = NULL;
diff --git a/src/basic/util.h b/src/basic/util.h
index 3c29586749..02fc31e69e 100644
--- a/src/basic/util.h
+++ b/src/basic/util.h
@@ -63,70 +63,6 @@ int prot_from_flags(int flags) _const_;
bool in_initrd(void);
void in_initrd_force(bool value);
-void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
- __compar_d_fn_t compar, void *arg);
-
-#define typesafe_bsearch_r(k, b, n, func, userdata) \
- ({ \
- const typeof(b[0]) *_k = k; \
- int (*_func_)(const typeof(b[0])*, const typeof(b[0])*, typeof(userdata)) = func; \
- xbsearch_r((const void*) _k, (b), (n), sizeof((b)[0]), (__compar_d_fn_t) _func_, userdata); \
- })
-
-/**
- * Normal bsearch requires base to be nonnull. Here were require
- * that only if nmemb > 0.
- */
-static inline void* bsearch_safe(const void *key, const void *base,
- size_t nmemb, size_t size, __compar_fn_t compar) {
- if (nmemb <= 0)
- return NULL;
-
- assert(base);
- return bsearch(key, base, nmemb, size, compar);
-}
-
-#define typesafe_bsearch(k, b, n, func) \
- ({ \
- const typeof(b[0]) *_k = k; \
- int (*_func_)(const typeof(b[0])*, const typeof(b[0])*) = func; \
- bsearch_safe((const void*) _k, (b), (n), sizeof((b)[0]), (__compar_fn_t) _func_); \
- })
-
-/**
- * Normal qsort requires base to be nonnull. Here were require
- * that only if nmemb > 0.
- */
-static inline void qsort_safe(void *base, size_t nmemb, size_t size, __compar_fn_t compar) {
- if (nmemb <= 1)
- return;
-
- assert(base);
- qsort(base, nmemb, size, compar);
-}
-
-/* A wrapper around the above, but that adds typesafety: the element size is automatically derived from the type and so
- * is the prototype for the comparison function */
-#define typesafe_qsort(p, n, func) \
- ({ \
- int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \
- qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
- })
-
-static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
- if (nmemb <= 1)
- return;
-
- assert(base);
- qsort_r(base, nmemb, size, compar, userdata);
-}
-
-#define typesafe_qsort_r(p, n, func, userdata) \
- ({ \
- int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
- qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
- })
-
int on_ac_power(void);
static inline void _reset_errno_(int *saved_errno) {
diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c
index a61fd2e706..c8125c6606 100644
--- a/src/busctl/busctl.c
+++ b/src/busctl/busctl.c
@@ -25,10 +25,10 @@
#include "path-util.h"
#include "pretty-print.h"
#include "set.h"
+#include "sort-util.h"
#include "strv.h"
#include "terminal-util.h"
#include "user-util.h"
-#include "util.h"
#include "verbs.h"
static enum {
diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
index ab3b979eaf..eb9ccd0cb0 100644
--- a/src/cgtop/cgtop.c
+++ b/src/cgtop/cgtop.c
@@ -25,11 +25,11 @@
#include "pretty-print.h"
#include "process-util.h"
#include "procfs-util.h"
+#include "sort-util.h"
#include "stdio-util.h"
#include "strv.h"
#include "terminal-util.h"
#include "unit-name.h"
-#include "util.h"
#include "virt.h"
typedef struct Group {
diff --git a/src/core/job.c b/src/core/job.c
index b2aa0c600f..81f5f9cb72 100644
--- a/src/core/job.c
+++ b/src/core/job.c
@@ -17,6 +17,7 @@
#include "parse-util.h"
#include "serialize.h"
#include "set.h"
+#include "sort-util.h"
#include "special.h"
#include "stdio-util.h"
#include "string-table.h"
diff --git a/src/core/namespace.c b/src/core/namespace.c
index 3657e935ee..582f6cb249 100644
--- a/src/core/namespace.c
+++ b/src/core/namespace.c
@@ -26,13 +26,13 @@
#include "path-util.h"
#include "selinux-util.h"
#include "socket-util.h"
+#include "sort-util.h"
#include "stat-util.h"
#include "string-table.h"
#include "string-util.h"
#include "strv.h"
#include "umask-util.h"
#include "user-util.h"
-#include "util.h"
#define DEV_MOUNT_OPTIONS (MS_NOSUID|MS_STRICTATIME|MS_NOEXEC)
diff --git a/src/journal/catalog.c b/src/journal/catalog.c
index b0856f4583..21c0eaac9f 100644
--- a/src/journal/catalog.c
+++ b/src/journal/catalog.c
@@ -21,6 +21,7 @@
#include "mkdir.h"
#include "path-util.h"
#include "siphash24.h"
+#include "sort-util.h"
#include "sparse-endian.h"
#include "strbuf.h"
#include "string-util.h"
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index 6b4f07c85f..e0f06a21bb 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -27,6 +27,7 @@
#include "path-util.h"
#include "random-util.h"
#include "set.h"
+#include "sort-util.h"
#include "stat-util.h"
#include "string-util.h"
#include "strv.h"
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
index 2778ce40c5..a932314e19 100644
--- a/src/journal/journal-vacuum.c
+++ b/src/journal/journal-vacuum.c
@@ -14,9 +14,9 @@
#include "journal-file.h"
#include "journal-vacuum.h"
#include "parse-util.h"
+#include "sort-util.h"
#include "string-util.h"
#include "time-util.h"
-#include "util.h"
#include "xattr-util.h"
struct vacuum_info {
diff --git a/src/libsystemd-network/sd-lldp.c b/src/libsystemd-network/sd-lldp.c
index 3460dc09bd..1f28c5731f 100644
--- a/src/libsystemd-network/sd-lldp.c
+++ b/src/libsystemd-network/sd-lldp.c
@@ -15,6 +15,7 @@
#include "lldp-network.h"
#include "memory-util.h"
#include "socket-util.h"
+#include "sort-util.h"
#include "string-table.h"
#define LLDP_DEFAULT_NEIGHBORS_MAX 128U
diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c
index 9642de10c3..266dd7f1df 100644
--- a/src/libsystemd/sd-bus/bus-match.c
+++ b/src/libsystemd/sd-bus/bus-match.c
@@ -10,6 +10,7 @@
#include "fd-util.h"
#include "fileio.h"
#include "hexdecoct.h"
+#include "sort-util.h"
#include "string-util.h"
#include "strv.h"
diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c
index f643c6ea37..8f2764490a 100644
--- a/src/libsystemd/sd-device/device-enumerator.c
+++ b/src/libsystemd/sd-device/device-enumerator.c
@@ -8,9 +8,9 @@
#include "dirent-util.h"
#include "fd-util.h"
#include "set.h"
+#include "sort-util.h"
#include "string-util.h"
#include "strv.h"
-#include "util.h"
#define DEVICE_ENUMERATE_MAX_DEPTH 256
diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c
index f8529670b3..dd9bf9e18d 100644
--- a/src/libsystemd/sd-hwdb/hwdb-util.c
+++ b/src/libsystemd/sd-hwdb/hwdb-util.c
@@ -13,6 +13,7 @@
#include "label.h"
#include "mkdir.h"
#include "path-util.h"
+#include "sort-util.h"
#include "strbuf.h"
#include "string-util.h"
#include "strv.h"
diff --git a/src/libsystemd/sd-netlink/local-addresses.c b/src/libsystemd/sd-netlink/local-addresses.c
index 5c37279bd2..751144539b 100644
--- a/src/libsystemd/sd-netlink/local-addresses.c
+++ b/src/libsystemd/sd-netlink/local-addresses.c
@@ -6,6 +6,7 @@
#include "local-addresses.h"
#include "macro.h"
#include "netlink-util.h"
+#include "sort-util.h"
static int address_compare(const struct local_address *a, const struct local_address *b) {
int r;
diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
index 8b97b4d8ce..78f5f2ff32 100644
--- a/src/machine/machinectl.c
+++ b/src/machine/machinectl.c
@@ -44,13 +44,13 @@
#include "rlimit-util.h"
#include "sigbus.h"
#include "signal-util.h"
+#include "sort-util.h"
#include "spawn-polkit-agent.h"
#include "stdio-util.h"
#include "string-table.h"
#include "strv.h"
#include "terminal-util.h"
#include "unit-name.h"
-#include "util.h"
#include "verbs.h"
#include "web-util.h"
diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c
index bbbc91c38e..1fc8c954d9 100644
--- a/src/mount/mount-tool.c
+++ b/src/mount/mount-tool.c
@@ -22,13 +22,14 @@
#include "parse-util.h"
#include "path-util.h"
#include "pretty-print.h"
+#include "sort-util.h"
#include "spawn-polkit-agent.h"
#include "stat-util.h"
#include "strv.h"
+#include "terminal-util.h"
#include "unit-def.h"
#include "unit-name.h"
#include "user-util.h"
-#include "terminal-util.h"
enum {
ACTION_DEFAULT,
diff --git a/src/network/networkctl.c b/src/network/networkctl.c
index 9452dabcde..86f6435e4f 100644
--- a/src/network/networkctl.c
+++ b/src/network/networkctl.c
@@ -26,6 +26,7 @@
#include "parse-util.h"
#include "pretty-print.h"
#include "socket-util.h"
+#include "sort-util.h"
#include "sparse-endian.h"
#include "stdio-util.h"
#include "string-table.h"
@@ -33,7 +34,6 @@
#include "strv.h"
#include "strxcpyx.h"
#include "terminal-util.h"
-#include "util.h"
#include "verbs.h"
static PagerFlags arg_pager_flags = 0;
diff --git a/src/nspawn/nspawn-mount.c b/src/nspawn/nspawn-mount.c
index 13f50b2d37..12f557ee99 100644
--- a/src/nspawn/nspawn-mount.c
+++ b/src/nspawn/nspawn-mount.c
@@ -16,12 +16,12 @@
#include "path-util.h"
#include "rm-rf.h"
#include "set.h"
+#include "sort-util.h"
#include "stat-util.h"
#include "string-util.h"
#include "strv.h"
#include "tmpfile-util.h"
#include "user-util.h"
-#include "util.h"
CustomMount* custom_mount_add(CustomMount **l, size_t *n, CustomMountType t) {
CustomMount *c, *ret;
diff --git a/src/portable/portable.c b/src/portable/portable.c
index 01fd1a94a0..9d0d21c115 100644
--- a/src/portable/portable.c
+++ b/src/portable/portable.c
@@ -24,6 +24,7 @@
#include "set.h"
#include "signal-util.h"
#include "socket-util.h"
+#include "sort-util.h"
#include "string-table.h"
#include "strv.h"
#include "tmpfile-util.h"
diff --git a/src/resolve/resolved-dns-dnssec.c b/src/resolve/resolved-dns-dnssec.c
index ad7b623b69..a5ded5ada2 100644
--- a/src/resolve/resolved-dns-dnssec.c
+++ b/src/resolve/resolved-dns-dnssec.c
@@ -15,6 +15,7 @@
#include "memory-util.h"
#include "resolved-dns-dnssec.h"
#include "resolved-dns-packet.h"
+#include "sort-util.h"
#include "string-table.h"
#define VERIFY_RRS_MAX 256
diff --git a/src/resolve/resolved-dns-trust-anchor.c b/src/resolve/resolved-dns-trust-anchor.c
index c5ec93b724..e5a27ca688 100644
--- a/src/resolve/resolved-dns-trust-anchor.c
+++ b/src/resolve/resolved-dns-trust-anchor.c
@@ -10,9 +10,10 @@
#include "fileio.h"
#include "hexdecoct.h"
#include "parse-util.h"
-#include "resolved-dns-trust-anchor.h"
#include "resolved-dns-dnssec.h"
+#include "resolved-dns-trust-anchor.h"
#include "set.h"
+#include "sort-util.h"
#include "string-util.h"
#include "strv.h"
diff --git a/src/resolve/resolved-mdns.c b/src/resolve/resolved-mdns.c
index 89c2497d32..67080cb01c 100644
--- a/src/resolve/resolved-mdns.c
+++ b/src/resolve/resolved-mdns.c
@@ -8,6 +8,7 @@
#include "fd-util.h"
#include "resolved-manager.h"
#include "resolved-mdns.h"
+#include "sort-util.h"
#define CLEAR_CACHE_FLUSH(x) (~MDNS_RR_CACHE_FLUSH & (x))
diff --git a/src/shared/bootspec.c b/src/shared/bootspec.c
index 64b2574a18..f2b919b6bb 100644
--- a/src/shared/bootspec.c
+++ b/src/shared/bootspec.c
@@ -21,6 +21,7 @@
#include "parse-util.h"
#include "path-util.h"
#include "pe-header.h"
+#include "sort-util.h"
#include "stat-util.h"
#include "string-table.h"
#include "string-util.h"
diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
index 3ea1bd29c9..d0bfd1894f 100644
--- a/src/shared/bus-unit-util.c
+++ b/src/shared/bus-unit-util.c
@@ -27,13 +27,13 @@
#include "rlimit-util.h"
#include "securebits-util.h"
#include "signal-util.h"
+#include "sort-util.h"
#include "string-util.h"
#include "syslog-util.h"
#include "terminal-util.h"
#include "unit-def.h"
#include "user-util.h"
#include "utf8.h"
-#include "util.h"
int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) {
assert(message);
diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c
index b2285cebdc..e7ee90aa9c 100644
--- a/src/shared/calendarspec.c
+++ b/src/shared/calendarspec.c
@@ -18,6 +18,7 @@
#include "macro.h"
#include "parse-util.h"
#include "process-util.h"
+#include "sort-util.h"
#include "string-util.h"
#include "time-util.h"
diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
index 61df7511a1..91a243944c 100644
--- a/src/shared/cgroup-show.c
+++ b/src/shared/cgroup-show.c
@@ -20,6 +20,7 @@
#include "output-mode.h"
#include "path-util.h"
#include "process-util.h"
+#include "sort-util.h"
#include "string-util.h"
#include "terminal-util.h"
#include "unit-name.h"
diff --git a/src/shared/efivars.c b/src/shared/efivars.c
index 04c0a697b4..4f32163bba 100644
--- a/src/shared/efivars.c
+++ b/src/shared/efivars.c
@@ -21,11 +21,11 @@
#include "io-util.h"
#include "macro.h"
#include "parse-util.h"
+#include "sort-util.h"
#include "stdio-util.h"
#include "strv.h"
#include "time-util.h"
#include "utf8.h"
-#include "util.h"
#include "virt.h"
#if ENABLE_EFI
diff --git a/src/shared/format-table.c b/src/shared/format-table.c
index 589ae9e236..4e8fc808cd 100644
--- a/src/shared/format-table.c
+++ b/src/shared/format-table.c
@@ -12,6 +12,7 @@
#include "pager.h"
#include "parse-util.h"
#include "pretty-print.h"
+#include "sort-util.h"
#include "string-util.h"
#include "terminal-util.h"
#include "time-util.h"
diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
index 5fa7bd277e..7cb7d8a477 100644
--- a/src/shared/uid-range.c
+++ b/src/shared/uid-range.c
@@ -6,9 +6,9 @@
#include "alloc-util.h"
#include "macro.h"
+#include "sort-util.h"
#include "uid-range.h"
#include "user-util.h"
-#include "util.h"
static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
assert(range);
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index dd62b95669..7f6196328b 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -66,6 +66,7 @@
#include "sigbus.h"
#include "signal-util.h"
#include "socket-util.h"
+#include "sort-util.h"
#include "spawn-ask-password-agent.h"
#include "spawn-polkit-agent.h"
#include "special.h"
diff --git a/src/test/test-prioq.c b/src/test/test-prioq.c
index 53c9e090a7..21d5b44fbb 100644
--- a/src/test/test-prioq.c
+++ b/src/test/test-prioq.c
@@ -6,7 +6,7 @@
#include "prioq.h"
#include "set.h"
#include "siphash24.h"
-#include "util.h"
+#include "sort-util.h"
#define SET_SIZE 1024*4
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
index 801e79b01d..ad73600241 100644
--- a/src/tmpfiles/tmpfiles.c
+++ b/src/tmpfiles/tmpfiles.c
@@ -53,6 +53,7 @@
#include "rm-rf.h"
#include "selinux-util.h"
#include "set.h"
+#include "sort-util.h"
#include "specifier.h"
#include "stat-util.h"
#include "stdio-util.h"
@@ -61,7 +62,6 @@
#include "strv.h"
#include "umask-util.h"
#include "user-util.h"
-#include "util.h"
/* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates
* them in the file system. This is intended to be used to create