summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am2
-rw-r--r--src/activate/activate.c1
-rw-r--r--src/basic/async.c1
-rw-r--r--src/basic/audit.c7
-rw-r--r--src/basic/barrier.c1
-rw-r--r--src/basic/btrfs-util.c3
-rw-r--r--src/basic/capability.c10
-rw-r--r--src/basic/cgroup-util.c3
-rw-r--r--src/basic/clock-util.c3
-rw-r--r--src/basic/clock-util.h1
-rw-r--r--src/basic/conf-files.c3
-rw-r--r--src/basic/copy.c3
-rw-r--r--src/basic/extract-word.c1
-rw-r--r--src/basic/fd-util.c321
-rw-r--r--src/basic/fd-util.h69
-rw-r--r--src/basic/fdset.c5
-rw-r--r--src/basic/fileio.c3
-rw-r--r--src/basic/hostname-util.c3
-rw-r--r--src/basic/locale-util.c3
-rw-r--r--src/basic/lockfile-util.c5
-rw-r--r--src/basic/log.c3
-rw-r--r--src/basic/memfd-util.c3
-rw-r--r--src/basic/memfd-util.h3
-rw-r--r--src/basic/path-util.c3
-rw-r--r--src/basic/process-util.c3
-rw-r--r--src/basic/random-util.c13
-rw-r--r--src/basic/rm-rf.c3
-rw-r--r--src/basic/socket-label.c11
-rw-r--r--src/basic/terminal-util.c3
-rw-r--r--src/basic/time-util.c3
-rw-r--r--src/basic/util.c301
-rw-r--r--src/basic/util.h38
-rw-r--r--src/binfmt/binfmt.c1
-rw-r--r--src/boot/bootctl.c1
-rw-r--r--src/bootchart/bootchart.c1
-rw-r--r--src/bootchart/store.c3
-rw-r--r--src/bootchart/svg.c1
-rw-r--r--src/bus-proxyd/bus-proxyd.c1
-rw-r--r--src/bus-proxyd/proxy.c22
-rw-r--r--src/cgtop/cgtop.c1
-rw-r--r--src/core/audit-fd.c1
-rw-r--r--src/core/automount.c3
-rw-r--r--src/core/busname.c3
-rw-r--r--src/core/cgroup.c3
-rw-r--r--src/core/dbus-cgroup.c3
-rw-r--r--src/core/dbus-execute.c15
-rw-r--r--src/core/dbus-manager.c3
-rw-r--r--src/core/dbus-service.c3
-rw-r--r--src/core/dbus.c3
-rw-r--r--src/core/execute.c18
-rw-r--r--src/core/ima-setup.c3
-rw-r--r--src/core/killall.c3
-rw-r--r--src/core/load-fragment.c3
-rw-r--r--src/core/machine-id-setup.c3
-rw-r--r--src/core/main.c1
-rw-r--r--src/core/manager.c3
-rw-r--r--src/core/namespace.c3
-rw-r--r--src/core/path.c3
-rw-r--r--src/core/service.c3
-rw-r--r--src/core/smack-setup.c3
-rw-r--r--src/core/socket.c7
-rw-r--r--src/core/swap.c3
-rw-r--r--src/core/umount.c3
-rw-r--r--src/cryptsetup/cryptsetup-generator.c1
-rw-r--r--src/dbus1-generator/dbus1-generator.c11
-rw-r--r--src/delta/delta.c1
-rw-r--r--src/firstboot/firstboot.c1
-rw-r--r--src/fsck/fsck.c13
-rw-r--r--src/fstab-generator/fstab-generator.c1
-rw-r--r--src/getty-generator/getty-generator.c1
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c1
-rw-r--r--src/hwdb/hwdb.c1
-rw-r--r--src/import/curl-util.c3
-rw-r--r--src/import/export-raw.c1
-rw-r--r--src/import/export-tar.c3
-rw-r--r--src/import/export.c1
-rw-r--r--src/import/import-common.c3
-rw-r--r--src/import/import-raw.c3
-rw-r--r--src/import/import-tar.c3
-rw-r--r--src/import/import.c1
-rw-r--r--src/import/importd.c18
-rw-r--r--src/import/pull-common.c3
-rw-r--r--src/import/pull-dkr.c1
-rw-r--r--src/import/pull-job.c3
-rw-r--r--src/import/pull-raw.c3
-rw-r--r--src/import/pull-tar.c3
-rw-r--r--src/import/test-qcow2.c4
-rw-r--r--src/initctl/initctl.c15
-rw-r--r--src/journal-remote/journal-gatewayd.c13
-rw-r--r--src/journal-remote/journal-remote-parse.c3
-rw-r--r--src/journal-remote/journal-remote.c3
-rw-r--r--src/journal-remote/journal-upload.c3
-rw-r--r--src/journal/cat.c1
-rw-r--r--src/journal/catalog.c1
-rw-r--r--src/journal/compress.c9
-rw-r--r--src/journal/coredump-vacuum.c3
-rw-r--r--src/journal/coredump.c1
-rw-r--r--src/journal/coredumpctl.c1
-rw-r--r--src/journal/journal-authenticate.c5
-rw-r--r--src/journal/journal-def.h5
-rw-r--r--src/journal/journal-file.c3
-rw-r--r--src/journal/journal-qrcode.h3
-rw-r--r--src/journal/journal-send.c1
-rw-r--r--src/journal/journal-vacuum.c4
-rw-r--r--src/journal/journal-verify.c9
-rw-r--r--src/journal/journalctl.c1
-rw-r--r--src/journal/journald-audit.c3
-rw-r--r--src/journal/journald-console.c1
-rw-r--r--src/journal/journald-kmsg.c3
-rw-r--r--src/journal/journald-native.c3
-rw-r--r--src/journal/journald-server.c3
-rw-r--r--src/journal/journald-stream.c3
-rw-r--r--src/journal/journald-syslog.c3
-rw-r--r--src/journal/sd-journal.c2
-rw-r--r--src/journal/stacktrace.c3
-rw-r--r--src/journal/test-catalog.c5
-rw-r--r--src/journal/test-compress.c3
-rw-r--r--src/journal/test-journal-init.c4
-rw-r--r--src/journal/test-journal-send.c3
-rw-r--r--src/journal/test-journal-verify.c7
-rw-r--r--src/journal/test-mmap-cache.c3
-rw-r--r--src/libsystemd-network/arp-util.c3
-rw-r--r--src/libsystemd-network/dhcp-network.c12
-rw-r--r--src/libsystemd-network/dhcp6-network.c16
-rw-r--r--src/libsystemd-network/icmp6-util.c18
-rw-r--r--src/libsystemd-network/lldp-network.c7
-rw-r--r--src/libsystemd-network/sd-dhcp-lease.c1
-rw-r--r--src/libsystemd-network/sd-dhcp-server.c1
-rw-r--r--src/libsystemd-network/sd-dhcp6-client.c1
-rw-r--r--src/libsystemd-network/sd-ipv4acd.c1
-rw-r--r--src/libsystemd-network/sd-lldp.c1
-rw-r--r--src/libsystemd-network/sd-pppoe.c3
-rw-r--r--src/libsystemd-network/test-dhcp-client.c1
-rw-r--r--src/libsystemd-network/test-dhcp6-client.c1
-rw-r--r--src/libsystemd-network/test-ipv4ll.c1
-rw-r--r--src/libsystemd-network/test-lldp.c1
-rw-r--r--src/libsystemd/sd-bus/bus-container.c7
-rw-r--r--src/libsystemd/sd-bus/bus-creds.c1
-rw-r--r--src/libsystemd/sd-bus/bus-introspect.c3
-rw-r--r--src/libsystemd/sd-bus/bus-kernel.c3
-rw-r--r--src/libsystemd/sd-bus/bus-match.c3
-rw-r--r--src/libsystemd/sd-bus/bus-message.c3
-rw-r--r--src/libsystemd/sd-bus/bus-socket.c3
-rw-r--r--src/libsystemd/sd-bus/bus-track.c3
-rw-r--r--src/libsystemd/sd-bus/busctl.c1
-rw-r--r--src/libsystemd/sd-bus/sd-bus.c1
-rw-r--r--src/libsystemd/sd-bus/test-bus-benchmark.c1
-rw-r--r--src/libsystemd/sd-bus/test-bus-chat.c1
-rw-r--r--src/libsystemd/sd-bus/test-bus-kernel-bloom.c1
-rw-r--r--src/libsystemd/sd-bus/test-bus-kernel.c1
-rw-r--r--src/libsystemd/sd-bus/test-bus-marshal.c1
-rw-r--r--src/libsystemd/sd-bus/test-bus-zero-copy.c1
-rw-r--r--src/libsystemd/sd-daemon/sd-daemon.c1
-rw-r--r--src/libsystemd/sd-device/device-enumerator.c1
-rw-r--r--src/libsystemd/sd-device/device-private.c1
-rw-r--r--src/libsystemd/sd-device/sd-device.c1
-rw-r--r--src/libsystemd/sd-event/sd-event.c1
-rw-r--r--src/libsystemd/sd-event/test-event.c4
-rw-r--r--src/libsystemd/sd-hwdb/sd-hwdb.c1
-rw-r--r--src/libsystemd/sd-id128/sd-id128.c1
-rw-r--r--src/libsystemd/sd-login/sd-login.c1
-rw-r--r--src/libsystemd/sd-login/test-login.c1
-rw-r--r--src/libsystemd/sd-netlink/sd-netlink.c1
-rw-r--r--src/libsystemd/sd-network/network-util.c3
-rw-r--r--src/libsystemd/sd-network/sd-network.c1
-rw-r--r--src/libsystemd/sd-path/sd-path.c1
-rw-r--r--src/libsystemd/sd-resolve/sd-resolve.c1
-rw-r--r--src/libudev/libudev-monitor.c1
-rw-r--r--src/libudev/libudev-queue.c1
-rw-r--r--src/libudev/libudev.c1
-rw-r--r--src/locale/localectl.c1
-rw-r--r--src/locale/localed.c9
-rw-r--r--src/login/inhibit.c1
-rw-r--r--src/login/logind-acl.c3
-rw-r--r--src/login/logind-button.c3
-rw-r--r--src/login/logind-core.c9
-rw-r--r--src/login/logind-dbus.c1
-rw-r--r--src/login/logind-inhibit.c3
-rw-r--r--src/login/logind-seat.c3
-rw-r--r--src/login/logind-session-dbus.c12
-rw-r--r--src/login/logind-session-device.c5
-rw-r--r--src/login/logind-session.c3
-rw-r--r--src/login/logind-user.c3
-rw-r--r--src/login/logind.c3
-rw-r--r--src/login/pam_systemd.c1
-rw-r--r--src/login/test-inhibit.c1
-rw-r--r--src/machine/machine-dbus.c19
-rw-r--r--src/machine/machine.c3
-rw-r--r--src/machine/machinectl.c1
-rw-r--r--src/machine/machined-dbus.c18
-rw-r--r--src/machine/machined.c10
-rw-r--r--src/modules-load/modules-load.c1
-rw-r--r--src/network/networkd-link.c6
-rw-r--r--src/network/networkd-manager.c1
-rw-r--r--src/network/networkd-netdev-tuntap.c1
-rw-r--r--src/network/networkd-netdev.c3
-rw-r--r--src/network/networkd-network.c3
-rw-r--r--src/nspawn/nspawn-cgroup.c3
-rw-r--r--src/nspawn/nspawn-expose-ports.c3
-rw-r--r--src/nspawn/nspawn-setuid.c3
-rw-r--r--src/nspawn/nspawn.c1
-rw-r--r--src/random-seed/random-seed.c1
-rw-r--r--src/reply-password/reply-password.c1
-rw-r--r--src/resolve/resolved-dns-scope.c13
-rw-r--r--src/resolve/resolved-dns-stream.c1
-rw-r--r--src/resolve/resolved-dns-transaction.c7
-rw-r--r--src/resolve/resolved-llmnr.c3
-rw-r--r--src/resolve/resolved-manager.c1
-rw-r--r--src/rfkill/rfkill.c1
-rw-r--r--src/run/run.c1
-rw-r--r--src/shared/acpi-fpdt.c13
-rw-r--r--src/shared/ask-password-api.c3
-rw-r--r--src/shared/base-filesystem.c1
-rw-r--r--src/shared/bus-util.c3
-rw-r--r--src/shared/cgroup-show.c3
-rw-r--r--src/shared/clean-ipc.c3
-rw-r--r--src/shared/condition.c3
-rw-r--r--src/shared/conf-parser.c1
-rw-r--r--src/shared/dropin.c3
-rw-r--r--src/shared/efivars.c5
-rw-r--r--src/shared/generator.c3
-rw-r--r--src/shared/install.c1
-rw-r--r--src/shared/logs-show.c3
-rw-r--r--src/shared/machine-image.c3
-rw-r--r--src/shared/machine-pool.c3
-rw-r--r--src/shared/pager.c3
-rw-r--r--src/shared/ptyfwd.c3
-rw-r--r--src/shared/sleep-config.c3
-rw-r--r--src/shared/spawn-polkit-agent.c1
-rw-r--r--src/shared/switch-root.c3
-rw-r--r--src/shared/utmp-wtmp.c1
-rw-r--r--src/shared/watchdog.c1
-rw-r--r--src/sleep/sleep.c1
-rw-r--r--src/socket-proxy/socket-proxyd.c1
-rw-r--r--src/sysctl/sysctl.c1
-rw-r--r--src/systemctl/systemctl.c1
-rw-r--r--src/sysusers/sysusers.c1
-rw-r--r--src/sysv-generator/sysv-generator.c1
-rw-r--r--src/test/test-btrfs.c7
-rw-r--r--src/test/test-capability.c12
-rw-r--r--src/test/test-cgroup-util.c5
-rw-r--r--src/test/test-copy.c1
-rw-r--r--src/test/test-fdset.c3
-rw-r--r--src/test/test-fileio.c13
-rw-r--r--src/test/test-namespace.c1
-rw-r--r--src/test/test-path-util.c1
-rw-r--r--src/test/test-path.c1
-rw-r--r--src/test/test-sigbus.c3
-rw-r--r--src/test/test-socket-util.c1
-rw-r--r--src/test/test-terminal-util.c1
-rw-r--r--src/test/test-tmpfiles.c1
-rw-r--r--src/test/test-unit-file.c1
-rw-r--r--src/test/test-util.c1
-rw-r--r--src/timesync/timesyncd-manager.c3
-rw-r--r--src/timesync/timesyncd.c7
-rw-r--r--src/tmpfiles/tmpfiles.c1
-rw-r--r--src/tty-ask-password-agent/tty-ask-password-agent.c1
-rw-r--r--src/udev/ata_id/ata_id.c1
-rw-r--r--src/udev/net/link-config.c1
-rw-r--r--src/udev/scsi_id/scsi_id.c1
-rw-r--r--src/udev/udev-builtin-blkid.c1
-rw-r--r--src/udev/udev-builtin-btrfs.c1
-rw-r--r--src/udev/udev-builtin-input_id.c1
-rw-r--r--src/udev/udev-builtin-keyboard.c1
-rw-r--r--src/udev/udev-builtin-net_id.c1
-rw-r--r--src/udev/udev-builtin-usb_id.c1
-rw-r--r--src/udev/udev-ctrl.c3
-rw-r--r--src/udev/udev-event.c1
-rw-r--r--src/udev/udev-rules.c1
-rw-r--r--src/udev/udevadm-info.c1
-rw-r--r--src/udev/udevadm-monitor.c5
-rw-r--r--src/udev/udevd.c1
-rw-r--r--src/udev/v4l_id/v4l_id.c1
-rw-r--r--src/update-done/update-done.c3
-rw-r--r--src/vconsole/vconsole-setup.c1
275 files changed, 973 insertions, 659 deletions
diff --git a/Makefile.am b/Makefile.am
index 9ef55f4e43..2bfd3aeea1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -783,6 +783,8 @@ libbasic_la_SOURCES = \
src/basic/util.h \
src/basic/string-util.c \
src/basic/string-util.h \
+ src/basic/fd-util.c \
+ src/basic/fd-util.h \
src/basic/extract-word.c \
src/basic/extract-word.h \
src/basic/escape.c \
diff --git a/src/activate/activate.c b/src/activate/activate.c
index adb43623cf..0e6ead310e 100644
--- a/src/activate/activate.c
+++ b/src/activate/activate.c
@@ -34,6 +34,7 @@
#include "socket-util.h"
#include "string-util.h"
#include "strv.h"
+#include "fd-util.h"
static char** arg_listen = NULL;
static bool arg_accept = false;
diff --git a/src/basic/async.c b/src/basic/async.c
index 7725e6d7d3..c3135f0efe 100644
--- a/src/basic/async.c
+++ b/src/basic/async.c
@@ -23,6 +23,7 @@
#include <unistd.h>
#include "async.h"
+#include "fd-util.h"
#include "log.h"
#include "util.h"
diff --git a/src/basic/audit.c b/src/basic/audit.c
index 1f593aa813..af43ec8097 100644
--- a/src/basic/audit.c
+++ b/src/basic/audit.c
@@ -22,11 +22,12 @@
#include <errno.h>
#include <stdio.h>
-#include "macro.h"
#include "audit.h"
-#include "util.h"
-#include "process-util.h"
+#include "fd-util.h"
#include "fileio.h"
+#include "macro.h"
+#include "process-util.h"
+#include "util.h"
int audit_session_from_pid(pid_t pid, uint32_t *id) {
_cleanup_free_ char *s = NULL;
diff --git a/src/basic/barrier.c b/src/basic/barrier.c
index 436ba95989..2d55bab4ab 100644
--- a/src/basic/barrier.c
+++ b/src/basic/barrier.c
@@ -30,6 +30,7 @@
#include <unistd.h>
#include "barrier.h"
+#include "fd-util.h"
#include "macro.h"
#include "util.h"
diff --git a/src/basic/btrfs-util.c b/src/basic/btrfs-util.c
index df7b959c12..f799f8dcc2 100644
--- a/src/basic/btrfs-util.c
+++ b/src/basic/btrfs-util.c
@@ -27,7 +27,9 @@
#endif
#include "btrfs-ctree.h"
+#include "btrfs-util.h"
#include "copy.h"
+#include "fd-util.h"
#include "fileio.h"
#include "macro.h"
#include "missing.h"
@@ -36,7 +38,6 @@
#include "smack-util.h"
#include "string-util.h"
#include "util.h"
-#include "btrfs-util.h"
/* WARNING: Be careful with file system ioctls! When we get an fd, we
* need to make sure it either refers to only a regular file or
diff --git a/src/basic/capability.c b/src/basic/capability.c
index 8dbe4da5bb..6f25b5dee9 100644
--- a/src/basic/capability.c
+++ b/src/basic/capability.c
@@ -19,18 +19,18 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <unistd.h>
#include <errno.h>
+#include <grp.h>
#include <stdio.h>
#include <sys/capability.h>
#include <sys/prctl.h>
-#include "grp.h"
+#include <unistd.h>
+#include "capability.h"
+#include "fileio.h"
+#include "log.h"
#include "macro.h"
#include "util.h"
-#include "log.h"
-#include "fileio.h"
-#include "capability.h"
int have_effective_cap(int value) {
_cleanup_cap_free_ cap_t cap;
diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
index ce21ef73eb..958497543a 100644
--- a/src/basic/cgroup-util.c
+++ b/src/basic/cgroup-util.c
@@ -29,7 +29,9 @@
#include <sys/types.h>
#include <unistd.h>
+#include "cgroup-util.h"
#include "extract-word.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "login-util.h"
@@ -42,7 +44,6 @@
#include "string-util.h"
#include "unit-name.h"
#include "util.h"
-#include "cgroup-util.h"
int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) {
_cleanup_free_ char *fs = NULL;
diff --git a/src/basic/clock-util.c b/src/basic/clock-util.c
index 03ec5725ae..00ee4c2796 100644
--- a/src/basic/clock-util.c
+++ b/src/basic/clock-util.c
@@ -26,10 +26,11 @@
#include <sys/ioctl.h>
#include <sys/time.h>
+#include "clock-util.h"
+#include "fd-util.h"
#include "macro.h"
#include "string-util.h"
#include "util.h"
-#include "clock-util.h"
int clock_get_hwclock(struct tm *tm) {
_cleanup_close_ int fd = -1;
diff --git a/src/basic/clock-util.h b/src/basic/clock-util.h
index 8c2d235430..fef2d471a6 100644
--- a/src/basic/clock-util.h
+++ b/src/basic/clock-util.h
@@ -21,6 +21,7 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include <time.h>
int clock_is_localtime(void);
int clock_set_timezone(int *min);
diff --git a/src/basic/conf-files.c b/src/basic/conf-files.c
index 0e44d1bbad..3af3fe392c 100644
--- a/src/basic/conf-files.c
+++ b/src/basic/conf-files.c
@@ -25,6 +25,8 @@
#include <stdlib.h>
#include <string.h>
+#include "conf-files.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "log.h"
#include "macro.h"
@@ -33,7 +35,6 @@
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "conf-files.h"
static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) {
_cleanup_closedir_ DIR *dir = NULL;
diff --git a/src/basic/copy.c b/src/basic/copy.c
index 7702d906c7..c15527df22 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -23,10 +23,11 @@
#include <sys/xattr.h>
#include "btrfs-util.h"
+#include "copy.h"
+#include "fd-util.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "copy.h"
#define COPY_BUFFER_SIZE (16*1024)
diff --git a/src/basic/extract-word.c b/src/basic/extract-word.c
index 52d2672390..f2b74802fa 100644
--- a/src/basic/extract-word.c
+++ b/src/basic/extract-word.c
@@ -22,7 +22,6 @@
#include "escape.h"
#include "utf8.h"
#include "util.h"
-
#include "extract-word.h"
int extract_first_word(const char **p, char **ret, const char *separators, ExtractFlags flags) {
diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c
new file mode 100644
index 0000000000..e54c104597
--- /dev/null
+++ b/src/basic/fd-util.c
@@ -0,0 +1,321 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+ This file is part of systemd.
+
+ Copyright 2010 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include "fd-util.h"
+#include "util.h"
+
+int close_nointr(int fd) {
+ assert(fd >= 0);
+
+ if (close(fd) >= 0)
+ return 0;
+
+ /*
+ * Just ignore EINTR; a retry loop is the wrong thing to do on
+ * Linux.
+ *
+ * http://lkml.indiana.edu/hypermail/linux/kernel/0509.1/0877.html
+ * https://bugzilla.gnome.org/show_bug.cgi?id=682819
+ * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR
+ * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain
+ */
+ if (errno == EINTR)
+ return 0;
+
+ return -errno;
+}
+
+int safe_close(int fd) {
+
+ /*
+ * Like close_nointr() but cannot fail. Guarantees errno is
+ * unchanged. Is a NOP with negative fds passed, and returns
+ * -1, so that it can be used in this syntax:
+ *
+ * fd = safe_close(fd);
+ */
+
+ if (fd >= 0) {
+ PROTECT_ERRNO;
+
+ /* The kernel might return pretty much any error code
+ * via close(), but the fd will be closed anyway. The
+ * only condition we want to check for here is whether
+ * the fd was invalid at all... */
+
+ assert_se(close_nointr(fd) != -EBADF);
+ }
+
+ return -1;
+}
+
+void safe_close_pair(int p[]) {
+ assert(p);
+
+ if (p[0] == p[1]) {
+ /* Special case pairs which use the same fd in both
+ * directions... */
+ p[0] = p[1] = safe_close(p[0]);
+ return;
+ }
+
+ p[0] = safe_close(p[0]);
+ p[1] = safe_close(p[1]);
+}
+
+void close_many(const int fds[], unsigned n_fd) {
+ unsigned i;
+
+ assert(fds || n_fd <= 0);
+
+ for (i = 0; i < n_fd; i++)
+ safe_close(fds[i]);
+}
+
+int fclose_nointr(FILE *f) {
+ assert(f);
+
+ /* Same as close_nointr(), but for fclose() */
+
+ if (fclose(f) == 0)
+ return 0;
+
+ if (errno == EINTR)
+ return 0;
+
+ return -errno;
+}
+
+FILE* safe_fclose(FILE *f) {
+
+ /* Same as safe_close(), but for fclose() */
+
+ if (f) {
+ PROTECT_ERRNO;
+
+ assert_se(fclose_nointr(f) != EBADF);
+ }
+
+ return NULL;
+}
+
+DIR* safe_closedir(DIR *d) {
+
+ if (d) {
+ PROTECT_ERRNO;
+
+ assert_se(closedir(d) >= 0 || errno != EBADF);
+ }
+
+ return NULL;
+}
+
+int fd_nonblock(int fd, bool nonblock) {
+ int flags, nflags;
+
+ assert(fd >= 0);
+
+ flags = fcntl(fd, F_GETFL, 0);
+ if (flags < 0)
+ return -errno;
+
+ if (nonblock)
+ nflags = flags | O_NONBLOCK;
+ else
+ nflags = flags & ~O_NONBLOCK;
+
+ if (nflags == flags)
+ return 0;
+
+ if (fcntl(fd, F_SETFL, nflags) < 0)
+ return -errno;
+
+ return 0;
+}
+
+int fd_cloexec(int fd, bool cloexec) {
+ int flags, nflags;
+
+ assert(fd >= 0);
+
+ flags = fcntl(fd, F_GETFD, 0);
+ if (flags < 0)
+ return -errno;
+
+ if (cloexec)
+ nflags = flags | FD_CLOEXEC;
+ else
+ nflags = flags & ~FD_CLOEXEC;
+
+ if (nflags == flags)
+ return 0;
+
+ if (fcntl(fd, F_SETFD, nflags) < 0)
+ return -errno;
+
+ return 0;
+}
+
+_pure_ static bool fd_in_set(int fd, const int fdset[], unsigned n_fdset) {
+ unsigned i;
+
+ assert(n_fdset == 0 || fdset);
+
+ for (i = 0; i < n_fdset; i++)
+ if (fdset[i] == fd)
+ return true;
+
+ return false;
+}
+
+int close_all_fds(const int except[], unsigned n_except) {
+ _cleanup_closedir_ DIR *d = NULL;
+ struct dirent *de;
+ int r = 0;
+
+ assert(n_except == 0 || except);
+
+ d = opendir("/proc/self/fd");
+ if (!d) {
+ int fd;
+ struct rlimit rl;
+
+ /* When /proc isn't available (for example in chroots)
+ * the fallback is brute forcing through the fd
+ * table */
+
+ assert_se(getrlimit(RLIMIT_NOFILE, &rl) >= 0);
+ for (fd = 3; fd < (int) rl.rlim_max; fd ++) {
+
+ if (fd_in_set(fd, except, n_except))
+ continue;
+
+ if (close_nointr(fd) < 0)
+ if (errno != EBADF && r == 0)
+ r = -errno;
+ }
+
+ return r;
+ }
+
+ while ((de = readdir(d))) {
+ int fd = -1;
+
+ if (hidden_file(de->d_name))
+ continue;
+
+ if (safe_atoi(de->d_name, &fd) < 0)
+ /* Let's better ignore this, just in case */
+ continue;
+
+ if (fd < 3)
+ continue;
+
+ if (fd == dirfd(d))
+ continue;
+
+ if (fd_in_set(fd, except, n_except))
+ continue;
+
+ if (close_nointr(fd) < 0) {
+ /* Valgrind has its own FD and doesn't want to have it closed */
+ if (errno != EBADF && r == 0)
+ r = -errno;
+ }
+ }
+
+ return r;
+}
+
+int same_fd(int a, int b) {
+ struct stat sta, stb;
+ pid_t pid;
+ int r, fa, fb;
+
+ assert(a >= 0);
+ assert(b >= 0);
+
+ /* Compares two file descriptors. Note that semantics are
+ * quite different depending on whether we have kcmp() or we
+ * don't. If we have kcmp() this will only return true for
+ * dup()ed file descriptors, but not otherwise. If we don't
+ * have kcmp() this will also return true for two fds of the same
+ * file, created by separate open() calls. Since we use this
+ * call mostly for filtering out duplicates in the fd store
+ * this difference hopefully doesn't matter too much. */
+
+ if (a == b)
+ return true;
+
+ /* Try to use kcmp() if we have it. */
+ pid = getpid();
+ r = kcmp(pid, pid, KCMP_FILE, a, b);
+ if (r == 0)
+ return true;
+ if (r > 0)
+ return false;
+ if (errno != ENOSYS)
+ return -errno;
+
+ /* We don't have kcmp(), use fstat() instead. */
+ if (fstat(a, &sta) < 0)
+ return -errno;
+
+ if (fstat(b, &stb) < 0)
+ return -errno;
+
+ if ((sta.st_mode & S_IFMT) != (stb.st_mode & S_IFMT))
+ return false;
+
+ /* We consider all device fds different, since two device fds
+ * might refer to quite different device contexts even though
+ * they share the same inode and backing dev_t. */
+
+ if (S_ISCHR(sta.st_mode) || S_ISBLK(sta.st_mode))
+ return false;
+
+ if (sta.st_dev != stb.st_dev || sta.st_ino != stb.st_ino)
+ return false;
+
+ /* The fds refer to the same inode on disk, let's also check
+ * if they have the same fd flags. This is useful to
+ * distinguish the read and write side of a pipe created with
+ * pipe(). */
+ fa = fcntl(a, F_GETFL);
+ if (fa < 0)
+ return -errno;
+
+ fb = fcntl(b, F_GETFL);
+ if (fb < 0)
+ return -errno;
+
+ return fa == fb;
+}
+
+void cmsg_close_all(struct msghdr *mh) {
+ struct cmsghdr *cmsg;
+
+ assert(mh);
+
+ CMSG_FOREACH(cmsg, mh)
+ if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS)
+ close_many((int*) CMSG_DATA(cmsg), (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int));
+}
diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h
new file mode 100644
index 0000000000..be00d881c3
--- /dev/null
+++ b/src/basic/fd-util.h
@@ -0,0 +1,69 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+#pragma once
+
+/***
+ This file is part of systemd.
+
+ Copyright 2010 Lennart Poettering
+
+ systemd is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1 of the License, or
+ (at your option) any later version.
+
+ systemd is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <stdio.h>
+#include <dirent.h>
+#include <stdbool.h>
+#include <sys/socket.h>
+
+#include "macro.h"
+
+int close_nointr(int fd);
+int safe_close(int fd);
+void safe_close_pair(int p[]);
+
+void close_many(const int fds[], unsigned n_fd);
+
+int fclose_nointr(FILE *f);
+FILE* safe_fclose(FILE *f);
+DIR* safe_closedir(DIR *f);
+
+static inline void closep(int *fd) {
+ safe_close(*fd);
+}
+
+static inline void close_pairp(int (*p)[2]) {
+ safe_close_pair(*p);
+}
+
+static inline void fclosep(FILE **f) {
+ safe_fclose(*f);
+}
+
+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, pclose);
+DEFINE_TRIVIAL_CLEANUP_FUNC(DIR*, closedir);
+
+#define _cleanup_close_ _cleanup_(closep)
+#define _cleanup_fclose_ _cleanup_(fclosep)
+#define _cleanup_pclose_ _cleanup_(pclosep)
+#define _cleanup_closedir_ _cleanup_(closedirp)
+#define _cleanup_close_pair_ _cleanup_(close_pairp)
+
+int fd_nonblock(int fd, bool nonblock);
+int fd_cloexec(int fd, bool cloexec);
+
+int close_all_fds(const int except[], unsigned n_except);
+
+int same_fd(int a, int b);
+
+void cmsg_close_all(struct msghdr *mh);
diff --git a/src/basic/fdset.c b/src/basic/fdset.c
index 2882f515b5..9669110828 100644
--- a/src/basic/fdset.c
+++ b/src/basic/fdset.c
@@ -25,10 +25,11 @@
#include "sd-daemon.h"
+#include "fd-util.h"
+#include "fdset.h"
+#include "macro.h"
#include "set.h"
#include "util.h"
-#include "macro.h"
-#include "fdset.h"
#define MAKE_SET(s) ((Set*) s)
#define MAKE_FDSET(s) ((FDSet*) s)
diff --git a/src/basic/fileio.c b/src/basic/fileio.c
index f8ccf79221..5d33309ab2 100644
--- a/src/basic/fileio.c
+++ b/src/basic/fileio.c
@@ -23,11 +23,12 @@
#include "ctype.h"
#include "escape.h"
+#include "fd-util.h"
+#include "fileio.h"
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
#include "util.h"
-#include "fileio.h"
int write_string_stream(FILE *f, const char *line, bool enforce_newline) {
diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c
index 8d10615682..7d058416e5 100644
--- a/src/basic/hostname-util.c
+++ b/src/basic/hostname-util.c
@@ -22,9 +22,10 @@
#include <ctype.h>
#include <sys/utsname.h>
+#include "fd-util.h"
+#include "hostname-util.h"
#include "string-util.h"
#include "util.h"
-#include "hostname-util.h"
bool hostname_is_set(void) {
struct utsname u;
diff --git a/src/basic/locale-util.c b/src/basic/locale-util.c
index a44daf8f5e..44e1628664 100644
--- a/src/basic/locale-util.c
+++ b/src/basic/locale-util.c
@@ -21,12 +21,13 @@
#include <sys/mman.h>
+#include "fd-util.h"
+#include "locale-util.h"
#include "set.h"
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
#include "util.h"
-#include "locale-util.h"
static int add_locales_from_archive(Set *locales) {
/* Stolen from glibc... */
diff --git a/src/basic/lockfile-util.c b/src/basic/lockfile-util.c
index f3ec6a3e52..e573dcb56f 100644
--- a/src/basic/lockfile-util.c
+++ b/src/basic/lockfile-util.c
@@ -27,9 +27,10 @@
#include <limits.h>
#include <sys/file.h>
-#include "util.h"
-#include "lockfile-util.h"
+#include "fd-util.h"
#include "fileio.h"
+#include "lockfile-util.h"
+#include "util.h"
int make_lock_file(const char *p, int operation, LockFile *ret) {
_cleanup_close_ int fd = -1;
diff --git a/src/basic/log.c b/src/basic/log.c
index acc390b8d3..99dccb1f10 100644
--- a/src/basic/log.c
+++ b/src/basic/log.c
@@ -31,7 +31,9 @@
#include "sd-messages.h"
+#include "fd-util.h"
#include "formats-util.h"
+#include "log.h"
#include "macro.h"
#include "missing.h"
#include "process-util.h"
@@ -40,7 +42,6 @@
#include "string-util.h"
#include "terminal-util.h"
#include "util.h"
-#include "log.h"
#define SNDBUF_SIZE (8*1024*1024)
diff --git a/src/basic/memfd-util.c b/src/basic/memfd-util.c
index 4dafd69daf..9d638b27f0 100644
--- a/src/basic/memfd-util.c
+++ b/src/basic/memfd-util.c
@@ -27,11 +27,12 @@
#include <sys/mman.h>
#include <sys/prctl.h>
+#include "fd-util.h"
+#include "memfd-util.h"
#include "missing.h"
#include "string-util.h"
#include "utf8.h"
#include "util.h"
-#include "memfd-util.h"
int memfd_new(const char *name) {
_cleanup_free_ char *g = NULL;
diff --git a/src/basic/memfd-util.h b/src/basic/memfd-util.h
index 3ed551fb37..2cb404ea81 100644
--- a/src/basic/memfd-util.h
+++ b/src/basic/memfd-util.h
@@ -21,7 +21,8 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-
+#include <sys/types.h>
+#include <inttypes.h>
int memfd_new(const char *name);
int memfd_new_and_map(const char *name, size_t sz, void **p);
diff --git a/src/basic/path-util.c b/src/basic/path-util.c
index 31328807f4..7b01633f5f 100644
--- a/src/basic/path-util.c
+++ b/src/basic/path-util.c
@@ -27,14 +27,15 @@
#include <sys/statvfs.h>
#include <unistd.h>
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
#include "macro.h"
#include "missing.h"
+#include "path-util.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "path-util.h"
bool path_is_absolute(const char *p) {
return p[0] == '/';
diff --git a/src/basic/process-util.c b/src/basic/process-util.c
index bfde17a956..949bd1f64d 100644
--- a/src/basic/process-util.c
+++ b/src/basic/process-util.c
@@ -29,12 +29,13 @@
#include <unistd.h>
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
+#include "process-util.h"
#include "signal-util.h"
#include "string-util.h"
#include "util.h"
-#include "process-util.h"
int get_process_state(pid_t pid) {
const char *p;
diff --git a/src/basic/random-util.c b/src/basic/random-util.c
index b230044f50..e183165b9f 100644
--- a/src/basic/random-util.c
+++ b/src/basic/random-util.c
@@ -17,20 +17,21 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <stdint.h>
#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
#include <fcntl.h>
-#include <time.h>
+#include <linux/random.h>
+#include <stdint.h>
#ifdef HAVE_SYS_AUXV_H
#include <sys/auxv.h>
#endif
-#include <linux/random.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <time.h>
+#include "fd-util.h"
+#include "missing.h"
#include "random-util.h"
#include "time-util.h"
-#include "missing.h"
#include "util.h"
int dev_urandom(void *p, size_t n) {
diff --git a/src/basic/rm-rf.c b/src/basic/rm-rf.c
index 5a75090a6d..a5daa23f86 100644
--- a/src/basic/rm-rf.c
+++ b/src/basic/rm-rf.c
@@ -20,10 +20,11 @@
***/
#include "btrfs-util.h"
+#include "fd-util.h"
#include "path-util.h"
+#include "rm-rf.h"
#include "string-util.h"
#include "util.h"
-#include "rm-rf.h"
int rm_rf_children(int fd, RemoveFlags flags, struct stat *root_dev) {
_cleanup_closedir_ DIR *d = NULL;
diff --git a/src/basic/socket-label.c b/src/basic/socket-label.c
index 937124cc02..4099ea6f9f 100644
--- a/src/basic/socket-label.c
+++ b/src/basic/socket-label.c
@@ -19,18 +19,19 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <string.h>
-#include <unistd.h>
#include <errno.h>
-#include <sys/stat.h>
#include <stddef.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include "fd-util.h"
#include "macro.h"
-#include "util.h"
-#include "mkdir.h"
#include "missing.h"
+#include "mkdir.h"
#include "selinux-util.h"
#include "socket-util.h"
+#include "util.h"
int socket_address_listen(
const SocketAddress *a,
diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c
index 4723653566..5949b99c95 100644
--- a/src/basic/terminal-util.c
+++ b/src/basic/terminal-util.c
@@ -31,13 +31,14 @@
#include <time.h>
#include <unistd.h>
+#include "fd-util.h"
#include "fileio.h"
#include "path-util.h"
#include "process-util.h"
#include "string-util.h"
+#include "terminal-util.h"
#include "time-util.h"
#include "util.h"
-#include "terminal-util.h"
static volatile unsigned cached_columns = 0;
static volatile unsigned cached_lines = 0;
diff --git a/src/basic/time-util.c b/src/basic/time-util.c
index a516d2807b..d117380d52 100644
--- a/src/basic/time-util.c
+++ b/src/basic/time-util.c
@@ -23,11 +23,12 @@
#include <sys/timerfd.h>
#include <sys/timex.h>
+#include "fd-util.h"
#include "path-util.h"
#include "string-util.h"
#include "strv.h"
-#include "util.h"
#include "time-util.h"
+#include "util.h"
usec_t now(clockid_t clock_id) {
struct timespec ts;
diff --git a/src/basic/util.c b/src/basic/util.c
index 233a6c2e35..05f34ea52c 100644
--- a/src/basic/util.c
+++ b/src/basic/util.c
@@ -79,6 +79,7 @@
#include "env-util.h"
#include "escape.h"
#include "exit-status.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "gunicode.h"
@@ -98,8 +99,8 @@
#include "strv.h"
#include "terminal-util.h"
#include "utf8.h"
-#include "virt.h"
#include "util.h"
+#include "virt.h"
/* Put this test here for a lack of better place */
assert_cc(EAGAIN == EWOULDBLOCK);
@@ -121,98 +122,6 @@ size_t page_size(void) {
return pgsz;
}
-int close_nointr(int fd) {
- assert(fd >= 0);
-
- if (close(fd) >= 0)
- return 0;
-
- /*
- * Just ignore EINTR; a retry loop is the wrong thing to do on
- * Linux.
- *
- * http://lkml.indiana.edu/hypermail/linux/kernel/0509.1/0877.html
- * https://bugzilla.gnome.org/show_bug.cgi?id=682819
- * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR
- * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain
- */
- if (errno == EINTR)
- return 0;
-
- return -errno;
-}
-
-int safe_close(int fd) {
-
- /*
- * Like close_nointr() but cannot fail. Guarantees errno is
- * unchanged. Is a NOP with negative fds passed, and returns
- * -1, so that it can be used in this syntax:
- *
- * fd = safe_close(fd);
- */
-
- if (fd >= 0) {
- PROTECT_ERRNO;
-
- /* The kernel might return pretty much any error code
- * via close(), but the fd will be closed anyway. The
- * only condition we want to check for here is whether
- * the fd was invalid at all... */
-
- assert_se(close_nointr(fd) != -EBADF);
- }
-
- return -1;
-}
-
-void close_many(const int fds[], unsigned n_fd) {
- unsigned i;
-
- assert(fds || n_fd <= 0);
-
- for (i = 0; i < n_fd; i++)
- safe_close(fds[i]);
-}
-
-int fclose_nointr(FILE *f) {
- assert(f);
-
- /* Same as close_nointr(), but for fclose() */
-
- if (fclose(f) == 0)
- return 0;
-
- if (errno == EINTR)
- return 0;
-
- return -errno;
-}
-
-FILE* safe_fclose(FILE *f) {
-
- /* Same as safe_close(), but for fclose() */
-
- if (f) {
- PROTECT_ERRNO;
-
- assert_se(fclose_nointr(f) != EBADF);
- }
-
- return NULL;
-}
-
-DIR* safe_closedir(DIR *d) {
-
- if (d) {
- PROTECT_ERRNO;
-
- assert_se(closedir(d) >= 0 || errno != EBADF);
- }
-
- return NULL;
-}
-
int unlink_noerrno(const char *path) {
PROTECT_ERRNO;
int r;
@@ -1304,123 +1213,6 @@ bool hidden_file(const char *filename) {
return hidden_file_allow_backup(filename);
}
-int fd_nonblock(int fd, bool nonblock) {
- int flags, nflags;
-
- assert(fd >= 0);
-
- flags = fcntl(fd, F_GETFL, 0);
- if (flags < 0)
- return -errno;
-
- if (nonblock)
- nflags = flags | O_NONBLOCK;
- else
- nflags = flags & ~O_NONBLOCK;
-
- if (nflags == flags)
- return 0;
-
- if (fcntl(fd, F_SETFL, nflags) < 0)
- return -errno;
-
- return 0;
-}
-
-int fd_cloexec(int fd, bool cloexec) {
- int flags, nflags;
-
- assert(fd >= 0);
-
- flags = fcntl(fd, F_GETFD, 0);
- if (flags < 0)
- return -errno;
-
- if (cloexec)
- nflags = flags | FD_CLOEXEC;
- else
- nflags = flags & ~FD_CLOEXEC;
-
- if (nflags == flags)
- return 0;
-
- if (fcntl(fd, F_SETFD, nflags) < 0)
- return -errno;
-
- return 0;
-}
-
-_pure_ static bool fd_in_set(int fd, const int fdset[], unsigned n_fdset) {
- unsigned i;
-
- assert(n_fdset == 0 || fdset);
-
- for (i = 0; i < n_fdset; i++)
- if (fdset[i] == fd)
- return true;
-
- return false;
-}
-
-int close_all_fds(const int except[], unsigned n_except) {
- _cleanup_closedir_ DIR *d = NULL;
- struct dirent *de;
- int r = 0;
-
- assert(n_except == 0 || except);
-
- d = opendir("/proc/self/fd");
- if (!d) {
- int fd;
- struct rlimit rl;
-
- /* When /proc isn't available (for example in chroots)
- * the fallback is brute forcing through the fd
- * table */
-
- assert_se(getrlimit(RLIMIT_NOFILE, &rl) >= 0);
- for (fd = 3; fd < (int) rl.rlim_max; fd ++) {
-
- if (fd_in_set(fd, except, n_except))
- continue;
-
- if (close_nointr(fd) < 0)
- if (errno != EBADF && r == 0)
- r = -errno;
- }
-
- return r;
- }
-
- while ((de = readdir(d))) {
- int fd = -1;
-
- if (hidden_file(de->d_name))
- continue;
-
- if (safe_atoi(de->d_name, &fd) < 0)
- /* Let's better ignore this, just in case */
- continue;
-
- if (fd < 3)
- continue;
-
- if (fd == dirfd(d))
- continue;
-
- if (fd_in_set(fd, except, n_except))
- continue;
-
- if (close_nointr(fd) < 0) {
- /* Valgrind has its own FD and doesn't want to have it closed */
- if (errno != EBADF && r == 0)
- r = -errno;
- }
- }
-
- return r;
-}
-
bool fstype_is_network(const char *fstype) {
static const char table[] =
"afs\0"
@@ -1480,20 +1272,6 @@ int flush_fd(int fd) {
}
}
-void safe_close_pair(int p[]) {
- assert(p);
-
- if (p[0] == p[1]) {
- /* Special case pairs which use the same fd in both
- * directions... */
- p[0] = p[1] = safe_close(p[0]);
- return;
- }
-
- p[0] = safe_close(p[0]);
- p[1] = safe_close(p[1]);
-}
-
ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll) {
uint8_t *p = buf;
ssize_t n = 0;
@@ -4804,71 +4582,6 @@ int fd_setcrtime(int fd, usec_t usec) {
return 0;
}
-int same_fd(int a, int b) {
- struct stat sta, stb;
- pid_t pid;
- int r, fa, fb;
-
- assert(a >= 0);
- assert(b >= 0);
-
- /* Compares two file descriptors. Note that semantics are
- * quite different depending on whether we have kcmp() or we
- * don't. If we have kcmp() this will only return true for
- * dup()ed file descriptors, but not otherwise. If we don't
- * have kcmp() this will also return true for two fds of the same
- * file, created by separate open() calls. Since we use this
- * call mostly for filtering out duplicates in the fd store
- * this difference hopefully doesn't matter too much. */
-
- if (a == b)
- return true;
-
- /* Try to use kcmp() if we have it. */
- pid = getpid();
- r = kcmp(pid, pid, KCMP_FILE, a, b);
- if (r == 0)
- return true;
- if (r > 0)
- return false;
- if (errno != ENOSYS)
- return -errno;
-
- /* We don't have kcmp(), use fstat() instead. */
- if (fstat(a, &sta) < 0)
- return -errno;
-
- if (fstat(b, &stb) < 0)
- return -errno;
-
- if ((sta.st_mode & S_IFMT) != (stb.st_mode & S_IFMT))
- return false;
-
- /* We consider all device fds different, since two device fds
- * might refer to quite different device contexts even though
- * they share the same inode and backing dev_t. */
-
- if (S_ISCHR(sta.st_mode) || S_ISBLK(sta.st_mode))
- return false;
-
- if (sta.st_dev != stb.st_dev || sta.st_ino != stb.st_ino)
- return false;
-
- /* The fds refer to the same inode on disk, let's also check
- * if they have the same fd flags. This is useful to
- * distinguish the read and write side of a pipe created with
- * pipe(). */
- fa = fcntl(a, F_GETFL);
- if (fa < 0)
- return -errno;
-
- fb = fcntl(b, F_GETFL);
- if (fb < 0)
- return -errno;
-
- return fa == fb;
-}
-
int chattr_fd(int fd, unsigned value, unsigned mask) {
unsigned old_attr, new_attr;
struct stat st;
@@ -5075,16 +4788,6 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
return -1;
}
-void cmsg_close_all(struct msghdr *mh) {
- struct cmsghdr *cmsg;
-
- assert(mh);
-
- CMSG_FOREACH(cmsg, mh)
- if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS)
- close_many((int*) CMSG_DATA(cmsg), (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int));
-}
-
int rename_noreplace(int olddirfd, const char *oldpath, int newdirfd, const char *newpath) {
struct stat buf;
int ret;
diff --git a/src/basic/util.h b/src/basic/util.h
index d1da9ce106..e50fd69664 100644
--- a/src/basic/util.h
+++ b/src/basic/util.h
@@ -87,16 +87,6 @@ static inline const char* one_zero(bool b) {
return b ? "1" : "0";
}
-int close_nointr(int fd);
-int safe_close(int fd);
-void safe_close_pair(int p[]);
-
-void close_many(const int fds[], unsigned n_fd);
-
-int fclose_nointr(FILE *f);
-FILE* safe_fclose(FILE *f);
-DIR* safe_closedir(DIR *f);
-
int parse_size(const char *t, uint64_t base, uint64_t *size);
int parse_boolean(const char *v) _pure_;
@@ -245,11 +235,6 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
} \
struct __useless_struct_to_allow_trailing_semicolon__
-int fd_nonblock(int fd, bool nonblock);
-int fd_cloexec(int fd, bool cloexec);
-
-int close_all_fds(const int except[], unsigned n_except);
-
bool fstype_is_network(const char *fstype);
int flush_fd(int fd);
@@ -410,35 +395,16 @@ static inline void freep(void *p) {
free(*(void**) p);
}
-static inline void closep(int *fd) {
- safe_close(*fd);
-}
-
static inline void umaskp(mode_t *u) {
umask(*u);
}
-static inline void close_pairp(int (*p)[2]) {
- safe_close_pair(*p);
-}
-
-static inline void fclosep(FILE **f) {
- safe_fclose(*f);
-}
-
-DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, pclose);
-DEFINE_TRIVIAL_CLEANUP_FUNC(DIR*, closedir);
DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent);
#define _cleanup_free_ _cleanup_(freep)
-#define _cleanup_close_ _cleanup_(closep)
#define _cleanup_umask_ _cleanup_(umaskp)
#define _cleanup_globfree_ _cleanup_(globfree)
-#define _cleanup_fclose_ _cleanup_(fclosep)
-#define _cleanup_pclose_ _cleanup_(pclosep)
-#define _cleanup_closedir_ _cleanup_(closedirp)
#define _cleanup_endmntent_ _cleanup_(endmntentp)
-#define _cleanup_close_pair_ _cleanup_(close_pairp)
_malloc_ _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) {
if (_unlikely_(b != 0 && a > ((size_t) -1) / b))
@@ -747,8 +713,6 @@ int fd_getcrtime(int fd, usec_t *usec);
int path_getcrtime(const char *p, usec_t *usec);
int fd_getcrtime_at(int dirfd, const char *name, usec_t *usec, int flags);
-int same_fd(int a, int b);
-
int chattr_fd(int fd, unsigned value, unsigned mask);
int chattr_path(const char *p, unsigned value, unsigned mask);
@@ -764,8 +728,6 @@ void sigkill_wait(pid_t *pid);
int syslog_parse_priority(const char **p, int *priority, bool with_facility);
-void cmsg_close_all(struct msghdr *mh);
-
int rename_noreplace(int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
int parse_mode(const char *s, mode_t *ret);
diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
index ca3f26a66f..b96695c353 100644
--- a/src/binfmt/binfmt.c
+++ b/src/binfmt/binfmt.c
@@ -28,6 +28,7 @@
#include <string.h>
#include "conf-files.h"
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
#include "string-util.h"
diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c
index 1016890768..a167f8086c 100644
--- a/src/boot/bootctl.c
+++ b/src/boot/bootctl.c
@@ -39,6 +39,7 @@
#include "blkid-util.h"
#include "efivars.h"
+#include "fd-util.h"
#include "rm-rf.h"
#include "string-util.h"
#include "util.h"
diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
index 7842e0766d..a1699f8736 100644
--- a/src/bootchart/bootchart.c
+++ b/src/bootchart/bootchart.c
@@ -50,6 +50,7 @@
#include "bootchart.h"
#include "conf-parser.h"
+#include "fd-util.h"
#include "fileio.h"
#include "list.h"
#include "macro.h"
diff --git a/src/bootchart/store.c b/src/bootchart/store.c
index f3f55781ad..6066e14288 100644
--- a/src/bootchart/store.c
+++ b/src/bootchart/store.c
@@ -33,12 +33,13 @@
#include "bootchart.h"
#include "cgroup-util.h"
+#include "fd-util.h"
#include "fileio.h"
+#include "store.h"
#include "string-util.h"
#include "strxcpyx.h"
#include "time-util.h"
#include "util.h"
-#include "store.h"
/*
* Alloc a static 4k buffer for stdio - primarily used to increase
diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c
index db5fc863b0..43eca90618 100644
--- a/src/bootchart/svg.c
+++ b/src/bootchart/svg.c
@@ -39,6 +39,7 @@
#include "bootchart.h"
#include "list.h"
#include "utf8.h"
+#include "fd-util.h"
#define time_to_graph(t) ((t) * arg_scale_x)
#define ps_to_graph(n) ((n) * arg_scale_y)
diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c
index e558578bd0..1bbf984a2e 100644
--- a/src/bus-proxyd/bus-proxyd.c
+++ b/src/bus-proxyd/bus-proxyd.c
@@ -37,6 +37,7 @@
#include "bus-xml-policy.h"
#include "capability.h"
#include "def.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "log.h"
#include "proxy.h"
diff --git a/src/bus-proxyd/proxy.c b/src/bus-proxyd/proxy.c
index bc8516f5c6..ea2a01fdae 100644
--- a/src/bus-proxyd/proxy.c
+++ b/src/bus-proxyd/proxy.c
@@ -22,27 +22,29 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <string.h>
#include <errno.h>
#include <poll.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
-#include "log.h"
-#include "util.h"
-#include "sd-daemon.h"
#include "sd-bus.h"
+#include "sd-daemon.h"
+
+#include "bus-control.h"
#include "bus-internal.h"
#include "bus-message.h"
#include "bus-util.h"
-#include "strv.h"
-#include "bus-control.h"
-#include "set.h"
#include "bus-xml-policy.h"
#include "driver.h"
+#include "fd-util.h"
+#include "formats-util.h"
+#include "log.h"
#include "proxy.h"
+#include "set.h"
+#include "strv.h"
#include "synthesize.h"
-#include "formats-util.h"
+#include "util.h"
static int proxy_create_destination(Proxy *p, const char *destination, const char *local_sec, bool negotiate_fds) {
_cleanup_bus_flush_close_unref_ sd_bus *b = NULL;
diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
index ad9cd2532f..3786dae2d9 100644
--- a/src/cgtop/cgtop.c
+++ b/src/cgtop/cgtop.c
@@ -33,6 +33,7 @@
#include "bus-error.h"
#include "bus-util.h"
#include "cgroup-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "hashmap.h"
#include "path-util.h"
diff --git a/src/core/audit-fd.c b/src/core/audit-fd.c
index 5a18e263a8..3ae46d8cfb 100644
--- a/src/core/audit-fd.c
+++ b/src/core/audit-fd.c
@@ -30,6 +30,7 @@
#include "log.h"
#include "util.h"
+#include "fd-util.h"
static bool initialized = false;
static int audit_fd;
diff --git a/src/core/automount.c b/src/core/automount.c
index 1995bb8b7d..c25038ca50 100644
--- a/src/core/automount.c
+++ b/src/core/automount.c
@@ -30,9 +30,11 @@
#include <unistd.h>
#include "async.h"
+#include "automount.h"
#include "bus-error.h"
#include "bus-util.h"
#include "dbus-automount.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "label.h"
#include "mkdir.h"
@@ -43,7 +45,6 @@
#include "string-util.h"
#include "unit-name.h"
#include "unit.h"
-#include "automount.h"
static const UnitActiveState state_translation_table[_AUTOMOUNT_STATE_MAX] = {
[AUTOMOUNT_DEAD] = UNIT_INACTIVE,
diff --git a/src/core/busname.c b/src/core/busname.c
index a7cb56dcbf..335a1fdc4c 100644
--- a/src/core/busname.c
+++ b/src/core/busname.c
@@ -25,14 +25,15 @@
#include "bus-kernel.h"
#include "bus-policy.h"
#include "bus-util.h"
+#include "busname.h"
#include "dbus-busname.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "kdbus.h"
#include "service.h"
#include "signal-util.h"
#include "special.h"
#include "string-util.h"
-#include "busname.h"
static const UnitActiveState state_translation_table[_BUSNAME_STATE_MAX] = {
[BUSNAME_DEAD] = UNIT_INACTIVE,
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 73e58f867c..2a2cf02774 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -23,11 +23,12 @@
#include <fnmatch.h>
#include "cgroup-util.h"
+#include "cgroup.h"
+#include "fd-util.h"
#include "path-util.h"
#include "process-util.h"
#include "special.h"
#include "string-util.h"
-#include "cgroup.h"
#define CGROUP_CPU_QUOTA_PERIOD_USEC ((usec_t) 100 * USEC_PER_MSEC)
diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
index affb997304..6a43be873a 100644
--- a/src/core/dbus-cgroup.c
+++ b/src/core/dbus-cgroup.c
@@ -20,10 +20,11 @@
***/
#include "bus-util.h"
-#include "path-util.h"
#include "cgroup-util.h"
#include "cgroup.h"
#include "dbus-cgroup.h"
+#include "fd-util.h"
+#include "path-util.h"
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_cgroup_device_policy, cgroup_device_policy, CGroupDevicePolicy);
diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
index b8da66c985..cfd89d0fa8 100644
--- a/src/core/dbus-execute.c
+++ b/src/core/dbus-execute.c
@@ -25,19 +25,20 @@
#include <seccomp.h>
#endif
+#include "af-list.h"
#include "bus-util.h"
-#include "missing.h"
-#include "ioprio.h"
-#include "strv.h"
-#include "fileio.h"
-#include "execute.h"
#include "capability.h"
+#include "dbus-execute.h"
#include "env-util.h"
-#include "af-list.h"
+#include "execute.h"
+#include "fd-util.h"
+#include "fileio.h"
+#include "ioprio.h"
+#include "missing.h"
#include "namespace.h"
#include "path-util.h"
+#include "strv.h"
#include "utf8.h"
-#include "dbus-execute.h"
#ifdef HAVE_SECCOMP
#include "seccomp-util.h"
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
index 3cd4467efe..1ef259ec7a 100644
--- a/src/core/dbus-manager.c
+++ b/src/core/dbus-manager.c
@@ -29,10 +29,12 @@
#include "clock-util.h"
#include "dbus-execute.h"
#include "dbus-job.h"
+#include "dbus-manager.h"
#include "dbus-snapshot.h"
#include "dbus-unit.h"
#include "dbus.h"
#include "env-util.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "install.h"
#include "log.h"
@@ -42,7 +44,6 @@
#include "strv.h"
#include "virt.h"
#include "watchdog.h"
-#include "dbus-manager.h"
static int property_get_version(
sd_bus *bus,
diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c
index 0062f1f7f0..22b8690c54 100644
--- a/src/core/dbus-service.c
+++ b/src/core/dbus-service.c
@@ -24,12 +24,13 @@
#include "dbus-cgroup.h"
#include "dbus-execute.h"
#include "dbus-kill.h"
+#include "dbus-service.h"
+#include "fd-util.h"
#include "path-util.h"
#include "service.h"
#include "string-util.h"
#include "strv.h"
#include "unit.h"
-#include "dbus-service.h"
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_type, service_type, ServiceType);
static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_result, service_result, ServiceResult);
diff --git a/src/core/dbus.c b/src/core/dbus.c
index 5f27ec4952..37410a9870 100644
--- a/src/core/dbus.c
+++ b/src/core/dbus.c
@@ -35,6 +35,8 @@
#include "dbus-kill.h"
#include "dbus-manager.h"
#include "dbus-unit.h"
+#include "dbus.h"
+#include "fd-util.h"
#include "log.h"
#include "missing.h"
#include "mkdir.h"
@@ -43,7 +45,6 @@
#include "string-util.h"
#include "strv.h"
#include "strxcpyx.h"
-#include "dbus.h"
#define CONNECTIONS_MAX 4096
diff --git a/src/core/execute.c b/src/core/execute.c
index a99e636d86..83ae3f6253 100644
--- a/src/core/execute.c
+++ b/src/core/execute.c
@@ -53,6 +53,9 @@
#include "sd-messages.h"
#include "af-list.h"
+#ifdef HAVE_APPARMOR
+#include "apparmor-util.h"
+#endif
#include "async.h"
#include "barrier.h"
#include "bus-endpoint.h"
@@ -61,7 +64,9 @@
#include "def.h"
#include "env-util.h"
#include "errno-list.h"
+#include "execute.h"
#include "exit-status.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "ioprio.h"
@@ -73,6 +78,9 @@
#include "path-util.h"
#include "process-util.h"
#include "rm-rf.h"
+#ifdef HAVE_SECCOMP
+#include "seccomp-util.h"
+#endif
#include "securebits.h"
#include "selinux-util.h"
#include "signal-util.h"
@@ -84,16 +92,6 @@
#include "util.h"
#include "utmp-wtmp.h"
-#ifdef HAVE_APPARMOR
-#include "apparmor-util.h"
-#endif
-
-#ifdef HAVE_SECCOMP
-#include "seccomp-util.h"
-#endif
-
-#include "execute.h"
-
#define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC)
#define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC)
diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c
index 42a3e97459..0c0982b0b4 100644
--- a/src/core/ima-setup.c
+++ b/src/core/ima-setup.c
@@ -24,9 +24,10 @@
#include <unistd.h>
#include <errno.h>
+#include "fd-util.h"
#include "ima-setup.h"
-#include "util.h"
#include "log.h"
+#include "util.h"
#define IMA_SECFS_DIR "/sys/kernel/security/ima"
#define IMA_SECFS_POLICY IMA_SECFS_DIR "/policy"
diff --git a/src/core/killall.c b/src/core/killall.c
index 6857b0bbf9..cb11987166 100644
--- a/src/core/killall.c
+++ b/src/core/killall.c
@@ -24,13 +24,14 @@
#include <sys/wait.h>
#include <unistd.h>
+#include "fd-util.h"
#include "formats-util.h"
+#include "killall.h"
#include "process-util.h"
#include "set.h"
#include "string-util.h"
#include "terminal-util.h"
#include "util.h"
-#include "killall.h"
#define TIMEOUT_USEC (10 * USEC_PER_SEC)
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
index 3212ed24d2..31fdc48823 100644
--- a/src/core/load-fragment.c
+++ b/src/core/load-fragment.c
@@ -43,7 +43,9 @@
#include "env-util.h"
#include "errno-list.h"
#include "escape.h"
+#include "fd-util.h"
#include "ioprio.h"
+#include "load-fragment.h"
#include "log.h"
#include "missing.h"
#include "path-util.h"
@@ -58,7 +60,6 @@
#include "unit-printf.h"
#include "unit.h"
#include "utf8.h"
-#include "load-fragment.h"
int config_parse_warn_compat(
const char *unit,
diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
index caa5f3717a..f59bf56c73 100644
--- a/src/core/machine-id-setup.c
+++ b/src/core/machine-id-setup.c
@@ -29,8 +29,10 @@
#include "sd-id128.h"
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
+#include "machine-id-setup.h"
#include "macro.h"
#include "mkdir.h"
#include "path-util.h"
@@ -38,7 +40,6 @@
#include "string-util.h"
#include "util.h"
#include "virt.h"
-#include "machine-id-setup.h"
static int shorten_uuid(char destination[34], const char source[36]) {
unsigned i, j;
diff --git a/src/core/main.c b/src/core/main.c
index 87b3af92bc..68ec730406 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -51,6 +51,7 @@
#include "dbus-manager.h"
#include "def.h"
#include "env-util.h"
+#include "fd-util.h"
#include "fdset.h"
#include "fileio.h"
#include "formats-util.h"
diff --git a/src/core/manager.c b/src/core/manager.c
index 2d30340828..400c66977b 100644
--- a/src/core/manager.c
+++ b/src/core/manager.c
@@ -53,10 +53,12 @@
#include "env-util.h"
#include "escape.h"
#include "exit-status.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "locale-setup.h"
#include "log.h"
#include "macro.h"
+#include "manager.h"
#include "missing.h"
#include "mkdir.h"
#include "path-lookup.h"
@@ -75,7 +77,6 @@
#include "util.h"
#include "virt.h"
#include "watchdog.h"
-#include "manager.h"
/* Initial delay and the interval for printing status messages about running jobs */
#define JOBS_IN_PROGRESS_WAIT_USEC (5*USEC_PER_SEC)
diff --git a/src/core/namespace.c b/src/core/namespace.c
index 6806fc27e6..470f384056 100644
--- a/src/core/namespace.c
+++ b/src/core/namespace.c
@@ -29,15 +29,16 @@
#include <linux/fs.h>
#include "dev-setup.h"
+#include "fd-util.h"
#include "loopback-setup.h"
#include "missing.h"
#include "mkdir.h"
+#include "namespace.h"
#include "path-util.h"
#include "selinux-util.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "namespace.h"
typedef enum MountMode {
/* This is ordered by priority! */
diff --git a/src/core/path.c b/src/core/path.c
index 4d276a79db..11054d8c78 100644
--- a/src/core/path.c
+++ b/src/core/path.c
@@ -27,13 +27,14 @@
#include "bus-error.h"
#include "bus-util.h"
#include "dbus-path.h"
+#include "fd-util.h"
#include "macro.h"
#include "mkdir.h"
+#include "path.h"
#include "special.h"
#include "string-util.h"
#include "unit-name.h"
#include "unit.h"
-#include "path.h"
static const UnitActiveState state_translation_table[_PATH_STATE_MAX] = {
[PATH_DEAD] = UNIT_INACTIVE,
diff --git a/src/core/service.c b/src/core/service.c
index 042ce5d54d..abcbd4954f 100644
--- a/src/core/service.c
+++ b/src/core/service.c
@@ -32,6 +32,7 @@
#include "env-util.h"
#include "escape.h"
#include "exit-status.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "load-dropin.h"
@@ -40,6 +41,7 @@
#include "manager.h"
#include "path-util.h"
#include "process-util.h"
+#include "service.h"
#include "signal-util.h"
#include "special.h"
#include "string-util.h"
@@ -49,7 +51,6 @@
#include "unit.h"
#include "utf8.h"
#include "util.h"
-#include "service.h"
static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
[SERVICE_DEAD] = UNIT_INACTIVE,
diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c
index fb04e1135d..34df392184 100644
--- a/src/core/smack-setup.c
+++ b/src/core/smack-setup.c
@@ -28,12 +28,13 @@
#include <stdlib.h>
#include <string.h>
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
#include "macro.h"
+#include "smack-setup.h"
#include "string-util.h"
#include "util.h"
-#include "smack-setup.h"
#ifdef HAVE_SMACK
diff --git a/src/core/socket.c b/src/core/socket.c
index cfa17b3325..e2085dac1c 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -37,6 +37,7 @@
#include "dbus-socket.h"
#include "def.h"
#include "exit-status.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "label.h"
#include "log.h"
@@ -108,11 +109,9 @@ static void socket_unwatch_control_pid(Socket *s) {
}
static void socket_cleanup_fd_list(SocketPort *p) {
- int k = p->n_auxiliary_fds;
-
- while (k--)
- safe_close(p->auxiliary_fds[k]);
+ assert(p);
+ close_many(p->auxiliary_fds, p->n_auxiliary_fds);
p->auxiliary_fds = mfree(p->auxiliary_fds);
p->n_auxiliary_fds = 0;
}
diff --git a/src/core/swap.c b/src/core/swap.c
index eeb53d0632..d864c7b304 100644
--- a/src/core/swap.c
+++ b/src/core/swap.c
@@ -29,16 +29,17 @@
#include "dbus-swap.h"
#include "escape.h"
#include "exit-status.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "fstab-util.h"
#include "path-util.h"
#include "special.h"
#include "string-util.h"
+#include "swap.h"
#include "udev-util.h"
#include "unit-name.h"
#include "unit.h"
#include "virt.h"
-#include "swap.h"
static const UnitActiveState state_translation_table[_SWAP_STATE_MAX] = {
[SWAP_DEAD] = UNIT_INACTIVE,
diff --git a/src/core/umount.c b/src/core/umount.c
index ec887760a1..0e61bcaebb 100644
--- a/src/core/umount.c
+++ b/src/core/umount.c
@@ -30,14 +30,15 @@
#include "libudev.h"
#include "escape.h"
+#include "fd-util.h"
#include "list.h"
#include "mount-setup.h"
#include "path-util.h"
#include "string-util.h"
#include "udev-util.h"
+#include "umount.h"
#include "util.h"
#include "virt.h"
-#include "umount.h"
typedef struct MountPoint {
char *path;
diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
index fde508ac25..78adcf18d6 100644
--- a/src/cryptsetup/cryptsetup-generator.c
+++ b/src/cryptsetup/cryptsetup-generator.c
@@ -22,6 +22,7 @@
#include <errno.h>
#include "dropin.h"
+#include "fd-util.h"
#include "fstab-util.h"
#include "generator.h"
#include "hashmap.h"
diff --git a/src/dbus1-generator/dbus1-generator.c b/src/dbus1-generator/dbus1-generator.c
index 7bbec5467e..8dd75f3324 100644
--- a/src/dbus1-generator/dbus1-generator.c
+++ b/src/dbus1-generator/dbus1-generator.c
@@ -19,14 +19,15 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "util.h"
+#include "bus-internal.h"
+#include "bus-util.h"
+#include "cgroup-util.h"
#include "conf-parser.h"
-#include "special.h"
+#include "fd-util.h"
#include "mkdir.h"
-#include "bus-util.h"
-#include "bus-internal.h"
+#include "special.h"
#include "unit-name.h"
-#include "cgroup-util.h"
+#include "util.h"
static const char *arg_dest_late = "/tmp", *arg_dest = "/tmp";
diff --git a/src/delta/delta.c b/src/delta/delta.c
index fbb6ab564b..5dbd526b9b 100644
--- a/src/delta/delta.c
+++ b/src/delta/delta.c
@@ -26,6 +26,7 @@
#include <sys/prctl.h>
#include <unistd.h>
+#include "fd-util.h"
#include "hashmap.h"
#include "log.h"
#include "pager.h"
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
index f6b9c095bf..5aa247b2ae 100644
--- a/src/firstboot/firstboot.c
+++ b/src/firstboot/firstboot.c
@@ -36,6 +36,7 @@
#include "terminal-util.h"
#include "time-util.h"
#include "string-util.h"
+#include "fd-util.h"
static char *arg_root = NULL;
static char *arg_locale = NULL; /* $LANG */
diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
index 72a6940849..9c49557787 100644
--- a/src/fsck/fsck.c
+++ b/src/fsck/fsck.c
@@ -32,16 +32,17 @@
#include "sd-bus.h"
#include "sd-device.h"
-#include "util.h"
-#include "process-util.h"
-#include "signal-util.h"
-#include "special.h"
-#include "bus-util.h"
-#include "bus-error.h"
#include "bus-common-errors.h"
+#include "bus-error.h"
+#include "bus-util.h"
#include "device-util.h"
+#include "fd-util.h"
#include "path-util.h"
+#include "process-util.h"
+#include "signal-util.h"
#include "socket-util.h"
+#include "special.h"
+#include "util.h"
/* exit codes as defined in fsck(8) */
enum {
diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
index de2962d600..0a3917b7ba 100644
--- a/src/fstab-generator/fstab-generator.c
+++ b/src/fstab-generator/fstab-generator.c
@@ -25,6 +25,7 @@
#include <string.h>
#include <unistd.h>
+#include "fd-util.h"
#include "fstab-util.h"
#include "generator.h"
#include "log.h"
diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
index eff9ee236f..0997cc5fae 100644
--- a/src/getty-generator/getty-generator.c
+++ b/src/getty-generator/getty-generator.c
@@ -24,6 +24,7 @@
#include <string.h>
#include <unistd.h>
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
#include "mkdir.h"
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index 3e8c745238..ba97c98d6f 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -30,6 +30,7 @@
#include "blkid-util.h"
#include "btrfs-util.h"
#include "efivars.h"
+#include "fd-util.h"
#include "fileio.h"
#include "fstab-util.h"
#include "generator.h"
diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c
index f60ed4b28b..3b800e99d3 100644
--- a/src/hwdb/hwdb.c
+++ b/src/hwdb/hwdb.c
@@ -31,6 +31,7 @@
#include "strv.h"
#include "util.h"
#include "verbs.h"
+#include "fd-util.h"
/*
* Generic udev properties, key/value database based on modalias strings.
diff --git a/src/import/curl-util.c b/src/import/curl-util.c
index 422d517529..455fa1e07d 100644
--- a/src/import/curl-util.c
+++ b/src/import/curl-util.c
@@ -19,8 +19,9 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "string-util.h"
#include "curl-util.h"
+#include "fd-util.h"
+#include "string-util.h"
static void curl_glue_check_finished(CurlGlue *g) {
CURLMsg *msg;
diff --git a/src/import/export-raw.c b/src/import/export-raw.c
index dc4db481ca..24c0ec9309 100644
--- a/src/import/export-raw.c
+++ b/src/import/export-raw.c
@@ -28,6 +28,7 @@
#include "btrfs-util.h"
#include "copy.h"
#include "export-raw.h"
+#include "fd-util.h"
#include "import-common.h"
#include "ratelimit.h"
#include "string-util.h"
diff --git a/src/import/export-tar.c b/src/import/export-tar.c
index 93f2fdbd44..aa9b7f1a91 100644
--- a/src/import/export-tar.c
+++ b/src/import/export-tar.c
@@ -22,12 +22,13 @@
#include "sd-daemon.h"
#include "btrfs-util.h"
+#include "export-tar.h"
+#include "fd-util.h"
#include "import-common.h"
#include "process-util.h"
#include "ratelimit.h"
#include "string-util.h"
#include "util.h"
-#include "export-tar.h"
#define COPY_BUFFER_SIZE (16*1024)
diff --git a/src/import/export.c b/src/import/export.c
index 89e23899b1..1ecd1e4e10 100644
--- a/src/import/export.c
+++ b/src/import/export.c
@@ -26,6 +26,7 @@
#include "event-util.h"
#include "export-raw.h"
#include "export-tar.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-util.h"
#include "machine-image.h"
diff --git a/src/import/import-common.c b/src/import/import-common.c
index 9b86dbfa79..d96a000f81 100644
--- a/src/import/import-common.c
+++ b/src/import/import-common.c
@@ -26,9 +26,10 @@
#include "btrfs-util.h"
#include "capability.h"
+#include "fd-util.h"
+#include "import-common.h"
#include "signal-util.h"
#include "util.h"
-#include "import-common.h"
int import_make_read_only_fd(int fd) {
int r;
diff --git a/src/import/import-raw.c b/src/import/import-raw.c
index b13e80584d..f8fc6c108a 100644
--- a/src/import/import-raw.c
+++ b/src/import/import-raw.c
@@ -26,9 +26,11 @@
#include "btrfs-util.h"
#include "copy.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-common.h"
#include "import-compress.h"
+#include "import-raw.h"
#include "machine-pool.h"
#include "mkdir.h"
#include "path-util.h"
@@ -37,7 +39,6 @@
#include "rm-rf.h"
#include "string-util.h"
#include "util.h"
-#include "import-raw.h"
struct RawImport {
sd_event *event;
diff --git a/src/import/import-tar.c b/src/import/import-tar.c
index 0145dcb452..bc0cd9f5ba 100644
--- a/src/import/import-tar.c
+++ b/src/import/import-tar.c
@@ -26,9 +26,11 @@
#include "btrfs-util.h"
#include "copy.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-common.h"
#include "import-compress.h"
+#include "import-tar.h"
#include "machine-pool.h"
#include "mkdir.h"
#include "path-util.h"
@@ -38,7 +40,6 @@
#include "rm-rf.h"
#include "string-util.h"
#include "util.h"
-#include "import-tar.h"
struct TarImport {
sd_event *event;
diff --git a/src/import/import.c b/src/import/import.c
index bc0bc78924..e50ded9219 100644
--- a/src/import/import.c
+++ b/src/import/import.c
@@ -24,6 +24,7 @@
#include "sd-event.h"
#include "event-util.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-raw.h"
#include "import-tar.h"
diff --git a/src/import/importd.c b/src/import/importd.c
index a29e9d4bd5..b712cedcc6 100644
--- a/src/import/importd.c
+++ b/src/import/importd.c
@@ -22,20 +22,22 @@
#include <sys/prctl.h>
#include "sd-bus.h"
-#include "util.h"
-#include "strv.h"
-#include "bus-util.h"
+
#include "bus-common-errors.h"
-#include "socket-util.h"
-#include "mkdir.h"
+#include "bus-util.h"
#include "def.h"
-#include "missing.h"
+#include "fd-util.h"
+#include "hostname-util.h"
+#include "import-util.h"
#include "machine-pool.h"
+#include "missing.h"
+#include "mkdir.h"
#include "path-util.h"
-#include "import-util.h"
#include "process-util.h"
#include "signal-util.h"
-#include "hostname-util.h"
+#include "socket-util.h"
+#include "strv.h"
+#include "util.h"
typedef struct Transfer Transfer;
typedef struct Manager Manager;
diff --git a/src/import/pull-common.c b/src/import/pull-common.c
index a79cc5825b..e98554b60c 100644
--- a/src/import/pull-common.c
+++ b/src/import/pull-common.c
@@ -25,7 +25,9 @@
#include "capability.h"
#include "copy.h"
#include "escape.h"
+#include "fd-util.h"
#include "process-util.h"
+#include "pull-common.h"
#include "pull-job.h"
#include "rm-rf.h"
#include "signal-util.h"
@@ -33,7 +35,6 @@
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "pull-common.h"
#define FILENAME_ESCAPE "/.#\"\'"
#define HASH_URL_THRESHOLD_LENGTH (_POSIX_PATH_MAX - 16)
diff --git a/src/import/pull-dkr.c b/src/import/pull-dkr.c
index ea31d11641..1cd9e7b0bd 100644
--- a/src/import/pull-dkr.c
+++ b/src/import/pull-dkr.c
@@ -27,6 +27,7 @@
#include "aufs-util.h"
#include "btrfs-util.h"
#include "curl-util.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-common.h"
#include "import-util.h"
diff --git a/src/import/pull-job.c b/src/import/pull-job.c
index f8b597c9c3..7a0fb54bbe 100644
--- a/src/import/pull-job.c
+++ b/src/import/pull-job.c
@@ -21,10 +21,11 @@
#include <sys/xattr.h>
+#include "fd-util.h"
#include "machine-pool.h"
+#include "pull-job.h"
#include "string-util.h"
#include "strv.h"
-#include "pull-job.h"
PullJob* pull_job_unref(PullJob *j) {
if (!j)
diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c
index a8b2c24507..848a4fcd44 100644
--- a/src/import/pull-raw.c
+++ b/src/import/pull-raw.c
@@ -28,6 +28,7 @@
#include "btrfs-util.h"
#include "copy.h"
#include "curl-util.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-common.h"
#include "import-util.h"
@@ -36,13 +37,13 @@
#include "path-util.h"
#include "pull-common.h"
#include "pull-job.h"
+#include "pull-raw.h"
#include "qcow2-util.h"
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
#include "util.h"
-#include "pull-raw.h"
typedef enum RawProgress {
RAW_DOWNLOADING,
diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c
index fb4d5bf512..3540bbff41 100644
--- a/src/import/pull-tar.c
+++ b/src/import/pull-tar.c
@@ -27,6 +27,7 @@
#include "btrfs-util.h"
#include "copy.h"
#include "curl-util.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-common.h"
#include "import-util.h"
@@ -36,12 +37,12 @@
#include "process-util.h"
#include "pull-common.h"
#include "pull-job.h"
+#include "pull-tar.h"
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
#include "util.h"
-#include "pull-tar.h"
typedef enum TarProgress {
TAR_DOWNLOADING,
diff --git a/src/import/test-qcow2.c b/src/import/test-qcow2.c
index 9a6c3e8b35..4b60079619 100644
--- a/src/import/test-qcow2.c
+++ b/src/import/test-qcow2.c
@@ -19,10 +19,10 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include "fd-util.h"
#include "log.h"
-#include "util.h"
-
#include "qcow2-util.h"
+#include "util.h"
int main(int argc, char *argv[]) {
_cleanup_close_ int sfd = -1, dfd = -1;
diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c
index 2d5f7501e7..2b374c0288 100644
--- a/src/initctl/initctl.c
+++ b/src/initctl/initctl.c
@@ -25,18 +25,19 @@
#include <sys/epoll.h>
#include <ctype.h>
-#include "sd-daemon.h"
#include "sd-bus.h"
+#include "sd-daemon.h"
-#include "util.h"
-#include "log.h"
-#include "list.h"
-#include "initreq.h"
-#include "special.h"
-#include "bus-util.h"
#include "bus-error.h"
+#include "bus-util.h"
#include "def.h"
+#include "fd-util.h"
#include "formats-util.h"
+#include "initreq.h"
+#include "list.h"
+#include "log.h"
+#include "special.h"
+#include "util.h"
#define SERVER_FD_MAX 16
#define TIMEOUT_MSEC ((int) (DEFAULT_EXIT_USEC/USEC_PER_MSEC))
diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c
index b839e5979b..92ef723aff 100644
--- a/src/journal-remote/journal-gatewayd.c
+++ b/src/journal-remote/journal-gatewayd.c
@@ -19,21 +19,22 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
#include <fcntl.h>
#include <getopt.h>
-#include <microhttpd.h>
#ifdef HAVE_GNUTLS
#include <gnutls/gnutls.h>
#endif
+#include <microhttpd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
-#include "sd-journal.h"
-#include "sd-daemon.h"
#include "sd-bus.h"
+#include "sd-daemon.h"
+#include "sd-journal.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "hostname-util.h"
#include "log.h"
diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c
index e9bca39a20..bb299e378c 100644
--- a/src/journal-remote/journal-remote-parse.c
+++ b/src/journal-remote/journal-remote-parse.c
@@ -19,9 +19,10 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include "fd-util.h"
+#include "journal-remote-parse.h"
#include "journald-native.h"
#include "string-util.h"
-#include "journal-remote-parse.h"
#define LINE_CHUNK 8*1024u
diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c
index 27385d9b94..de207f8d24 100644
--- a/src/journal-remote/journal-remote.c
+++ b/src/journal-remote/journal-remote.c
@@ -37,16 +37,17 @@
#include "conf-parser.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "journal-file.h"
#include "journal-remote-write.h"
+#include "journal-remote.h"
#include "journald-native.h"
#include "macro.h"
#include "signal-util.h"
#include "socket-util.h"
#include "string-util.h"
#include "strv.h"
-#include "journal-remote.h"
#define REMOTE_JOURNAL_PATH "/var/log/journal/remote"
diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c
index 471a8cad49..a945a9971a 100644
--- a/src/journal-remote/journal-upload.c
+++ b/src/journal-remote/journal-upload.c
@@ -28,15 +28,16 @@
#include "sd-daemon.h"
#include "conf-parser.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
+#include "journal-upload.h"
#include "log.h"
#include "mkdir.h"
#include "sigbus.h"
#include "signal-util.h"
#include "string-util.h"
#include "util.h"
-#include "journal-upload.h"
#define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-upload.pem"
#define CERT_FILE CERTIFICATE_ROOT "/certs/journal-upload.pem"
diff --git a/src/journal/cat.c b/src/journal/cat.c
index 7074552a15..ff1887604a 100644
--- a/src/journal/cat.c
+++ b/src/journal/cat.c
@@ -28,6 +28,7 @@
#include "sd-journal.h"
+#include "fd-util.h"
#include "string-util.h"
#include "util.h"
diff --git a/src/journal/catalog.c b/src/journal/catalog.c
index 32b851aea3..d5bc17b4b6 100644
--- a/src/journal/catalog.c
+++ b/src/journal/catalog.c
@@ -31,6 +31,7 @@
#include "catalog.h"
#include "conf-files.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "log.h"
#include "mkdir.h"
diff --git a/src/journal/compress.c b/src/journal/compress.c
index 46a5410482..6c5078c110 100644
--- a/src/journal/compress.c
+++ b/src/journal/compress.c
@@ -25,20 +25,21 @@
#include <unistd.h>
#ifdef HAVE_XZ
-# include <lzma.h>
+#include <lzma.h>
#endif
#ifdef HAVE_LZ4
-# include <lz4.h>
-# include <lz4frame.h>
+#include <lz4.h>
+#include <lz4frame.h>
#endif
+#include "compress.h"
+#include "fd-util.h"
#include "journal-def.h"
#include "macro.h"
#include "sparse-endian.h"
#include "string-util.h"
#include "util.h"
-#include "compress.h"
#ifdef HAVE_LZ4
DEFINE_TRIVIAL_CLEANUP_FUNC(LZ4F_compressionContext_t, LZ4F_freeCompressionContext);
diff --git a/src/journal/coredump-vacuum.c b/src/journal/coredump-vacuum.c
index ba9994ac47..92259fd5ef 100644
--- a/src/journal/coredump-vacuum.c
+++ b/src/journal/coredump-vacuum.c
@@ -21,12 +21,13 @@
#include <sys/statvfs.h>
+#include "coredump-vacuum.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "macro.h"
#include "string-util.h"
#include "time-util.h"
#include "util.h"
-#include "coredump-vacuum.h"
#define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */
#define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */
diff --git a/src/journal/coredump.c b/src/journal/coredump.c
index 5c1badd66d..3b87eb5355 100644
--- a/src/journal/coredump.c
+++ b/src/journal/coredump.c
@@ -41,6 +41,7 @@
#include "copy.h"
#include "coredump-vacuum.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "journald-native.h"
#include "log.h"
diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c
index 80f692e044..a497a4781b 100644
--- a/src/journal/coredumpctl.c
+++ b/src/journal/coredumpctl.c
@@ -29,6 +29,7 @@
#include "sd-journal.h"
#include "compress.h"
+#include "fd-util.h"
#include "journal-internal.h"
#include "log.h"
#include "macro.h"
diff --git a/src/journal/journal-authenticate.c b/src/journal/journal-authenticate.c
index cdc80e2d26..dc51a5ab2f 100644
--- a/src/journal/journal-authenticate.c
+++ b/src/journal/journal-authenticate.c
@@ -22,10 +22,11 @@
#include <fcntl.h>
#include <sys/mman.h>
+#include "fd-util.h"
+#include "fsprg.h"
+#include "journal-authenticate.h"
#include "journal-def.h"
#include "journal-file.h"
-#include "journal-authenticate.h"
-#include "fsprg.h"
static uint64_t journal_file_tag_seqnum(JournalFile *f) {
uint64_t r;
diff --git a/src/journal/journal-def.h b/src/journal/journal-def.h
index 39c9dd0dbf..c003ac05dd 100644
--- a/src/journal/journal-def.h
+++ b/src/journal/journal-def.h
@@ -21,11 +21,10 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "sparse-endian.h"
-
-#include "systemd/sd-id128.h"
+#include "sd-id128.h"
#include "macro.h"
+#include "sparse-endian.h"
/*
* If you change this file you probably should also change its documentation:
diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
index f0962faeb5..6256c8133c 100644
--- a/src/journal/journal-file.c
+++ b/src/journal/journal-file.c
@@ -30,12 +30,13 @@
#include "btrfs-util.h"
#include "compress.h"
+#include "fd-util.h"
#include "journal-authenticate.h"
#include "journal-def.h"
+#include "journal-file.h"
#include "lookup3.h"
#include "random-util.h"
#include "string-util.h"
-#include "journal-file.h"
#define DEFAULT_DATA_HASH_TABLE_SIZE (2047ULL*sizeof(HashItem))
#define DEFAULT_FIELD_HASH_TABLE_SIZE (333ULL*sizeof(HashItem))
diff --git a/src/journal/journal-qrcode.h b/src/journal/journal-qrcode.h
index 3ff6a3ad4a..7d14e8754b 100644
--- a/src/journal/journal-qrcode.h
+++ b/src/journal/journal-qrcode.h
@@ -21,8 +21,9 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include <inttypes.h>
#include <stdio.h>
-#include "systemd/sd-id128.h"
+#include "sd-id128.h"
int print_qr_code(FILE *f, const void *seed, size_t seed_size, uint64_t start, uint64_t interval, const char *hn, sd_id128_t machine);
diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
index 79ef5b13d2..d42f8262a5 100644
--- a/src/journal/journal-send.c
+++ b/src/journal/journal-send.c
@@ -31,6 +31,7 @@
#include "sd-journal.h"
+#include "fd-util.h"
#include "memfd-util.h"
#include "socket-util.h"
#include "string-util.h"
diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
index 692b875fae..dca5bf5000 100644
--- a/src/journal/journal-vacuum.c
+++ b/src/journal/journal-vacuum.c
@@ -25,13 +25,13 @@
#include "sd-id128.h"
+#include "fd-util.h"
#include "journal-def.h"
#include "journal-file.h"
+#include "journal-vacuum.h"
#include "string-util.h"
#include "util.h"
-#include "journal-vacuum.h"
-
struct vacuum_info {
uint64_t usage;
char *filename;
diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
index 4f1d125bb9..de4f73a471 100644
--- a/src/journal/journal-verify.c
+++ b/src/journal/journal-verify.c
@@ -24,15 +24,16 @@
#include <fcntl.h>
#include <stddef.h>
-#include "util.h"
-#include "macro.h"
+#include "compress.h"
+#include "fd-util.h"
+#include "journal-authenticate.h"
#include "journal-def.h"
#include "journal-file.h"
-#include "journal-authenticate.h"
#include "journal-verify.h"
#include "lookup3.h"
-#include "compress.h"
+#include "macro.h"
#include "terminal-util.h"
+#include "util.h"
static void draw_progress(uint64_t p, usec_t *last_usec) {
unsigned n, i, j, k;
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
index 1307bd5630..dbb05e0527 100644
--- a/src/journal/journalctl.c
+++ b/src/journal/journalctl.c
@@ -42,6 +42,7 @@
#include "bus-error.h"
#include "bus-util.h"
#include "catalog.h"
+#include "fd-util.h"
#include "fileio.h"
#include "fsprg.h"
#include "hostname-util.h"
diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c
index 58778a697a..4c102fd530 100644
--- a/src/journal/journald-audit.c
+++ b/src/journal/journald-audit.c
@@ -20,9 +20,10 @@
***/
#include "audit-type.h"
+#include "fd-util.h"
+#include "journald-audit.h"
#include "missing.h"
#include "string-util.h"
-#include "journald-audit.h"
typedef struct MapField {
const char *audit_field;
diff --git a/src/journal/journald-console.c b/src/journal/journald-console.c
index 307bdc3949..5f3eb05275 100644
--- a/src/journal/journald-console.c
+++ b/src/journal/journald-console.c
@@ -29,6 +29,7 @@
#include "formats-util.h"
#include "process-util.h"
#include "terminal-util.h"
+#include "fd-util.h"
static bool prefix_timestamp(void) {
diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
index a8be704716..5a05632e56 100644
--- a/src/journal/journald-kmsg.c
+++ b/src/journal/journald-kmsg.c
@@ -29,12 +29,13 @@
#include "sd-messages.h"
#include "escape.h"
+#include "fd-util.h"
#include "formats-util.h"
+#include "journald-kmsg.h"
#include "journald-server.h"
#include "journald-syslog.h"
#include "process-util.h"
#include "string-util.h"
-#include "journald-kmsg.h"
void server_forward_kmsg(
Server *s,
diff --git a/src/journal/journald-native.c b/src/journal/journald-native.c
index 7a514b2848..7d4aac687e 100644
--- a/src/journal/journald-native.c
+++ b/src/journal/journald-native.c
@@ -24,8 +24,10 @@
#include <sys/mman.h>
#include <unistd.h>
+#include "fd-util.h"
#include "journald-console.h"
#include "journald-kmsg.h"
+#include "journald-native.h"
#include "journald-server.h"
#include "journald-syslog.h"
#include "journald-wall.h"
@@ -34,7 +36,6 @@
#include "selinux-util.h"
#include "socket-util.h"
#include "string-util.h"
-#include "journald-native.h"
bool valid_user_field(const char *p, size_t l, bool allow_protected) {
const char *a;
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
index 2dfd309310..012970bad3 100644
--- a/src/journal/journald-server.c
+++ b/src/journal/journald-server.c
@@ -36,6 +36,7 @@
#include "acl-util.h"
#include "cgroup-util.h"
#include "conf-parser.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "hashmap.h"
#include "hostname-util.h"
@@ -47,6 +48,7 @@
#include "journald-kmsg.h"
#include "journald-native.h"
#include "journald-rate-limit.h"
+#include "journald-server.h"
#include "journald-stream.h"
#include "journald-syslog.h"
#include "missing.h"
@@ -57,7 +59,6 @@
#include "signal-util.h"
#include "socket-util.h"
#include "string-util.h"
-#include "journald-server.h"
#define USER_JOURNALS_MAX 1024
diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
index e06be6267f..0dd511519c 100644
--- a/src/journal/journald-stream.c
+++ b/src/journal/journald-stream.c
@@ -30,17 +30,18 @@
#include "sd-event.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "journald-console.h"
#include "journald-kmsg.h"
#include "journald-server.h"
+#include "journald-stream.h"
#include "journald-syslog.h"
#include "journald-wall.h"
#include "mkdir.h"
#include "selinux-util.h"
#include "socket-util.h"
#include "string-util.h"
-#include "journald-stream.h"
#define STDOUT_STREAMS_MAX 4096
diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
index fc69cd7d9e..7e9ba12560 100644
--- a/src/journal/journald-syslog.c
+++ b/src/journal/journald-syslog.c
@@ -25,16 +25,17 @@
#include "sd-messages.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "journald-console.h"
#include "journald-kmsg.h"
#include "journald-server.h"
+#include "journald-syslog.h"
#include "journald-wall.h"
#include "process-util.h"
#include "selinux-util.h"
#include "socket-util.h"
#include "string-util.h"
-#include "journald-syslog.h"
/* Warn once every 30s if we missed syslog message */
#define WARN_FORWARD_SYSLOG_MISSED_USEC (30 * USEC_PER_SEC)
diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
index 442e352ae2..d39c0a900c 100644
--- a/src/journal/sd-journal.c
+++ b/src/journal/sd-journal.c
@@ -29,9 +29,9 @@
#include <unistd.h>
#include "sd-journal.h"
-
#include "catalog.h"
#include "compress.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "hashmap.h"
diff --git a/src/journal/stacktrace.c b/src/journal/stacktrace.c
index c4ba9e3890..e32550d644 100644
--- a/src/journal/stacktrace.c
+++ b/src/journal/stacktrace.c
@@ -22,11 +22,12 @@
#include <dwarf.h>
#include <elfutils/libdwfl.h>
+#include "fd-util.h"
#include "formats-util.h"
#include "macro.h"
+#include "stacktrace.h"
#include "string-util.h"
#include "util.h"
-#include "stacktrace.h"
#define FRAMES_MAX 64
#define THREADS_MAX 64
diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c
index 222d6cc72a..72c1f60f02 100644
--- a/src/journal/test-catalog.c
+++ b/src/journal/test-catalog.c
@@ -27,11 +27,12 @@
#include "sd-messages.h"
-#include "util.h"
+#include "catalog.h"
+#include "fd-util.h"
#include "log.h"
#include "macro.h"
-#include "catalog.h"
#include "string-util.h"
+#include "util.h"
static const char *catalog_dirs[] = {
CATALOG_DIR,
diff --git a/src/journal/test-compress.c b/src/journal/test-compress.c
index e51b12407f..e562fa1948 100644
--- a/src/journal/test-compress.c
+++ b/src/journal/test-compress.c
@@ -18,9 +18,10 @@
***/
#include "compress.h"
-#include "util.h"
+#include "fd-util.h"
#include "macro.h"
#include "random-util.h"
+#include "util.h"
#ifdef HAVE_XZ
# define XZ_OK 0
diff --git a/src/journal/test-journal-init.c b/src/journal/test-journal-init.c
index e6599f366d..717b703d19 100644
--- a/src/journal/test-journal-init.c
+++ b/src/journal/test-journal-init.c
@@ -19,11 +19,11 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "systemd/sd-journal.h"
+#include "sd-journal.h"
#include "log.h"
-#include "util.h"
#include "rm-rf.h"
+#include "util.h"
int main(int argc, char *argv[]) {
sd_journal *j;
diff --git a/src/journal/test-journal-send.c b/src/journal/test-journal-send.c
index 81ca47ed8d..694376670d 100644
--- a/src/journal/test-journal-send.c
+++ b/src/journal/test-journal-send.c
@@ -19,10 +19,11 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "systemd/sd-journal.h"
#include <stdlib.h>
#include <unistd.h>
+#include "sd-journal.h"
+
#include "log.h"
int main(int argc, char *argv[]) {
diff --git a/src/journal/test-journal-verify.c b/src/journal/test-journal-verify.c
index d89123dc64..887a83efe1 100644
--- a/src/journal/test-journal-verify.c
+++ b/src/journal/test-journal-verify.c
@@ -23,12 +23,13 @@
#include <unistd.h>
#include <fcntl.h>
-#include "util.h"
-#include "log.h"
-#include "rm-rf.h"
+#include "fd-util.h"
#include "journal-file.h"
#include "journal-verify.h"
+#include "log.h"
+#include "rm-rf.h"
#include "terminal-util.h"
+#include "util.h"
#define N_ENTRIES 6000
#define RANDOM_RANGE 77
diff --git a/src/journal/test-mmap-cache.c b/src/journal/test-mmap-cache.c
index 3258b22702..ac1239acc4 100644
--- a/src/journal/test-mmap-cache.c
+++ b/src/journal/test-mmap-cache.c
@@ -24,9 +24,10 @@
#include <unistd.h>
#include <fcntl.h>
+#include "fd-util.h"
#include "macro.h"
-#include "util.h"
#include "mmap-cache.h"
+#include "util.h"
int main(int argc, char *argv[]) {
int x, y, z, r;
diff --git a/src/libsystemd-network/arp-util.c b/src/libsystemd-network/arp-util.c
index 2f5b9b3731..4660c7ea09 100644
--- a/src/libsystemd-network/arp-util.c
+++ b/src/libsystemd-network/arp-util.c
@@ -21,8 +21,9 @@
#include <linux/filter.h>
#include <arpa/inet.h>
-#include "util.h"
#include "arp-util.h"
+#include "fd-util.h"
+#include "util.h"
int arp_network_bind_raw_socket(int ifindex, be32_t address, const struct ether_addr *eth_mac) {
struct sock_filter filter[] = {
diff --git a/src/libsystemd-network/dhcp-network.c b/src/libsystemd-network/dhcp-network.c
index 7f10838de1..fac25e0fa2 100644
--- a/src/libsystemd-network/dhcp-network.c
+++ b/src/libsystemd-network/dhcp-network.c
@@ -18,18 +18,18 @@
***/
#include <errno.h>
-#include <sys/socket.h>
-#include <string.h>
-#include <linux/if_packet.h>
-#include <linux/if_infiniband.h>
#include <net/ethernet.h>
#include <net/if_arp.h>
#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
#include <linux/filter.h>
-
-#include "socket-util.h"
+#include <linux/if_infiniband.h>
+#include <linux/if_packet.h>
#include "dhcp-internal.h"
+#include "fd-util.h"
+#include "socket-util.h"
static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
uint32_t xid, const uint8_t *mac_addr,
diff --git a/src/libsystemd-network/dhcp6-network.c b/src/libsystemd-network/dhcp6-network.c
index ccb8363e77..318ee9c4b4 100644
--- a/src/libsystemd-network/dhcp6-network.c
+++ b/src/libsystemd-network/dhcp6-network.c
@@ -18,19 +18,19 @@
***/
#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <string.h>
-#include <linux/if_packet.h>
+#include <netinet/in.h>
+#include <netinet/ip6.h>
#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
#include <unistd.h>
-#include <netinet/ip6.h>
-#include <netinet/in.h>
-
-#include "socket-util.h"
+#include <linux/if_packet.h>
#include "dhcp6-internal.h"
#include "dhcp6-protocol.h"
+#include "fd-util.h"
+#include "socket-util.h"
int dhcp6_network_bind_udp_socket(int index, struct in6_addr *local_address) {
struct in6_pktinfo pktinfo = {
diff --git a/src/libsystemd-network/icmp6-util.c b/src/libsystemd-network/icmp6-util.c
index 140429b1e9..91308bf6c3 100644
--- a/src/libsystemd-network/icmp6-util.c
+++ b/src/libsystemd-network/icmp6-util.c
@@ -18,19 +18,19 @@
***/
#include <errno.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <string.h>
-#include <linux/if_packet.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <netinet/ip6.h>
#include <netinet/icmp6.h>
#include <netinet/in.h>
+#include <netinet/ip6.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <linux/if_packet.h>
-#include "socket-util.h"
-
+#include "fd-util.h"
#include "icmp6-util.h"
+#include "socket-util.h"
#define IN6ADDR_ALL_ROUTERS_MULTICAST_INIT \
{ { { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
diff --git a/src/libsystemd-network/lldp-network.c b/src/libsystemd-network/lldp-network.c
index 12a6599ff1..f483cd9c8e 100644
--- a/src/libsystemd-network/lldp-network.c
+++ b/src/libsystemd-network/lldp-network.c
@@ -23,10 +23,11 @@
#include <linux/filter.h>
#include <linux/if_ether.h>
-#include "socket-util.h"
-#include "lldp-tlv.h"
-#include "lldp-network.h"
+#include "fd-util.h"
#include "lldp-internal.h"
+#include "lldp-network.h"
+#include "lldp-tlv.h"
+#include "socket-util.h"
int lldp_network_bind_raw_socket(int ifindex) {
typedef struct LLDPFrame {
diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c
index bc01b5b535..d982936a28 100644
--- a/src/libsystemd-network/sd-dhcp-lease.c
+++ b/src/libsystemd-network/sd-dhcp-lease.c
@@ -29,6 +29,7 @@
#include "dhcp-lease-internal.h"
#include "dhcp-protocol.h"
#include "dns-domain.h"
+#include "fd-util.h"
#include "fileio.h"
#include "hostname-util.h"
#include "in-addr-util.h"
diff --git a/src/libsystemd-network/sd-dhcp-server.c b/src/libsystemd-network/sd-dhcp-server.c
index 52f7579c5e..a2a8c16fc8 100644
--- a/src/libsystemd-network/sd-dhcp-server.c
+++ b/src/libsystemd-network/sd-dhcp-server.c
@@ -26,6 +26,7 @@
#include "dhcp-internal.h"
#include "dhcp-server-internal.h"
+#include "fd-util.h"
#include "in-addr-util.h"
#include "siphash24.h"
#include "string-util.h"
diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
index d4d4b771d9..ade1b470d4 100644
--- a/src/libsystemd-network/sd-dhcp6-client.c
+++ b/src/libsystemd-network/sd-dhcp6-client.c
@@ -30,6 +30,7 @@
#include "dhcp6-internal.h"
#include "dhcp6-lease-internal.h"
#include "dhcp6-protocol.h"
+#include "fd-util.h"
#include "network-internal.h"
#include "random-util.h"
#include "util.h"
diff --git a/src/libsystemd-network/sd-ipv4acd.c b/src/libsystemd-network/sd-ipv4acd.c
index d2ad5f75a4..3053724ea2 100644
--- a/src/libsystemd-network/sd-ipv4acd.c
+++ b/src/libsystemd-network/sd-ipv4acd.c
@@ -28,6 +28,7 @@
#include "arp-util.h"
#include "event-util.h"
+#include "fd-util.h"
#include "in-addr-util.h"
#include "list.h"
#include "random-util.h"
diff --git a/src/libsystemd-network/sd-lldp.c b/src/libsystemd-network/sd-lldp.c
index b73673c55c..b2b85e56e8 100644
--- a/src/libsystemd-network/sd-lldp.c
+++ b/src/libsystemd-network/sd-lldp.c
@@ -24,6 +24,7 @@
#include "sd-lldp.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "lldp-internal.h"
#include "lldp-port.h"
diff --git a/src/libsystemd-network/sd-pppoe.c b/src/libsystemd-network/sd-pppoe.c
index 7456b3218a..03a88973bf 100644
--- a/src/libsystemd-network/sd-pppoe.c
+++ b/src/libsystemd-network/sd-pppoe.c
@@ -25,13 +25,14 @@
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <linux/if_pppox.h>
-#include <linux/ppp-ioctl.h>
#include <linux/ppp_defs.h>
+#include <linux/ppp-ioctl.h>
#include "sd-pppoe.h"
#include "async.h"
#include "event-util.h"
+#include "fd-util.h"
#include "random-util.h"
#include "socket-util.h"
#include "sparse-endian.h"
diff --git a/src/libsystemd-network/test-dhcp-client.c b/src/libsystemd-network/test-dhcp-client.c
index 41c817e3d3..40a85eb25e 100644
--- a/src/libsystemd-network/test-dhcp-client.c
+++ b/src/libsystemd-network/test-dhcp-client.c
@@ -32,6 +32,7 @@
#include "dhcp-protocol.h"
#include "event-util.h"
#include "util.h"
+#include "fd-util.h"
static uint8_t mac_addr[] = {'A', 'B', 'C', '1', '2', '3'};
diff --git a/src/libsystemd-network/test-dhcp6-client.c b/src/libsystemd-network/test-dhcp6-client.c
index 4872567894..17ed6d58f3 100644
--- a/src/libsystemd-network/test-dhcp6-client.c
+++ b/src/libsystemd-network/test-dhcp6-client.c
@@ -33,6 +33,7 @@
#include "dhcp6-lease-internal.h"
#include "dhcp6-protocol.h"
#include "event-util.h"
+#include "fd-util.h"
#include "macro.h"
#include "socket-util.h"
#include "virt.h"
diff --git a/src/libsystemd-network/test-ipv4ll.c b/src/libsystemd-network/test-ipv4ll.c
index 3958a98a36..6f416c51e4 100644
--- a/src/libsystemd-network/test-ipv4ll.c
+++ b/src/libsystemd-network/test-ipv4ll.c
@@ -30,6 +30,7 @@
#include "arp-util.h"
#include "event-util.h"
+#include "fd-util.h"
#include "socket-util.h"
#include "util.h"
diff --git a/src/libsystemd-network/test-lldp.c b/src/libsystemd-network/test-lldp.c
index 4e84caa4b0..109462662f 100644
--- a/src/libsystemd-network/test-lldp.c
+++ b/src/libsystemd-network/test-lldp.c
@@ -29,6 +29,7 @@
#include "sd-lldp.h"
#include "event-util.h"
+#include "fd-util.h"
#include "lldp-network.h"
#include "lldp-tlv.h"
#include "lldp.h"
diff --git a/src/libsystemd/sd-bus/bus-container.c b/src/libsystemd/sd-bus/bus-container.c
index 435ec92d6f..589a90bbff 100644
--- a/src/libsystemd/sd-bus/bus-container.c
+++ b/src/libsystemd/sd-bus/bus-container.c
@@ -22,11 +22,12 @@
#include <unistd.h>
#include <fcntl.h>
-#include "util.h"
-#include "process-util.h"
+#include "bus-container.h"
#include "bus-internal.h"
#include "bus-socket.h"
-#include "bus-container.h"
+#include "fd-util.h"
+#include "process-util.h"
+#include "util.h"
int bus_container_connect_socket(sd_bus *b) {
_cleanup_close_pair_ int pair[2] = { -1, -1 };
diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c
index 92978da09c..d7bff784b8 100644
--- a/src/libsystemd/sd-bus/bus-creds.c
+++ b/src/libsystemd/sd-bus/bus-creds.c
@@ -29,6 +29,7 @@
#include "bus-util.h"
#include "capability.h"
#include "cgroup-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "process-util.h"
diff --git a/src/libsystemd/sd-bus/bus-introspect.c b/src/libsystemd/sd-bus/bus-introspect.c
index 7ad5474439..f5a8885332 100644
--- a/src/libsystemd/sd-bus/bus-introspect.c
+++ b/src/libsystemd/sd-bus/bus-introspect.c
@@ -20,11 +20,12 @@
***/
#include "bus-internal.h"
+#include "bus-introspect.h"
#include "bus-protocol.h"
#include "bus-signature.h"
+#include "fd-util.h"
#include "string-util.h"
#include "util.h"
-#include "bus-introspect.h"
int introspect_begin(struct introspect *i, bool trusted) {
assert(i);
diff --git a/src/libsystemd/sd-bus/bus-kernel.c b/src/libsystemd/sd-bus/bus-kernel.c
index 32246cbf59..f311e86d44 100644
--- a/src/libsystemd/sd-bus/bus-kernel.c
+++ b/src/libsystemd/sd-bus/bus-kernel.c
@@ -36,17 +36,18 @@
#include "bus-bloom.h"
#include "bus-internal.h"
+#include "bus-kernel.h"
#include "bus-label.h"
#include "bus-message.h"
#include "bus-util.h"
#include "capability.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "memfd-util.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "bus-kernel.h"
#define UNIQUE_NAME_MAX (3+DECIMAL_STR_MAX(uint64_t))
diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c
index efab756ef4..58b19fbdc7 100644
--- a/src/libsystemd/sd-bus/bus-match.c
+++ b/src/libsystemd/sd-bus/bus-match.c
@@ -20,11 +20,12 @@
***/
#include "bus-internal.h"
+#include "bus-match.h"
#include "bus-message.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "string-util.h"
#include "strv.h"
-#include "bus-match.h"
/* Example:
*
diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
index 0e35b3a358..447e25db8a 100644
--- a/src/libsystemd/sd-bus/bus-message.c
+++ b/src/libsystemd/sd-bus/bus-message.c
@@ -27,16 +27,17 @@
#include "bus-gvariant.h"
#include "bus-internal.h"
+#include "bus-message.h"
#include "bus-signature.h"
#include "bus-type.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "memfd-util.h"
#include "string-util.h"
#include "strv.h"
#include "time-util.h"
#include "utf8.h"
#include "util.h"
-#include "bus-message.h"
static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
index e4994b491f..3273d9b0c2 100644
--- a/src/libsystemd/sd-bus/bus-socket.c
+++ b/src/libsystemd/sd-bus/bus-socket.c
@@ -29,6 +29,8 @@
#include "bus-internal.h"
#include "bus-message.h"
+#include "bus-socket.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "macro.h"
#include "missing.h"
@@ -36,7 +38,6 @@
#include "string-util.h"
#include "utf8.h"
#include "util.h"
-#include "bus-socket.h"
#define SNDBUF_SIZE (8*1024*1024)
diff --git a/src/libsystemd/sd-bus/bus-track.c b/src/libsystemd/sd-bus/bus-track.c
index e43891be25..0911156e19 100644
--- a/src/libsystemd/sd-bus/bus-track.c
+++ b/src/libsystemd/sd-bus/bus-track.c
@@ -20,9 +20,10 @@
***/
#include "sd-bus.h"
-#include "bus-util.h"
+
#include "bus-internal.h"
#include "bus-track.h"
+#include "bus-util.h"
struct sd_bus_track {
unsigned n_ref;
diff --git a/src/libsystemd/sd-bus/busctl.c b/src/libsystemd/sd-bus/busctl.c
index 04c6b1e8ef..b55e81ce97 100644
--- a/src/libsystemd/sd-bus/busctl.c
+++ b/src/libsystemd/sd-bus/busctl.c
@@ -30,6 +30,7 @@
#include "bus-util.h"
#include "busctl-introspect.h"
#include "escape.h"
+#include "fd-util.h"
#include "log.h"
#include "pager.h"
#include "path-util.h"
diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
index 2fb483171e..7b91c2583d 100644
--- a/src/libsystemd/sd-bus/sd-bus.c
+++ b/src/libsystemd/sd-bus/sd-bus.c
@@ -44,6 +44,7 @@
#include "bus-util.h"
#include "cgroup-util.h"
#include "def.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "macro.h"
#include "missing.h"
diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
index 4c7c58f57e..549c88cd2d 100644
--- a/src/libsystemd/sd-bus/test-bus-benchmark.c
+++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
@@ -27,6 +27,7 @@
#include "bus-kernel.h"
#include "bus-util.h"
#include "def.h"
+#include "fd-util.h"
#include "time-util.h"
#include "util.h"
diff --git a/src/libsystemd/sd-bus/test-bus-chat.c b/src/libsystemd/sd-bus/test-bus-chat.c
index c6a81a1894..e9e5e4a8e3 100644
--- a/src/libsystemd/sd-bus/test-bus-chat.c
+++ b/src/libsystemd/sd-bus/test-bus-chat.c
@@ -34,6 +34,7 @@
#include "log.h"
#include "macro.h"
#include "util.h"
+#include "fd-util.h"
static int match_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
log_info("Match triggered! interface=%s member=%s", strna(sd_bus_message_get_interface(m)), strna(sd_bus_message_get_member(m)));
diff --git a/src/libsystemd/sd-bus/test-bus-kernel-bloom.c b/src/libsystemd/sd-bus/test-bus-kernel-bloom.c
index 02ccbd7260..ff7f9cdafa 100644
--- a/src/libsystemd/sd-bus/test-bus-kernel-bloom.c
+++ b/src/libsystemd/sd-bus/test-bus-kernel-bloom.c
@@ -23,6 +23,7 @@
#include "bus-kernel.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "log.h"
#include "util.h"
diff --git a/src/libsystemd/sd-bus/test-bus-kernel.c b/src/libsystemd/sd-bus/test-bus-kernel.c
index 436bc017a4..7d05953cd0 100644
--- a/src/libsystemd/sd-bus/test-bus-kernel.c
+++ b/src/libsystemd/sd-bus/test-bus-kernel.c
@@ -26,6 +26,7 @@
#include "bus-dump.h"
#include "bus-kernel.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "log.h"
#include "util.h"
diff --git a/src/libsystemd/sd-bus/test-bus-marshal.c b/src/libsystemd/sd-bus/test-bus-marshal.c
index b54d931c1c..c0daa451ec 100644
--- a/src/libsystemd/sd-bus/test-bus-marshal.c
+++ b/src/libsystemd/sd-bus/test-bus-marshal.c
@@ -36,6 +36,7 @@
#include "bus-label.h"
#include "bus-message.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "log.h"
#include "util.h"
diff --git a/src/libsystemd/sd-bus/test-bus-zero-copy.c b/src/libsystemd/sd-bus/test-bus-zero-copy.c
index 42c95240d4..1be0dbcd82 100644
--- a/src/libsystemd/sd-bus/test-bus-zero-copy.c
+++ b/src/libsystemd/sd-bus/test-bus-zero-copy.c
@@ -30,6 +30,7 @@
#include "memfd-util.h"
#include "string-util.h"
#include "util.h"
+#include "fd-util.h"
#define FIRST_ARRAY 17
#define SECOND_ARRAY 33
diff --git a/src/libsystemd/sd-daemon/sd-daemon.c b/src/libsystemd/sd-daemon/sd-daemon.c
index bae37e8034..85c73722df 100644
--- a/src/libsystemd/sd-daemon/sd-daemon.c
+++ b/src/libsystemd/sd-daemon/sd-daemon.c
@@ -35,6 +35,7 @@
#include "sd-daemon.h"
+#include "fd-util.h"
#include "path-util.h"
#include "socket-util.h"
#include "strv.h"
diff --git a/src/libsystemd/sd-device/device-enumerator.c b/src/libsystemd/sd-device/device-enumerator.c
index 9379209a58..c98053220c 100644
--- a/src/libsystemd/sd-device/device-enumerator.c
+++ b/src/libsystemd/sd-device/device-enumerator.c
@@ -22,6 +22,7 @@
#include "device-enumerator-private.h"
#include "device-util.h"
+#include "fd-util.h"
#include "prioq.h"
#include "set.h"
#include "string-util.h"
diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c
index f6263121b6..bcabf9468d 100644
--- a/src/libsystemd/sd-device/device-private.c
+++ b/src/libsystemd/sd-device/device-private.c
@@ -27,6 +27,7 @@
#include "device-internal.h"
#include "device-private.h"
#include "device-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "hashmap.h"
#include "macro.h"
diff --git a/src/libsystemd/sd-device/sd-device.c b/src/libsystemd/sd-device/sd-device.c
index ca42b4318e..593dda52f2 100644
--- a/src/libsystemd/sd-device/sd-device.c
+++ b/src/libsystemd/sd-device/sd-device.c
@@ -27,6 +27,7 @@
#include "device-internal.h"
#include "device-private.h"
#include "device-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "hashmap.h"
#include "macro.h"
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
index cab35e185e..b3f8881714 100644
--- a/src/libsystemd/sd-event/sd-event.c
+++ b/src/libsystemd/sd-event/sd-event.c
@@ -27,6 +27,7 @@
#include "sd-event.h"
#include "sd-id128.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "list.h"
#include "macro.h"
diff --git a/src/libsystemd/sd-event/test-event.c b/src/libsystemd/sd-event/test-event.c
index c092e56b7a..c1a3b49483 100644
--- a/src/libsystemd/sd-event/test-event.c
+++ b/src/libsystemd/sd-event/test-event.c
@@ -20,10 +20,12 @@
***/
#include "sd-event.h"
+
+#include "fd-util.h"
#include "log.h"
-#include "util.h"
#include "macro.h"
#include "signal-util.h"
+#include "util.h"
static int prepare_handler(sd_event_source *s, void *userdata) {
log_info("preparing %c", PTR_TO_INT(userdata));
diff --git a/src/libsystemd/sd-hwdb/sd-hwdb.c b/src/libsystemd/sd-hwdb/sd-hwdb.c
index 4932c19199..9304fd376e 100644
--- a/src/libsystemd/sd-hwdb/sd-hwdb.c
+++ b/src/libsystemd/sd-hwdb/sd-hwdb.c
@@ -29,6 +29,7 @@
#include "sd-hwdb.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "hwdb-internal.h"
#include "hwdb-util.h"
diff --git a/src/libsystemd/sd-id128/sd-id128.c b/src/libsystemd/sd-id128/sd-id128.c
index a6dbc413ac..ef89fd2572 100644
--- a/src/libsystemd/sd-id128/sd-id128.c
+++ b/src/libsystemd/sd-id128/sd-id128.c
@@ -28,6 +28,7 @@
#include "macro.h"
#include "random-util.h"
#include "util.h"
+#include "fd-util.h"
_public_ char *sd_id128_to_string(sd_id128_t id, char s[SD_ID128_STRING_MAX]) {
unsigned n;
diff --git a/src/libsystemd/sd-login/sd-login.c b/src/libsystemd/sd-login/sd-login.c
index 28f935aa66..399918f834 100644
--- a/src/libsystemd/sd-login/sd-login.c
+++ b/src/libsystemd/sd-login/sd-login.c
@@ -29,6 +29,7 @@
#include "cgroup-util.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "hostname-util.h"
diff --git a/src/libsystemd/sd-login/test-login.c b/src/libsystemd/sd-login/test-login.c
index 014323321e..46aa73b38a 100644
--- a/src/libsystemd/sd-login/test-login.c
+++ b/src/libsystemd/sd-login/test-login.c
@@ -24,6 +24,7 @@
#include "sd-login.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "string-util.h"
#include "strv.h"
diff --git a/src/libsystemd/sd-netlink/sd-netlink.c b/src/libsystemd/sd-netlink/sd-netlink.c
index 2adc4499b6..57c5db1231 100644
--- a/src/libsystemd/sd-netlink/sd-netlink.c
+++ b/src/libsystemd/sd-netlink/sd-netlink.c
@@ -24,6 +24,7 @@
#include "sd-netlink.h"
+#include "fd-util.h"
#include "hashmap.h"
#include "macro.h"
#include "missing.h"
diff --git a/src/libsystemd/sd-network/network-util.c b/src/libsystemd/sd-network/network-util.c
index 48958e8a9f..8070ff07c4 100644
--- a/src/libsystemd/sd-network/network-util.c
+++ b/src/libsystemd/sd-network/network-util.c
@@ -19,8 +19,9 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "strv.h"
+#include "fd-util.h"
#include "network-util.h"
+#include "strv.h"
bool network_is_online(void) {
_cleanup_free_ char *state = NULL;
diff --git a/src/libsystemd/sd-network/sd-network.c b/src/libsystemd/sd-network/sd-network.c
index d330712aaf..ad1227264c 100644
--- a/src/libsystemd/sd-network/sd-network.c
+++ b/src/libsystemd/sd-network/sd-network.c
@@ -32,6 +32,7 @@
#include "string-util.h"
#include "strv.h"
#include "util.h"
+#include "fd-util.h"
_public_ int sd_network_get_operational_state(char **state) {
_cleanup_free_ char *s = NULL;
diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c
index 927b6f8b2d..2467c126ae 100644
--- a/src/libsystemd/sd-path/sd-path.c
+++ b/src/libsystemd/sd-path/sd-path.c
@@ -20,6 +20,7 @@
#include "sd-path.h"
#include "architecture.h"
+#include "fd-util.h"
#include "missing.h"
#include "path-util.h"
#include "string-util.h"
diff --git a/src/libsystemd/sd-resolve/sd-resolve.c b/src/libsystemd/sd-resolve/sd-resolve.c
index 024ad9ead1..38e2dc0fdd 100644
--- a/src/libsystemd/sd-resolve/sd-resolve.c
+++ b/src/libsystemd/sd-resolve/sd-resolve.c
@@ -33,6 +33,7 @@
#include "sd-resolve.h"
+#include "fd-util.h"
#include "list.h"
#include "missing.h"
#include "resolve-util.h"
diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
index 00472fedc9..5590aec2b7 100644
--- a/src/libudev/libudev-monitor.c
+++ b/src/libudev/libudev-monitor.c
@@ -30,6 +30,7 @@
#include "libudev.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "libudev-private.h"
#include "missing.h"
diff --git a/src/libudev/libudev-queue.c b/src/libudev/libudev-queue.c
index 11e15d13e6..4d1a0adbf2 100644
--- a/src/libudev/libudev-queue.c
+++ b/src/libudev/libudev-queue.c
@@ -24,6 +24,7 @@
#include <errno.h>
#include <sys/inotify.h>
+#include "fd-util.h"
#include "libudev-private.h"
/**
diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
index 00605d0126..afadfe6993 100644
--- a/src/libudev/libudev.c
+++ b/src/libudev/libudev.c
@@ -26,6 +26,7 @@
#include "libudev.h"
+#include "fd-util.h"
#include "libudev-private.h"
#include "missing.h"
#include "string-util.h"
diff --git a/src/locale/localectl.c b/src/locale/localectl.c
index 880a1794aa..4a339dcfd4 100644
--- a/src/locale/localectl.c
+++ b/src/locale/localectl.c
@@ -32,6 +32,7 @@
#include "bus-error.h"
#include "bus-util.h"
#include "def.h"
+#include "fd-util.h"
#include "fileio.h"
#include "locale-util.h"
#include "pager.h"
diff --git a/src/locale/localed.c b/src/locale/localed.c
index e3eef4a610..73e25f0642 100644
--- a/src/locale/localed.c
+++ b/src/locale/localed.c
@@ -24,6 +24,10 @@
#include <string.h>
#include <unistd.h>
+#ifdef HAVE_XKBCOMMON
+#include <xkbcommon/xkbcommon.h>
+#endif
+
#include "sd-bus.h"
#include "util.h"
@@ -39,10 +43,7 @@
#include "event-util.h"
#include "locale-util.h"
#include "selinux-util.h"
-
-#ifdef HAVE_XKBCOMMON
-#include <xkbcommon/xkbcommon.h>
-#endif
+#include "fd-util.h"
enum {
/* We don't list LC_ALL here on purpose. People should be
diff --git a/src/login/inhibit.c b/src/login/inhibit.c
index e671341b42..5ff0957aed 100644
--- a/src/login/inhibit.c
+++ b/src/login/inhibit.c
@@ -29,6 +29,7 @@
#include "bus-error.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "process-util.h"
#include "signal-util.h"
diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c
index 1acdc5aa22..4d7bda3ee0 100644
--- a/src/login/logind-acl.c
+++ b/src/login/logind-acl.c
@@ -24,12 +24,13 @@
#include "acl-util.h"
#include "escape.h"
+#include "fd-util.h"
#include "formats-util.h"
+#include "logind-acl.h"
#include "set.h"
#include "string-util.h"
#include "udev-util.h"
#include "util.h"
-#include "logind-acl.h"
static int flush_acl(acl_t acl) {
acl_entry_t i;
diff --git a/src/login/logind-button.c b/src/login/logind-button.c
index caa844e601..b98035be21 100644
--- a/src/login/logind-button.c
+++ b/src/login/logind-button.c
@@ -28,9 +28,10 @@
#include "sd-messages.h"
+#include "fd-util.h"
+#include "logind-button.h"
#include "string-util.h"
#include "util.h"
-#include "logind-button.h"
Button* button_new(Manager *m, const char *name) {
Button *b;
diff --git a/src/login/logind-core.c b/src/login/logind-core.c
index 6c05c11dbd..3b6e982e9f 100644
--- a/src/login/logind-core.c
+++ b/src/login/logind-core.c
@@ -25,13 +25,14 @@
#include <pwd.h>
#include <linux/vt.h>
-#include "strv.h"
-#include "cgroup-util.h"
-#include "bus-util.h"
#include "bus-error.h"
-#include "udev-util.h"
+#include "bus-util.h"
+#include "cgroup-util.h"
+#include "fd-util.h"
#include "logind.h"
+#include "strv.h"
#include "terminal-util.h"
+#include "udev-util.h"
int manager_add_device(Manager *m, const char *sysfs, bool master, Device **_device) {
Device *d;
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index 66807b3894..1677785467 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -32,6 +32,7 @@
#include "bus-util.h"
#include "efivars.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio-label.h"
#include "formats-util.h"
#include "logind.h"
diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c
index 5b247f48d6..ec34535f83 100644
--- a/src/login/logind-inhibit.c
+++ b/src/login/logind-inhibit.c
@@ -25,12 +25,13 @@
#include <unistd.h>
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
+#include "logind-inhibit.h"
#include "mkdir.h"
#include "string-util.h"
#include "util.h"
-#include "logind-inhibit.h"
Inhibitor* inhibitor_new(Manager *m, const char* id) {
Inhibitor *i;
diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
index 757993a953..dad552d5f2 100644
--- a/src/login/logind-seat.c
+++ b/src/login/logind-seat.c
@@ -26,13 +26,14 @@
#include "sd-messages.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "logind-acl.h"
+#include "logind-seat.h"
#include "mkdir.h"
#include "string-util.h"
#include "terminal-util.h"
#include "util.h"
-#include "logind-seat.h"
Seat *seat_new(Manager *m, const char *id) {
Seat *s;
diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
index e6b4ccd7c6..fe398a5eb6 100644
--- a/src/login/logind-session-dbus.c
+++ b/src/login/logind-session-dbus.c
@@ -22,15 +22,15 @@
#include <errno.h>
#include <string.h>
-#include "util.h"
-#include "strv.h"
-#include "bus-util.h"
#include "bus-common-errors.h"
#include "bus-label.h"
-
-#include "logind.h"
-#include "logind-session.h"
+#include "bus-util.h"
+#include "fd-util.h"
#include "logind-session-device.h"
+#include "logind-session.h"
+#include "logind.h"
+#include "strv.h"
+#include "util.h"
static int property_get_user(
sd_bus *bus,
diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c
index d4d9052d10..3a0bb720f9 100644
--- a/src/login/logind-session-device.c
+++ b/src/login/logind-session-device.c
@@ -27,10 +27,11 @@
#include "libudev.h"
-#include "util.h"
-#include "missing.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "logind-session-device.h"
+#include "missing.h"
+#include "util.h"
enum SessionDeviceNotifications {
SESSION_DEVICE_RESUME,
diff --git a/src/login/logind-session.c b/src/login/logind-session.c
index e35b5e71a1..ead79ad327 100644
--- a/src/login/logind-session.c
+++ b/src/login/logind-session.c
@@ -34,13 +34,14 @@
#include "bus-error.h"
#include "bus-util.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
+#include "logind-session.h"
#include "mkdir.h"
#include "path-util.h"
#include "terminal-util.h"
#include "util.h"
-#include "logind-session.h"
#define RELEASE_USEC (20*USEC_PER_SEC)
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index ecfbf2c5cc..80328068cd 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -29,10 +29,12 @@
#include "clean-ipc.h"
#include "conf-parser.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "hashmap.h"
#include "label.h"
+#include "logind-user.h"
#include "mkdir.h"
#include "path-util.h"
#include "rm-rf.h"
@@ -40,7 +42,6 @@
#include "special.h"
#include "unit-name.h"
#include "util.h"
-#include "logind-user.h"
User* user_new(Manager *m, uid_t uid, gid_t gid, const char *name) {
User *u;
diff --git a/src/login/logind.c b/src/login/logind.c
index 6ce7e1fd78..02c87ca58e 100644
--- a/src/login/logind.c
+++ b/src/login/logind.c
@@ -30,11 +30,12 @@
#include "bus-error.h"
#include "bus-util.h"
#include "conf-parser.h"
+#include "fd-util.h"
#include "formats-util.h"
+#include "logind.h"
#include "signal-util.h"
#include "strv.h"
#include "udev-util.h"
-#include "logind.h"
static void manager_free(Manager *m);
diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
index 63c31a6f62..dbd055a79a 100644
--- a/src/login/pam_systemd.c
+++ b/src/login/pam_systemd.c
@@ -35,6 +35,7 @@
#include "bus-error.h"
#include "bus-util.h"
#include "def.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "hostname-util.h"
diff --git a/src/login/test-inhibit.c b/src/login/test-inhibit.c
index f231e54cde..d0727ff7c7 100644
--- a/src/login/test-inhibit.c
+++ b/src/login/test-inhibit.c
@@ -24,6 +24,7 @@
#include "sd-bus.h"
#include "bus-util.h"
+#include "fd-util.h"
#include "macro.h"
#include "util.h"
diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
index 6e41e92962..c17a98e90f 100644
--- a/src/machine/machine-dbus.c
+++ b/src/machine/machine-dbus.c
@@ -29,22 +29,23 @@
#include <libgen.h>
#undef basename
-#include "bus-util.h"
-#include "bus-label.h"
-#include "strv.h"
#include "bus-common-errors.h"
+#include "bus-internal.h"
+#include "bus-label.h"
+#include "bus-util.h"
#include "copy.h"
+#include "env-util.h"
+#include "fd-util.h"
#include "fileio.h"
+#include "formats-util.h"
#include "in-addr-util.h"
#include "local-addresses.h"
-#include "path-util.h"
-#include "mkdir.h"
-#include "bus-internal.h"
-#include "machine.h"
#include "machine-dbus.h"
-#include "formats-util.h"
+#include "machine.h"
+#include "mkdir.h"
+#include "path-util.h"
#include "process-util.h"
-#include "env-util.h"
+#include "strv.h"
#include "terminal-util.h"
static int property_get_id(
diff --git a/src/machine/machine.c b/src/machine/machine.c
index e27d0af169..e41f8add98 100644
--- a/src/machine/machine.c
+++ b/src/machine/machine.c
@@ -28,16 +28,17 @@
#include "bus-error.h"
#include "bus-util.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "hashmap.h"
#include "machine-dbus.h"
+#include "machine.h"
#include "mkdir.h"
#include "special.h"
#include "terminal-util.h"
#include "unit-name.h"
#include "util.h"
-#include "machine.h"
Machine* machine_new(Manager *manager, MachineClass class, const char *name) {
Machine *m;
diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
index f44f4edc0a..23cc74ab54 100644
--- a/src/machine/machinectl.c
+++ b/src/machine/machinectl.c
@@ -40,6 +40,7 @@
#include "copy.h"
#include "env-util.h"
#include "event-util.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "import-util.h"
#include "log.h"
diff --git a/src/machine/machined-dbus.c b/src/machine/machined-dbus.c
index 6e4c72e8a9..b5ce6cdca2 100644
--- a/src/machine/machined-dbus.c
+++ b/src/machine/machined-dbus.c
@@ -24,21 +24,23 @@
#include <unistd.h>
#include "sd-id128.h"
-#include "strv.h"
-#include "path-util.h"
-#include "unit-name.h"
-#include "bus-util.h"
+
+#include "btrfs-util.h"
#include "bus-common-errors.h"
+#include "bus-util.h"
#include "cgroup-util.h"
-#include "btrfs-util.h"
+#include "fd-util.h"
#include "formats-util.h"
-#include "process-util.h"
#include "hostname-util.h"
+#include "image-dbus.h"
+#include "machine-dbus.h"
#include "machine-image.h"
#include "machine-pool.h"
-#include "image-dbus.h"
#include "machined.h"
-#include "machine-dbus.h"
+#include "path-util.h"
+#include "process-util.h"
+#include "strv.h"
+#include "unit-name.h"
static int property_get_pool_path(
sd_bus *bus,
diff --git a/src/machine/machined.c b/src/machine/machined.c
index df3cc9972a..fe229c88a8 100644
--- a/src/machine/machined.c
+++ b/src/machine/machined.c
@@ -24,15 +24,17 @@
#include <unistd.h>
#include "sd-daemon.h"
-#include "cgroup-util.h"
-#include "bus-util.h"
+
#include "bus-error.h"
-#include "label.h"
+#include "bus-util.h"
+#include "cgroup-util.h"
+#include "fd-util.h"
#include "formats-util.h"
-#include "signal-util.h"
#include "hostname-util.h"
+#include "label.h"
#include "machine-image.h"
#include "machined.h"
+#include "signal-util.h"
Manager *manager_new(void) {
Manager *m;
diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
index 4a58ce1082..34bd65cb11 100644
--- a/src/modules-load/modules-load.c
+++ b/src/modules-load/modules-load.c
@@ -27,6 +27,7 @@
#include <sys/stat.h>
#include "conf-files.h"
+#include "fd-util.h"
#include "log.h"
#include "string-util.h"
#include "strv.h"
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 09f4bd7029..1144c82c17 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -25,18 +25,18 @@
#include "bus-util.h"
#include "dhcp-lease-internal.h"
+#include "fd-util.h"
#include "fileio.h"
#include "netlink-util.h"
#include "network-internal.h"
+#include "networkd-link.h"
+#include "networkd-netdev.h"
#include "set.h"
#include "socket-util.h"
#include "udev-util.h"
#include "util.h"
#include "virt.h"
-#include "networkd-link.h"
-#include "networkd-netdev.h"
-
bool link_dhcp6_enabled(Link *link) {
if (link->flags & IFF_LOOPBACK)
return false;
diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c
index 23d3aac694..febfe2ff81 100644
--- a/src/network/networkd-manager.c
+++ b/src/network/networkd-manager.c
@@ -28,6 +28,7 @@
#include "bus-util.h"
#include "conf-parser.h"
#include "def.h"
+#include "fd-util.h"
#include "libudev-private.h"
#include "local-addresses.h"
#include "netlink-util.h"
diff --git a/src/network/networkd-netdev-tuntap.c b/src/network/networkd-netdev-tuntap.c
index 6a808b6205..3096c4f72a 100644
--- a/src/network/networkd-netdev-tuntap.c
+++ b/src/network/networkd-netdev-tuntap.c
@@ -24,6 +24,7 @@
#include <linux/if_tun.h>
#include "networkd-netdev-tuntap.h"
+#include "fd-util.h"
#define TUN_DEV "/dev/net/tun"
diff --git a/src/network/networkd-netdev.c b/src/network/networkd-netdev.c
index d9ccc19d3d..bd1129a09b 100644
--- a/src/network/networkd-netdev.c
+++ b/src/network/networkd-netdev.c
@@ -23,13 +23,14 @@
#include "conf-files.h"
#include "conf-parser.h"
+#include "fd-util.h"
#include "list.h"
#include "netlink-util.h"
#include "network-internal.h"
+#include "networkd-netdev.h"
#include "networkd.h"
#include "siphash24.h"
#include "string-util.h"
-#include "networkd-netdev.h"
const NetDevVTable * const netdev_vtable[_NETDEV_KIND_MAX] = {
diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c
index 9f9a6911e3..150fd052c2 100644
--- a/src/network/networkd-network.c
+++ b/src/network/networkd-network.c
@@ -25,12 +25,13 @@
#include "conf-files.h"
#include "conf-parser.h"
#include "dns-domain.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "network-internal.h"
+#include "networkd-network.h"
#include "networkd.h"
#include "string-util.h"
#include "util.h"
-#include "networkd-network.h"
static int network_load_one(Manager *manager, const char *filename) {
_cleanup_network_free_ Network *network = NULL;
diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c
index 9e1f58f730..4e86ed13cb 100644
--- a/src/nspawn/nspawn-cgroup.c
+++ b/src/nspawn/nspawn-cgroup.c
@@ -22,12 +22,13 @@
#include <sys/mount.h>
#include "cgroup-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "mkdir.h"
+#include "nspawn-cgroup.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "nspawn-cgroup.h"
int chown_cgroup(pid_t pid, uid_t uid_shift) {
_cleanup_free_ char *path = NULL, *fs = NULL;
diff --git a/src/nspawn/nspawn-expose-ports.c b/src/nspawn/nspawn-expose-ports.c
index 1081a38c58..df9fbe185b 100644
--- a/src/nspawn/nspawn-expose-ports.c
+++ b/src/nspawn/nspawn-expose-ports.c
@@ -21,13 +21,14 @@
#include "sd-netlink.h"
+#include "fd-util.h"
#include "firewall-util.h"
#include "in-addr-util.h"
#include "local-addresses.h"
#include "netlink-util.h"
+#include "nspawn-expose-ports.h"
#include "string-util.h"
#include "util.h"
-#include "nspawn-expose-ports.h"
int expose_port_parse(ExposePort **l, const char *s) {
diff --git a/src/nspawn/nspawn-setuid.c b/src/nspawn/nspawn-setuid.c
index b6d18574e8..2a1dfd83a9 100644
--- a/src/nspawn/nspawn-setuid.c
+++ b/src/nspawn/nspawn-setuid.c
@@ -23,12 +23,13 @@
#include <sys/types.h>
#include <unistd.h>
+#include "fd-util.h"
#include "mkdir.h"
+#include "nspawn-setuid.h"
#include "process-util.h"
#include "signal-util.h"
#include "string-util.h"
#include "util.h"
-#include "nspawn-setuid.h"
static int spawn_getent(const char *database, const char *key, pid_t *rpid) {
int pipe_fds[2];
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index 8ef6cfd731..f95842d252 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -57,6 +57,7 @@
#include "dev-setup.h"
#include "env-util.h"
#include "event-util.h"
+#include "fd-util.h"
#include "fdset.h"
#include "fileio.h"
#include "formats-util.h"
diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c
index a21a0fb916..42841480c5 100644
--- a/src/random-seed/random-seed.c
+++ b/src/random-seed/random-seed.c
@@ -25,6 +25,7 @@
#include <sys/stat.h>
#include <unistd.h>
+#include "fd-util.h"
#include "log.h"
#include "mkdir.h"
#include "string-util.h"
diff --git a/src/reply-password/reply-password.c b/src/reply-password/reply-password.c
index 61deafe728..166ab470ed 100644
--- a/src/reply-password/reply-password.c
+++ b/src/reply-password/reply-password.c
@@ -25,6 +25,7 @@
#include <sys/socket.h>
#include <sys/un.h>
+#include "fd-util.h"
#include "log.h"
#include "macro.h"
#include "string-util.h"
diff --git a/src/resolve/resolved-dns-scope.c b/src/resolve/resolved-dns-scope.c
index 9e6f595a1b..7c63c63b63 100644
--- a/src/resolve/resolved-dns-scope.c
+++ b/src/resolve/resolved-dns-scope.c
@@ -21,15 +21,16 @@
#include <netinet/tcp.h>
-#include "missing.h"
-#include "strv.h"
-#include "socket-util.h"
#include "af-list.h"
-#include "random-util.h"
-#include "hostname-util.h"
#include "dns-domain.h"
-#include "resolved-llmnr.h"
+#include "fd-util.h"
+#include "hostname-util.h"
+#include "missing.h"
+#include "random-util.h"
#include "resolved-dns-scope.h"
+#include "resolved-llmnr.h"
+#include "socket-util.h"
+#include "strv.h"
#define MULTICAST_RATELIMIT_INTERVAL_USEC (1*USEC_PER_SEC)
#define MULTICAST_RATELIMIT_BURST 1000
diff --git a/src/resolve/resolved-dns-stream.c b/src/resolve/resolved-dns-stream.c
index 7f47e7223a..b2eebe09a2 100644
--- a/src/resolve/resolved-dns-stream.c
+++ b/src/resolve/resolved-dns-stream.c
@@ -21,6 +21,7 @@
#include <netinet/tcp.h>
+#include "fd-util.h"
#include "missing.h"
#include "resolved-dns-stream.h"
diff --git a/src/resolve/resolved-dns-transaction.c b/src/resolve/resolved-dns-transaction.c
index b30473dd7e..84472ca1bc 100644
--- a/src/resolve/resolved-dns-transaction.c
+++ b/src/resolve/resolved-dns-transaction.c
@@ -21,10 +21,11 @@
#include "af-list.h"
-#include "resolved-llmnr.h"
-#include "resolved-dns-transaction.h"
-#include "random-util.h"
#include "dns-domain.h"
+#include "fd-util.h"
+#include "random-util.h"
+#include "resolved-dns-transaction.h"
+#include "resolved-llmnr.h"
DnsTransaction* dns_transaction_free(DnsTransaction *t) {
DnsQuery *q;
diff --git a/src/resolve/resolved-llmnr.c b/src/resolve/resolved-llmnr.c
index 8afaf8db6e..5c3a4a00c3 100644
--- a/src/resolve/resolved-llmnr.c
+++ b/src/resolve/resolved-llmnr.c
@@ -22,8 +22,9 @@
#include <resolv.h>
#include <netinet/in.h>
-#include "resolved-manager.h"
+#include "fd-util.h"
#include "resolved-llmnr.h"
+#include "resolved-manager.h"
void manager_llmnr_stop(Manager *m) {
assert(m);
diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
index b410e40308..65476fa38b 100644
--- a/src/resolve/resolved-manager.c
+++ b/src/resolve/resolved-manager.c
@@ -26,6 +26,7 @@
#include "af-list.h"
#include "dns-domain.h"
+#include "fd-util.h"
#include "fileio-label.h"
#include "hostname-util.h"
#include "netlink-util.h"
diff --git a/src/rfkill/rfkill.c b/src/rfkill/rfkill.c
index ece778b8ef..df8fc0690d 100644
--- a/src/rfkill/rfkill.c
+++ b/src/rfkill/rfkill.c
@@ -26,6 +26,7 @@
#include "sd-daemon.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "mkdir.h"
#include "string-util.h"
diff --git a/src/run/run.c b/src/run/run.c
index 25ef04a7d2..6d3e739882 100644
--- a/src/run/run.c
+++ b/src/run/run.c
@@ -30,6 +30,7 @@
#include "calendarspec.h"
#include "env-util.h"
#include "event-util.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "path-util.h"
#include "ptyfwd.h"
diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
index 64e50401b9..b3d2f96885 100644
--- a/src/shared/acpi-fpdt.c
+++ b/src/shared/acpi-fpdt.c
@@ -19,16 +19,17 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <stdio.h>
+#include <fcntl.h>
#include <stdint.h>
+#include <stdio.h>
#include <string.h>
#include <unistd.h>
-#include <fcntl.h>
-#include <util.h>
-#include <fileio.h>
-#include <time-util.h>
-#include <acpi-fpdt.h>
+#include "acpi-fpdt.h"
+#include "fd-util.h"
+#include "fileio.h"
+#include "time-util.h"
+#include "util.h"
struct acpi_table_header {
char signature[4];
diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c
index 4bf87576f2..baa6f159f8 100644
--- a/src/shared/ask-password-api.c
+++ b/src/shared/ask-password-api.c
@@ -32,6 +32,8 @@
#include <termios.h>
#include <unistd.h>
+#include "ask-password-api.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "missing.h"
#include "mkdir.h"
@@ -42,7 +44,6 @@
#include "strv.h"
#include "terminal-util.h"
#include "util.h"
-#include "ask-password-api.h"
#define KEYRING_TIMEOUT_USEC ((5 * USEC_PER_MINUTE) / 2)
diff --git a/src/shared/base-filesystem.c b/src/shared/base-filesystem.c
index f2796c6d64..751dfdec45 100644
--- a/src/shared/base-filesystem.c
+++ b/src/shared/base-filesystem.c
@@ -29,6 +29,7 @@
#include "string-util.h"
#include "util.h"
#include "base-filesystem.h"
+#include "fd-util.h"
typedef struct BaseFilesystem {
const char *dir;
diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
index bc77884751..e0a8ecc7fd 100644
--- a/src/shared/bus-util.c
+++ b/src/shared/bus-util.c
@@ -29,10 +29,12 @@
#include "bus-internal.h"
#include "bus-label.h"
#include "bus-message.h"
+#include "bus-util.h"
#include "cgroup-util.h"
#include "def.h"
#include "env-util.h"
#include "escape.h"
+#include "fd-util.h"
#include "macro.h"
#include "missing.h"
#include "path-util.h"
@@ -43,7 +45,6 @@
#include "unit-name.h"
#include "utf8.h"
#include "util.h"
-#include "bus-util.h"
static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
sd_event *e = userdata;
diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
index 57b7aeb228..395e41930c 100644
--- a/src/shared/cgroup-show.c
+++ b/src/shared/cgroup-show.c
@@ -24,7 +24,9 @@
#include <stdio.h>
#include <string.h>
+#include "cgroup-show.h"
#include "cgroup-util.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "macro.h"
#include "path-util.h"
@@ -32,7 +34,6 @@
#include "string-util.h"
#include "terminal-util.h"
#include "util.h"
-#include "cgroup-show.h"
static int compare(const void *a, const void *b) {
const pid_t *p = a, *q = b;
diff --git a/src/shared/clean-ipc.c b/src/shared/clean-ipc.c
index baf4bc0b87..fe3187384f 100644
--- a/src/shared/clean-ipc.c
+++ b/src/shared/clean-ipc.c
@@ -28,11 +28,12 @@
#include <sys/shm.h>
#include <sys/stat.h>
+#include "clean-ipc.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "clean-ipc.h"
static int clean_sysvipc_shm(uid_t delete_uid) {
_cleanup_fclose_ FILE *f = NULL;
diff --git a/src/shared/condition.c b/src/shared/condition.c
index 2556436542..b8915dab8a 100644
--- a/src/shared/condition.c
+++ b/src/shared/condition.c
@@ -31,7 +31,9 @@
#include "architecture.h"
#include "audit.h"
#include "cap-list.h"
+#include "condition.h"
#include "extract-word.h"
+#include "fd-util.h"
#include "hostname-util.h"
#include "ima-util.h"
#include "path-util.h"
@@ -40,7 +42,6 @@
#include "string-util.h"
#include "util.h"
#include "virt.h"
-#include "condition.h"
Condition* condition_new(ConditionType type, const char *parameter, bool trigger, bool negate) {
Condition *c;
diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
index 3f2e34c2e3..1b47c0ab52 100644
--- a/src/shared/conf-parser.c
+++ b/src/shared/conf-parser.c
@@ -36,6 +36,7 @@
#include "utf8.h"
#include "util.h"
#include "conf-parser.h"
+#include "fd-util.h"
int config_item_table_lookup(
const void *table,
diff --git a/src/shared/dropin.c b/src/shared/dropin.c
index 52ea8086fe..1836e91acd 100644
--- a/src/shared/dropin.c
+++ b/src/shared/dropin.c
@@ -20,13 +20,14 @@
***/
#include "conf-files.h"
+#include "dropin.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio-label.h"
#include "mkdir.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "dropin.h"
int drop_in_file(const char *dir, const char *unit, unsigned level,
const char *name, char **_p, char **_q) {
diff --git a/src/shared/efivars.c b/src/shared/efivars.c
index f087c2a566..b482603bce 100644
--- a/src/shared/efivars.c
+++ b/src/shared/efivars.c
@@ -23,10 +23,11 @@
#include <string.h>
#include <fcntl.h>
-#include "util.h"
+#include "efivars.h"
+#include "fd-util.h"
#include "utf8.h"
+#include "util.h"
#include "virt.h"
-#include "efivars.h"
#ifdef ENABLE_EFI
diff --git a/src/shared/generator.c b/src/shared/generator.c
index b52b9623fa..0a8e282949 100644
--- a/src/shared/generator.c
+++ b/src/shared/generator.c
@@ -23,15 +23,16 @@
#include "dropin.h"
#include "escape.h"
+#include "fd-util.h"
#include "fileio.h"
#include "fstab-util.h"
+#include "generator.h"
#include "mkdir.h"
#include "path-util.h"
#include "special.h"
#include "string-util.h"
#include "unit-name.h"
#include "util.h"
-#include "generator.h"
static int write_fsck_sysroot_service(const char *dir, const char *what) {
_cleanup_free_ char *device = NULL, *escaped = NULL;
diff --git a/src/shared/install.c b/src/shared/install.c
index 5368623b74..9b72f76662 100644
--- a/src/shared/install.c
+++ b/src/shared/install.c
@@ -39,6 +39,7 @@
#include "unit-name.h"
#include "util.h"
#include "install.h"
+#include "fd-util.h"
typedef struct {
OrderedHashmap *will_install;
diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
index cb4a0d2172..6f5b83d08d 100644
--- a/src/shared/logs-show.c
+++ b/src/shared/logs-show.c
@@ -25,17 +25,18 @@
#include <sys/socket.h>
#include <time.h>
+#include "fd-util.h"
#include "formats-util.h"
#include "hashmap.h"
#include "hostname-util.h"
#include "journal-internal.h"
#include "log.h"
+#include "logs-show.h"
#include "process-util.h"
#include "string-util.h"
#include "terminal-util.h"
#include "utf8.h"
#include "util.h"
-#include "logs-show.h"
/* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
#define PRINT_LINE_THRESHOLD 3
diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c
index 8261d87091..415d939fc6 100644
--- a/src/shared/machine-image.c
+++ b/src/shared/machine-image.c
@@ -25,13 +25,14 @@
#include "btrfs-util.h"
#include "copy.h"
+#include "fd-util.h"
+#include "machine-image.h"
#include "mkdir.h"
#include "path-util.h"
#include "rm-rf.h"
#include "string-util.h"
#include "strv.h"
#include "utf8.h"
-#include "machine-image.h"
static const char image_search_path[] =
"/var/lib/machines\0"
diff --git a/src/shared/machine-pool.c b/src/shared/machine-pool.c
index 597680ef5f..a2cb5fc5a0 100644
--- a/src/shared/machine-pool.c
+++ b/src/shared/machine-pool.c
@@ -25,14 +25,15 @@
#include <sys/vfs.h>
#include "btrfs-util.h"
+#include "fd-util.h"
#include "lockfile-util.h"
+#include "machine-pool.h"
#include "mkdir.h"
#include "path-util.h"
#include "process-util.h"
#include "signal-util.h"
#include "string-util.h"
#include "util.h"
-#include "machine-pool.h"
#define VAR_LIB_MACHINES_SIZE_START (1024UL*1024UL*500UL)
#define VAR_LIB_MACHINES_FREE_MIN (1024UL*1024UL*750UL)
diff --git a/src/shared/pager.c b/src/shared/pager.c
index b82b526309..7029d6b2e2 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
@@ -26,13 +26,14 @@
#include <unistd.h>
#include "copy.h"
+#include "fd-util.h"
#include "macro.h"
+#include "pager.h"
#include "process-util.h"
#include "signal-util.h"
#include "string-util.h"
#include "terminal-util.h"
#include "util.h"
-#include "pager.h"
static pid_t pager_pid = 0;
diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c
index 7749f20540..e5e0f37adf 100644
--- a/src/shared/ptyfwd.c
+++ b/src/shared/ptyfwd.c
@@ -24,8 +24,9 @@
#include <limits.h>
#include <termios.h>
-#include "util.h"
+#include "fd-util.h"
#include "ptyfwd.h"
+#include "util.h"
struct PTYForward {
sd_event *event;
diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
index e69300b1db..b5cb9508bf 100644
--- a/src/shared/sleep-config.c
+++ b/src/shared/sleep-config.c
@@ -22,12 +22,13 @@
#include <stdio.h>
#include "conf-parser.h"
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
+#include "sleep-config.h"
#include "string-util.h"
#include "strv.h"
#include "util.h"
-#include "sleep-config.h"
#define USE(x, y) do{ (x) = (y); (y) = NULL; } while(0)
diff --git a/src/shared/spawn-polkit-agent.c b/src/shared/spawn-polkit-agent.c
index 4db249e1ca..472cdecf20 100644
--- a/src/shared/spawn-polkit-agent.c
+++ b/src/shared/spawn-polkit-agent.c
@@ -29,6 +29,7 @@
#include "util.h"
#include "process-util.h"
#include "spawn-polkit-agent.h"
+#include "fd-util.h"
#ifdef ENABLE_POLKIT
static pid_t agent_pid = 0;
diff --git a/src/shared/switch-root.c b/src/shared/switch-root.c
index 205a2e1449..60d7043fda 100644
--- a/src/shared/switch-root.c
+++ b/src/shared/switch-root.c
@@ -28,13 +28,14 @@
#include <unistd.h>
#include "base-filesystem.h"
+#include "fd-util.h"
#include "missing.h"
#include "mkdir.h"
#include "path-util.h"
#include "rm-rf.h"
#include "string-util.h"
-#include "util.h"
#include "switch-root.h"
+#include "util.h"
int switch_root(const char *new_root, const char *oldroot, bool detach_oldroot, unsigned long mountflags) {
diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c
index 235f10d1a6..93e6313360 100644
--- a/src/shared/utmp-wtmp.c
+++ b/src/shared/utmp-wtmp.c
@@ -27,6 +27,7 @@
#include <unistd.h>
#include <utmpx.h>
+#include "fd-util.h"
#include "hostname-util.h"
#include "macro.h"
#include "path-util.h"
diff --git a/src/shared/watchdog.c b/src/shared/watchdog.c
index 9d39beb340..d58f9873d5 100644
--- a/src/shared/watchdog.c
+++ b/src/shared/watchdog.c
@@ -27,6 +27,7 @@
#include "watchdog.h"
#include "log.h"
+#include "fd-util.h"
static int watchdog_fd = -1;
static usec_t watchdog_timeout = USEC_INFINITY;
diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
index b92b77c381..95de369817 100644
--- a/src/sleep/sleep.c
+++ b/src/sleep/sleep.c
@@ -27,6 +27,7 @@
#include "sd-messages.h"
#include "def.h"
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
#include "sleep-config.h"
diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
index 521dbb2840..e82fb06417 100644
--- a/src/socket-proxy/socket-proxyd.c
+++ b/src/socket-proxy/socket-proxyd.c
@@ -34,6 +34,7 @@
#include "sd-event.h"
#include "sd-resolve.h"
+#include "fd-util.h"
#include "log.h"
#include "path-util.h"
#include "set.h"
diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
index e247264a83..5e15dfba53 100644
--- a/src/sysctl/sysctl.c
+++ b/src/sysctl/sysctl.c
@@ -28,6 +28,7 @@
#include <string.h>
#include "conf-files.h"
+#include "fd-util.h"
#include "fileio.h"
#include "hashmap.h"
#include "log.h"
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index dbf9f600c0..213c3c30a0 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -48,6 +48,7 @@
#include "efivars.h"
#include "env-util.h"
#include "exit-status.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "hostname-util.h"
diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
index 4c88f28e28..547bd1b344 100644
--- a/src/sysusers/sysusers.c
+++ b/src/sysusers/sysusers.c
@@ -40,6 +40,7 @@
#include "uid-range.h"
#include "utf8.h"
#include "util.h"
+#include "fd-util.h"
typedef enum ItemType {
ADD_USER = 'u',
diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c
index 4d1ecaff40..3374456973 100644
--- a/src/sysv-generator/sysv-generator.c
+++ b/src/sysv-generator/sysv-generator.c
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <unistd.h>
+#include "fd-util.h"
#include "hashmap.h"
#include "install.h"
#include "log.h"
diff --git a/src/test/test-btrfs.c b/src/test/test-btrfs.c
index b772e31963..afe3ff8fc2 100644
--- a/src/test/test-btrfs.c
+++ b/src/test/test-btrfs.c
@@ -21,11 +21,12 @@
#include <fcntl.h>
-#include "log.h"
-#include "fileio.h"
-#include "util.h"
#include "btrfs-util.h"
+#include "fd-util.h"
+#include "fileio.h"
+#include "log.h"
#include "string-util.h"
+#include "util.h"
int main(int argc, char *argv[]) {
BtrfsQuotaInfo quota;
diff --git a/src/test/test-capability.c b/src/test/test-capability.c
index f47452ce72..09d7e61e92 100644
--- a/src/test/test-capability.c
+++ b/src/test/test-capability.c
@@ -17,20 +17,22 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include <sys/wait.h>
-#include <sys/capability.h>
-#include <sys/socket.h>
#include <netinet/in.h>
#include <pwd.h>
+#include <sys/capability.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
#include <unistd.h>
#include "capability.h"
-#include "util.h"
+#include "fd-util.h"
#include "macro.h"
+#include "util.h"
static uid_t test_uid = -1;
static gid_t test_gid = -1;
-// We keep CAP_DAC_OVERRIDE to avoid errors with gcov when doing test coverage
+
+/* We keep CAP_DAC_OVERRIDE to avoid errors with gcov when doing test coverage */
static uint64_t test_flags = 1ULL << CAP_DAC_OVERRIDE;
static void fork_test(void (*test_func)(void)) {
diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c
index 267dda651d..7bf59a0aa2 100644
--- a/src/test/test-cgroup-util.c
+++ b/src/test/test-cgroup-util.c
@@ -19,12 +19,13 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "util.h"
#include "cgroup-util.h"
-#include "test-helper.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "process-util.h"
#include "string-util.h"
+#include "test-helper.h"
+#include "util.h"
static void check_p_d_u(const char *path, int code, const char *result) {
_cleanup_free_ char *unit = NULL;
diff --git a/src/test/test-copy.c b/src/test/test-copy.c
index 000d407db1..1bd50edca2 100644
--- a/src/test/test-copy.c
+++ b/src/test/test-copy.c
@@ -20,6 +20,7 @@
#include <unistd.h>
#include "copy.h"
+#include "fd-util.h"
#include "fileio.h"
#include "macro.h"
#include "mkdir.h"
diff --git a/src/test/test-fdset.c b/src/test/test-fdset.c
index 242c5d9dc2..96d5e38177 100644
--- a/src/test/test-fdset.c
+++ b/src/test/test-fdset.c
@@ -20,9 +20,10 @@
#include <fcntl.h>
#include <unistd.h>
+#include "fd-util.h"
#include "fdset.h"
-#include "util.h"
#include "macro.h"
+#include "util.h"
static void test_fdset_new_fill(void) {
int fd = -1;
diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c
index a72e84bc66..a40f013491 100644
--- a/src/test/test-fileio.c
+++ b/src/test/test-fileio.c
@@ -23,14 +23,15 @@
#include <fcntl.h>
#include <unistd.h>
-#include "util.h"
-#include "process-util.h"
-#include "fileio.h"
-#include "strv.h"
-#include "env-util.h"
-#include "def.h"
#include "ctype.h"
+#include "def.h"
+#include "env-util.h"
+#include "fd-util.h"
+#include "fileio.h"
+#include "process-util.h"
#include "string-util.h"
+#include "strv.h"
+#include "util.h"
static void test_parse_env_file(void) {
char t[] = "/tmp/test-fileio-in-XXXXXX",
diff --git a/src/test/test-namespace.c b/src/test/test-namespace.c
index de11443c7a..a060a7ba6f 100644
--- a/src/test/test-namespace.c
+++ b/src/test/test-namespace.c
@@ -21,6 +21,7 @@
#include <sys/socket.h>
+#include "fd-util.h"
#include "namespace.h"
#include "process-util.h"
#include "string-util.h"
diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
index 2977487c88..89129c9894 100644
--- a/src/test/test-path-util.c
+++ b/src/test/test-path-util.c
@@ -23,6 +23,7 @@
#include <sys/mount.h>
#include <unistd.h>
+#include "fd-util.h"
#include "macro.h"
#include "path-util.h"
#include "rm-rf.h"
diff --git a/src/test/test-path.c b/src/test/test-path.c
index 19796bd6cb..e9e0bfd41d 100644
--- a/src/test/test-path.c
+++ b/src/test/test-path.c
@@ -28,6 +28,7 @@
#include "strv.h"
#include "unit.h"
#include "util.h"
+#include "fd-util.h"
typedef void (*test_function_t)(Manager *m);
diff --git a/src/test/test-sigbus.c b/src/test/test-sigbus.c
index f5bae65bef..b3ccc7509d 100644
--- a/src/test/test-sigbus.c
+++ b/src/test/test-sigbus.c
@@ -21,8 +21,9 @@
#include <sys/mman.h>
-#include "util.h"
+#include "fd-util.h"
#include "sigbus.h"
+#include "util.h"
int main(int argc, char *argv[]) {
_cleanup_close_ int fd = -1;
diff --git a/src/test/test-socket-util.c b/src/test/test-socket-util.c
index ba1c7e6877..4a2d952c86 100644
--- a/src/test/test-socket-util.c
+++ b/src/test/test-socket-util.c
@@ -18,6 +18,7 @@
***/
#include "async.h"
+#include "fd-util.h"
#include "in-addr-util.h"
#include "log.h"
#include "macro.h"
diff --git a/src/test/test-terminal-util.c b/src/test/test-terminal-util.c
index d81fdb9923..a41de59719 100644
--- a/src/test/test-terminal-util.c
+++ b/src/test/test-terminal-util.c
@@ -25,6 +25,7 @@
#include "macro.h"
#include "util.h"
#include "log.h"
+#include "fd-util.h"
static void test_default_term_for_tty(void) {
puts(default_term_for_tty("/dev/tty23"));
diff --git a/src/test/test-tmpfiles.c b/src/test/test-tmpfiles.c
index ab255c7c83..6aa9cc8473 100644
--- a/src/test/test-tmpfiles.c
+++ b/src/test/test-tmpfiles.c
@@ -24,6 +24,7 @@
#include <stdlib.h>
#include <unistd.h>
+#include "fd-util.h"
#include "formats-util.h"
#include "string-util.h"
#include "util.h"
diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
index e4573956a5..226453d06e 100644
--- a/src/test/test-unit-file.c
+++ b/src/test/test-unit-file.c
@@ -26,6 +26,7 @@
#include <string.h>
#include <unistd.h>
+#include "fd-util.h"
#include "fileio.h"
#include "hashmap.h"
#include "hostname-util.h"
diff --git a/src/test/test-util.c b/src/test/test-util.c
index 49a30601bc..ddfcdd857b 100644
--- a/src/test/test-util.c
+++ b/src/test/test-util.c
@@ -44,6 +44,7 @@
#include "strv.h"
#include "util.h"
#include "virt.h"
+#include "fd-util.h"
static void test_streq_ptr(void) {
assert_se(streq_ptr(NULL, NULL));
diff --git a/src/timesync/timesyncd-manager.c b/src/timesync/timesyncd-manager.c
index 2964aa7652..d44cf0a80b 100644
--- a/src/timesync/timesyncd-manager.c
+++ b/src/timesync/timesyncd-manager.c
@@ -33,6 +33,7 @@
#include "sd-daemon.h"
+#include "fd-util.h"
#include "list.h"
#include "log.h"
#include "missing.h"
@@ -44,8 +45,8 @@
#include "strv.h"
#include "time-util.h"
#include "timesyncd-conf.h"
-#include "util.h"
#include "timesyncd-manager.h"
+#include "util.h"
#ifndef ADJ_SETOFFSET
#define ADJ_SETOFFSET 0x0100 /* add 'time' to current time */
diff --git a/src/timesync/timesyncd.c b/src/timesync/timesyncd.c
index 722b349b81..7755a6d89f 100644
--- a/src/timesync/timesyncd.c
+++ b/src/timesync/timesyncd.c
@@ -19,15 +19,16 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "sd-event.h"
#include "sd-daemon.h"
+#include "sd-event.h"
+
#include "capability.h"
#include "clock-util.h"
+#include "fd-util.h"
#include "network-util.h"
#include "signal-util.h"
-
-#include "timesyncd-manager.h"
#include "timesyncd-conf.h"
+#include "timesyncd-manager.h"
static int load_clock_timestamp(uid_t uid, gid_t gid) {
_cleanup_close_ int fd = -1;
diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
index d81382528f..e574e5ac26 100644
--- a/src/tmpfiles/tmpfiles.c
+++ b/src/tmpfiles/tmpfiles.c
@@ -44,6 +44,7 @@
#include "conf-files.h"
#include "copy.h"
#include "escape.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "label.h"
#include "log.h"
diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c
index d9b6cb3524..30f7f42a09 100644
--- a/src/tty-ask-password-agent/tty-ask-password-agent.c
+++ b/src/tty-ask-password-agent/tty-ask-password-agent.c
@@ -35,6 +35,7 @@
#include "ask-password-api.h"
#include "conf-parser.h"
#include "def.h"
+#include "fd-util.h"
#include "mkdir.h"
#include "path-util.h"
#include "process-util.h"
diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c
index 7acd7b4e92..1e414664ce 100644
--- a/src/udev/ata_id/ata_id.c
+++ b/src/udev/ata_id/ata_id.c
@@ -39,6 +39,7 @@
#include "libudev.h"
+#include "fd-util.h"
#include "libudev-private.h"
#include "log.h"
#include "udev-util.h"
diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
index c308f898ea..e9577930e3 100644
--- a/src/udev/net/link-config.c
+++ b/src/udev/net/link-config.c
@@ -27,6 +27,7 @@
#include "conf-files.h"
#include "conf-parser.h"
#include "ethtool-util.h"
+#include "fd-util.h"
#include "libudev-private.h"
#include "link-config.h"
#include "log.h"
diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c
index cbf9478e72..4655691642 100644
--- a/src/udev/scsi_id/scsi_id.c
+++ b/src/udev/scsi_id/scsi_id.c
@@ -31,6 +31,7 @@
#include "libudev.h"
+#include "fd-util.h"
#include "libudev-private.h"
#include "scsi_id.h"
#include "string-util.h"
diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c
index 004ddb023f..0976525eb3 100644
--- a/src/udev/udev-builtin-blkid.c
+++ b/src/udev/udev-builtin-blkid.c
@@ -30,6 +30,7 @@
#include "sd-id128.h"
#include "efivars.h"
+#include "fd-util.h"
#include "gpt.h"
#include "string-util.h"
#include "udev.h"
diff --git a/src/udev/udev-builtin-btrfs.c b/src/udev/udev-builtin-btrfs.c
index ce1a0c3882..cfaa463804 100644
--- a/src/udev/udev-builtin-btrfs.c
+++ b/src/udev/udev-builtin-btrfs.c
@@ -25,6 +25,7 @@
#include <linux/btrfs.h>
#endif
+#include "fd-util.h"
#include "missing.h"
#include "string-util.h"
#include "udev.h"
diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
index f36f719a94..fddafbd4dc 100644
--- a/src/udev/udev-builtin-input_id.c
+++ b/src/udev/udev-builtin-input_id.c
@@ -30,6 +30,7 @@
#include <linux/limits.h>
#include <linux/input.h>
+#include "fd-util.h"
#include "string-util.h"
#include "udev.h"
#include "util.h"
diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
index ce534ae0f9..5e97bdd614 100644
--- a/src/udev/udev-builtin-keyboard.c
+++ b/src/udev/udev-builtin-keyboard.c
@@ -23,6 +23,7 @@
#include <sys/ioctl.h>
#include <linux/input.h>
+#include "fd-util.h"
#include "string-util.h"
#include "udev.h"
diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
index bb721d6f0d..ef9c398e59 100644
--- a/src/udev/udev-builtin-net_id.c
+++ b/src/udev/udev-builtin-net_id.c
@@ -98,6 +98,7 @@
#include <unistd.h>
#include <linux/pci_regs.h>
+#include "fd-util.h"
#include "fileio.h"
#include "string-util.h"
#include "udev.h"
diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c
index c7d47891a7..cb531bd168 100644
--- a/src/udev/udev-builtin-usb_id.c
+++ b/src/udev/udev-builtin-usb_id.c
@@ -29,6 +29,7 @@
#include <string.h>
#include <unistd.h>
+#include "fd-util.h"
#include "string-util.h"
#include "udev.h"
diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c
index 56277f551f..937fc4ecd8 100644
--- a/src/udev/udev-ctrl.c
+++ b/src/udev/udev-ctrl.c
@@ -18,8 +18,9 @@
#include <sys/socket.h>
#include <sys/un.h>
-#include "socket-util.h"
+#include "fd-util.h"
#include "formats-util.h"
+#include "socket-util.h"
#include "udev.h"
/* wire protocol magic must match */
diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
index 49a45811a6..bf122f85c7 100644
--- a/src/udev/udev-event.c
+++ b/src/udev/udev-event.c
@@ -31,6 +31,7 @@
#include <unistd.h>
#include "event-util.h"
+#include "fd-util.h"
#include "formats-util.h"
#include "netlink-util.h"
#include "process-util.h"
diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
index c8abac7fef..f99d1a86c9 100644
--- a/src/udev/udev-rules.c
+++ b/src/udev/udev-rules.c
@@ -31,6 +31,7 @@
#include "conf-files.h"
#include "escape.h"
+#include "fd-util.h"
#include "path-util.h"
#include "strbuf.h"
#include "string-util.h"
diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c
index 911818eb00..7182668f23 100644
--- a/src/udev/udevadm-info.c
+++ b/src/udev/udevadm-info.c
@@ -26,6 +26,7 @@
#include <sys/stat.h>
#include <unistd.h>
+#include "fd-util.h"
#include "string-util.h"
#include "udev-util.h"
#include "udev.h"
diff --git a/src/udev/udevadm-monitor.c b/src/udev/udevadm-monitor.c
index 5e93955186..30aa53feb2 100644
--- a/src/udev/udevadm-monitor.c
+++ b/src/udev/udevadm-monitor.c
@@ -25,9 +25,10 @@
#include <sys/time.h>
#include <sys/epoll.h>
-#include "udev.h"
-#include "udev-util.h"
+#include "fd-util.h"
#include "formats-util.h"
+#include "udev-util.h"
+#include "udev.h"
static bool udev_exit;
diff --git a/src/udev/udevd.c b/src/udev/udevd.c
index a3f0298ae7..a548f9ba49 100644
--- a/src/udev/udevd.c
+++ b/src/udev/udevd.c
@@ -47,6 +47,7 @@
#include "cpu-set-util.h"
#include "dev-setup.h"
#include "event-util.h"
+#include "fd-util.h"
#include "fileio.h"
#include "formats-util.h"
#include "hashmap.h"
diff --git a/src/udev/v4l_id/v4l_id.c b/src/udev/v4l_id/v4l_id.c
index 5c57db44c1..607d78a019 100644
--- a/src/udev/v4l_id/v4l_id.c
+++ b/src/udev/v4l_id/v4l_id.c
@@ -26,6 +26,7 @@
#include <sys/ioctl.h>
#include <linux/videodev2.h>
+#include "fd-util.h"
#include "util.h"
int main(int argc, char *argv[]) {
diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c
index 01bbde8455..4f67145b36 100644
--- a/src/update-done/update-done.c
+++ b/src/update-done/update-done.c
@@ -19,8 +19,9 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
-#include "util.h"
+#include "fd-util.h"
#include "selinux-util.h"
+#include "util.h"
#define MESSAGE \
"This file was created by systemd-update-done. Its only \n" \
diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
index b0c61cddc5..a06f61dd6f 100644
--- a/src/vconsole/vconsole-setup.c
+++ b/src/vconsole/vconsole-setup.c
@@ -31,6 +31,7 @@
#include <sys/ioctl.h>
#include <unistd.h>
+#include "fd-util.h"
#include "fileio.h"
#include "log.h"
#include "process-util.h"