diff options
40 files changed, 343 insertions, 254 deletions
diff --git a/Makefile.am b/Makefile.am index 5c9bcb4568..459d54460c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -781,6 +781,8 @@ libbasic_la_SOURCES = \ src/basic/refcnt.h \ src/basic/util.c \ src/basic/util.h \ + src/basic/io-util.c \ + src/basic/io-util.h \ src/basic/string-util.c \ src/basic/string-util.h \ src/basic/fd-util.c \ diff --git a/src/basic/copy.c b/src/basic/copy.c index c15527df22..9f274c4d51 100644 --- a/src/basic/copy.c +++ b/src/basic/copy.c @@ -25,6 +25,7 @@ #include "btrfs-util.h" #include "copy.h" #include "fd-util.h" +#include "io-util.h" #include "string-util.h" #include "strv.h" #include "util.h" diff --git a/src/basic/io-util.c b/src/basic/io-util.c new file mode 100644 index 0000000000..ac8f93ff57 --- /dev/null +++ b/src/basic/io-util.c @@ -0,0 +1,261 @@ +/*-*- 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 <poll.h> +#include <unistd.h> + +#include "io-util.h" + +int flush_fd(int fd) { + struct pollfd pollfd = { + .fd = fd, + .events = POLLIN, + }; + + for (;;) { + char buf[LINE_MAX]; + ssize_t l; + int r; + + r = poll(&pollfd, 1, 0); + if (r < 0) { + if (errno == EINTR) + continue; + + return -errno; + + } else if (r == 0) + return 0; + + l = read(fd, buf, sizeof(buf)); + if (l < 0) { + + if (errno == EINTR) + continue; + + if (errno == EAGAIN) + return 0; + + return -errno; + } else if (l == 0) + return 0; + } +} + +ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll) { + uint8_t *p = buf; + ssize_t n = 0; + + assert(fd >= 0); + assert(buf); + + /* If called with nbytes == 0, let's call read() at least + * once, to validate the operation */ + + if (nbytes > (size_t) SSIZE_MAX) + return -EINVAL; + + do { + ssize_t k; + + k = read(fd, p, nbytes); + if (k < 0) { + if (errno == EINTR) + continue; + + if (errno == EAGAIN && do_poll) { + + /* We knowingly ignore any return value here, + * and expect that any error/EOF is reported + * via read() */ + + (void) fd_wait_for_event(fd, POLLIN, USEC_INFINITY); + continue; + } + + return n > 0 ? n : -errno; + } + + if (k == 0) + return n; + + assert((size_t) k <= nbytes); + + p += k; + nbytes -= k; + n += k; + } while (nbytes > 0); + + return n; +} + +int loop_read_exact(int fd, void *buf, size_t nbytes, bool do_poll) { + ssize_t n; + + n = loop_read(fd, buf, nbytes, do_poll); + if (n < 0) + return (int) n; + if ((size_t) n != nbytes) + return -EIO; + + return 0; +} + +int loop_write(int fd, const void *buf, size_t nbytes, bool do_poll) { + const uint8_t *p = buf; + + assert(fd >= 0); + assert(buf); + + if (nbytes > (size_t) SSIZE_MAX) + return -EINVAL; + + do { + ssize_t k; + + k = write(fd, p, nbytes); + if (k < 0) { + if (errno == EINTR) + continue; + + if (errno == EAGAIN && do_poll) { + /* We knowingly ignore any return value here, + * and expect that any error/EOF is reported + * via write() */ + + (void) fd_wait_for_event(fd, POLLOUT, USEC_INFINITY); + continue; + } + + return -errno; + } + + if (_unlikely_(nbytes > 0 && k == 0)) /* Can't really happen */ + return -EIO; + + assert((size_t) k <= nbytes); + + p += k; + nbytes -= k; + } while (nbytes > 0); + + return 0; +} + +int pipe_eof(int fd) { + struct pollfd pollfd = { + .fd = fd, + .events = POLLIN|POLLHUP, + }; + + int r; + + r = poll(&pollfd, 1, 0); + if (r < 0) + return -errno; + + if (r == 0) + return 0; + + return pollfd.revents & POLLHUP; +} + +int fd_wait_for_event(int fd, int event, usec_t t) { + + struct pollfd pollfd = { + .fd = fd, + .events = event, + }; + + struct timespec ts; + int r; + + r = ppoll(&pollfd, 1, t == USEC_INFINITY ? NULL : timespec_store(&ts, t), NULL); + if (r < 0) + return -errno; + + if (r == 0) + return 0; + + return pollfd.revents; +} + +static size_t nul_length(const uint8_t *p, size_t sz) { + size_t n = 0; + + while (sz > 0) { + if (*p != 0) + break; + + n++; + p++; + sz--; + } + + return n; +} + +ssize_t sparse_write(int fd, const void *p, size_t sz, size_t run_length) { + const uint8_t *q, *w, *e; + ssize_t l; + + q = w = p; + e = q + sz; + while (q < e) { + size_t n; + + n = nul_length(q, e - q); + + /* If there are more than the specified run length of + * NUL bytes, or if this is the beginning or the end + * of the buffer, then seek instead of write */ + if ((n > run_length) || + (n > 0 && q == p) || + (n > 0 && q + n >= e)) { + if (q > w) { + l = write(fd, w, q - w); + if (l < 0) + return -errno; + if (l != q -w) + return -EIO; + } + + if (lseek(fd, n, SEEK_CUR) == (off_t) -1) + return -errno; + + q += n; + w = q; + } else if (n > 0) + q += n; + else + q ++; + } + + if (q > w) { + l = write(fd, w, q - w); + if (l < 0) + return -errno; + if (l != q - w) + return -EIO; + } + + return q - (const uint8_t*) p; +} diff --git a/src/basic/io-util.h b/src/basic/io-util.h new file mode 100644 index 0000000000..ff7c2a9ac4 --- /dev/null +++ b/src/basic/io-util.h @@ -0,0 +1,39 @@ +/*-*- 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 <sys/types.h> +#include <stdbool.h> + +#include "time-util.h" + +int flush_fd(int fd); + +ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll); +int loop_read_exact(int fd, void *buf, size_t nbytes, bool do_poll); +int loop_write(int fd, const void *buf, size_t nbytes, bool do_poll); + +int pipe_eof(int fd); + +int fd_wait_for_event(int fd, int event, usec_t timeout); + +ssize_t sparse_write(int fd, const void *p, size_t sz, size_t run_length); diff --git a/src/basic/random-util.c b/src/basic/random-util.c index e183165b9f..2f5c16e2af 100644 --- a/src/basic/random-util.c +++ b/src/basic/random-util.c @@ -29,6 +29,7 @@ #include <time.h> #include "fd-util.h" +#include "io-util.h" #include "missing.h" #include "random-util.h" #include "time-util.h" diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 5949b99c95..3b3ca775d0 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -33,6 +33,7 @@ #include "fd-util.h" #include "fileio.h" +#include "io-util.h" #include "path-util.h" #include "process-util.h" #include "string-util.h" diff --git a/src/basic/util.c b/src/basic/util.c index 05f34ea52c..c02dfc5bc9 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -1236,142 +1236,6 @@ bool fstype_is_network(const char *fstype) { return nulstr_contains(table, fstype); } -int flush_fd(int fd) { - struct pollfd pollfd = { - .fd = fd, - .events = POLLIN, - }; - - for (;;) { - char buf[LINE_MAX]; - ssize_t l; - int r; - - r = poll(&pollfd, 1, 0); - if (r < 0) { - if (errno == EINTR) - continue; - - return -errno; - - } else if (r == 0) - return 0; - - l = read(fd, buf, sizeof(buf)); - if (l < 0) { - - if (errno == EINTR) - continue; - - if (errno == EAGAIN) - return 0; - - return -errno; - } else if (l == 0) - return 0; - } -} - -ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll) { - uint8_t *p = buf; - ssize_t n = 0; - - assert(fd >= 0); - assert(buf); - - /* If called with nbytes == 0, let's call read() at least - * once, to validate the operation */ - - if (nbytes > (size_t) SSIZE_MAX) - return -EINVAL; - - do { - ssize_t k; - - k = read(fd, p, nbytes); - if (k < 0) { - if (errno == EINTR) - continue; - - if (errno == EAGAIN && do_poll) { - - /* We knowingly ignore any return value here, - * and expect that any error/EOF is reported - * via read() */ - - (void) fd_wait_for_event(fd, POLLIN, USEC_INFINITY); - continue; - } - - return n > 0 ? n : -errno; - } - - if (k == 0) - return n; - - assert((size_t) k <= nbytes); - - p += k; - nbytes -= k; - n += k; - } while (nbytes > 0); - - return n; -} - -int loop_read_exact(int fd, void *buf, size_t nbytes, bool do_poll) { - ssize_t n; - - n = loop_read(fd, buf, nbytes, do_poll); - if (n < 0) - return (int) n; - if ((size_t) n != nbytes) - return -EIO; - - return 0; -} - -int loop_write(int fd, const void *buf, size_t nbytes, bool do_poll) { - const uint8_t *p = buf; - - assert(fd >= 0); - assert(buf); - - if (nbytes > (size_t) SSIZE_MAX) - return -EINVAL; - - do { - ssize_t k; - - k = write(fd, p, nbytes); - if (k < 0) { - if (errno == EINTR) - continue; - - if (errno == EAGAIN && do_poll) { - /* We knowingly ignore any return value here, - * and expect that any error/EOF is reported - * via write() */ - - (void) fd_wait_for_event(fd, POLLOUT, USEC_INFINITY); - continue; - } - - return -errno; - } - - if (_unlikely_(nbytes > 0 && k == 0)) /* Can't really happen */ - return -EIO; - - assert((size_t) k <= nbytes); - - p += k; - nbytes -= k; - } while (nbytes > 0); - - return 0; -} - int parse_size(const char *t, uint64_t base, uint64_t *size) { /* Soo, sometimes we want to parse IEC binary suffixes, and @@ -2057,44 +1921,6 @@ bool plymouth_running(void) { return access("/run/plymouth/pid", F_OK) >= 0; } -int pipe_eof(int fd) { - struct pollfd pollfd = { - .fd = fd, - .events = POLLIN|POLLHUP, - }; - - int r; - - r = poll(&pollfd, 1, 0); - if (r < 0) - return -errno; - - if (r == 0) - return 0; - - return pollfd.revents & POLLHUP; -} - -int fd_wait_for_event(int fd, int event, usec_t t) { - - struct pollfd pollfd = { - .fd = fd, - .events = event, - }; - - struct timespec ts; - int r; - - r = ppoll(&pollfd, 1, t == USEC_INFINITY ? NULL : timespec_store(&ts, t), NULL); - if (r < 0) - return -errno; - - if (r == 0) - return 0; - - return pollfd.revents; -} - int fopen_temporary(const char *path, FILE **_f, char **_temp_path) { FILE *f; char *t; @@ -4661,68 +4487,6 @@ int read_attr_path(const char *p, unsigned *ret) { return read_attr_fd(fd, ret); } -static size_t nul_length(const uint8_t *p, size_t sz) { - size_t n = 0; - - while (sz > 0) { - if (*p != 0) - break; - - n++; - p++; - sz--; - } - - return n; -} - -ssize_t sparse_write(int fd, const void *p, size_t sz, size_t run_length) { - const uint8_t *q, *w, *e; - ssize_t l; - - q = w = p; - e = q + sz; - while (q < e) { - size_t n; - - n = nul_length(q, e - q); - - /* If there are more than the specified run length of - * NUL bytes, or if this is the beginning or the end - * of the buffer, then seek instead of write */ - if ((n > run_length) || - (n > 0 && q == p) || - (n > 0 && q + n >= e)) { - if (q > w) { - l = write(fd, w, q - w); - if (l < 0) - return -errno; - if (l != q -w) - return -EIO; - } - - if (lseek(fd, n, SEEK_CUR) == (off_t) -1) - return -errno; - - q += n; - w = q; - } else if (n > 0) - q += n; - else - q ++; - } - - if (q > w) { - l = write(fd, w, q - w); - if (l < 0) - return -errno; - if (l != q - w) - return -EIO; - } - - return q - (const uint8_t*) p; -} - void sigkill_wait(pid_t *pid) { if (!pid) return; diff --git a/src/basic/util.h b/src/basic/util.h index e50fd69664..1a56257cce 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -237,14 +237,8 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k bool fstype_is_network(const char *fstype); -int flush_fd(int fd); - int fopen_temporary(const char *path, FILE **_f, char **_temp_path); -ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll); -int loop_read_exact(int fd, void *buf, size_t nbytes, bool do_poll); -int loop_write(int fd, const void *buf, size_t nbytes, bool do_poll); - bool is_device_path(const char *path); int dir_is_empty(const char *path); @@ -274,8 +268,6 @@ int path_check_fstype(const char *path, statfs_f_type_t magic_value); bool is_temporary_fs(const struct statfs *s) _pure_; int fd_is_temporary_fs(int fd); -int pipe_eof(int fd); - #define xsprintf(buf, fmt, ...) \ assert_message_se((size_t) snprintf(buf, ELEMENTSOF(buf), fmt, __VA_ARGS__) < ELEMENTSOF(buf), \ "xsprintf: " #buf "[] must be big enough") @@ -370,8 +362,6 @@ int prot_from_flags(int flags) _const_; char *format_bytes(char *buf, size_t l, uint64_t t); -int fd_wait_for_event(int fd, int event, usec_t timeout); - void* memdup(const void *p, size_t l) _alloc_(2); int fd_inc_sndbuf(int fd, size_t n); @@ -647,8 +637,6 @@ int namespace_enter(int pidns_fd, int mntns_fd, int netns_fd, int userns_fd, int int getpeercred(int fd, struct ucred *ucred); int getpeersec(int fd, char **ret); -int writev_safe(int fd, const struct iovec *w, int j); - int mkostemp_safe(char *pattern, int flags); int open_tmpfile(const char *path, int flags); @@ -721,8 +709,6 @@ int read_attr_path(const char *p, unsigned *ret); #define RLIMIT_MAKE_CONST(lim) ((struct rlimit) { lim, lim }) -ssize_t sparse_write(int fd, const void *p, size_t sz, size_t run_length); - void sigkill_wait(pid_t *pid); #define _cleanup_sigkill_wait_ _cleanup_(sigkill_wait) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index a1699f8736..ef113ed40c 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -52,6 +52,7 @@ #include "conf-parser.h" #include "fd-util.h" #include "fileio.h" +#include "io-util.h" #include "list.h" #include "macro.h" #include "path-util.h" diff --git a/src/core/automount.c b/src/core/automount.c index c25038ca50..d362d6579d 100644 --- a/src/core/automount.c +++ b/src/core/automount.c @@ -36,6 +36,7 @@ #include "dbus-automount.h" #include "fd-util.h" #include "formats-util.h" +#include "io-util.h" #include "label.h" #include "mkdir.h" #include "mount.h" diff --git a/src/core/execute.c b/src/core/execute.c index 83ae3f6253..55da8ba4b7 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -69,6 +69,7 @@ #include "fd-util.h" #include "fileio.h" #include "formats-util.h" +#include "io-util.h" #include "ioprio.h" #include "log.h" #include "macro.h" diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c index f59bf56c73..c72892b343 100644 --- a/src/core/machine-id-setup.c +++ b/src/core/machine-id-setup.c @@ -31,6 +31,7 @@ #include "fd-util.h" #include "fileio.h" +#include "io-util.h" #include "log.h" #include "machine-id-setup.h" #include "macro.h" diff --git a/src/core/manager.c b/src/core/manager.c index 400c66977b..287676ff27 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -55,6 +55,7 @@ #include "exit-status.h" #include "fd-util.h" #include "hashmap.h" +#include "io-util.h" #include "locale-setup.h" #include "log.h" #include "macro.h" diff --git a/src/import/import-raw.c b/src/import/import-raw.c index f8fc6c108a..a34f30abfc 100644 --- a/src/import/import-raw.c +++ b/src/import/import-raw.c @@ -31,6 +31,7 @@ #include "import-common.h" #include "import-compress.h" #include "import-raw.h" +#include "io-util.h" #include "machine-pool.h" #include "mkdir.h" #include "path-util.h" diff --git a/src/import/import-tar.c b/src/import/import-tar.c index bc0cd9f5ba..9aade0f430 100644 --- a/src/import/import-tar.c +++ b/src/import/import-tar.c @@ -31,6 +31,7 @@ #include "import-common.h" #include "import-compress.h" #include "import-tar.h" +#include "io-util.h" #include "machine-pool.h" #include "mkdir.h" #include "path-util.h" diff --git a/src/import/pull-common.c b/src/import/pull-common.c index e98554b60c..f465154b1d 100644 --- a/src/import/pull-common.c +++ b/src/import/pull-common.c @@ -26,6 +26,7 @@ #include "copy.h" #include "escape.h" #include "fd-util.h" +#include "io-util.h" #include "process-util.h" #include "pull-common.h" #include "pull-job.h" diff --git a/src/import/pull-job.c b/src/import/pull-job.c index 7a0fb54bbe..4736306de2 100644 --- a/src/import/pull-job.c +++ b/src/import/pull-job.c @@ -22,6 +22,7 @@ #include <sys/xattr.h> #include "fd-util.h" +#include "io-util.h" #include "machine-pool.h" #include "pull-job.h" #include "string-util.h" diff --git a/src/journal/compress.c b/src/journal/compress.c index 92f584777c..9308e8b789 100644 --- a/src/journal/compress.c +++ b/src/journal/compress.c @@ -35,6 +35,7 @@ #include "compress.h" #include "fd-util.h" +#include "io-util.h" #include "journal-def.h" #include "macro.h" #include "sparse-endian.h" diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c index d42f8262a5..f388c30d2e 100644 --- a/src/journal/journal-send.c +++ b/src/journal/journal-send.c @@ -32,6 +32,7 @@ #include "sd-journal.h" #include "fd-util.h" +#include "io-util.h" #include "memfd-util.h" #include "socket-util.h" #include "string-util.h" diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index dbb05e0527..dee25841e1 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -46,6 +46,7 @@ #include "fileio.h" #include "fsprg.h" #include "hostname-util.h" +#include "io-util.h" #include "journal-def.h" #include "journal-internal.h" #include "journal-qrcode.h" diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index d39c0a900c..9dcfc726ea 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -29,6 +29,7 @@ #include <unistd.h> #include "sd-journal.h" + #include "catalog.h" #include "compress.h" #include "fd-util.h" @@ -36,6 +37,7 @@ #include "formats-util.h" #include "hashmap.h" #include "hostname-util.h" +#include "io-util.h" #include "journal-def.h" #include "journal-file.h" #include "journal-internal.h" diff --git a/src/libsystemd/sd-id128/sd-id128.c b/src/libsystemd/sd-id128/sd-id128.c index ef89fd2572..335ad3b1b4 100644 --- a/src/libsystemd/sd-id128/sd-id128.c +++ b/src/libsystemd/sd-id128/sd-id128.c @@ -25,10 +25,11 @@ #include "sd-id128.h" +#include "fd-util.h" +#include "io-util.h" #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 399918f834..e1f480d058 100644 --- a/src/libsystemd/sd-login/sd-login.c +++ b/src/libsystemd/sd-login/sd-login.c @@ -33,6 +33,7 @@ #include "fileio.h" #include "formats-util.h" #include "hostname-util.h" +#include "io-util.h" #include "login-util.h" #include "macro.h" #include "string-util.h" diff --git a/src/libsystemd/sd-resolve/sd-resolve.c b/src/libsystemd/sd-resolve/sd-resolve.c index 38e2dc0fdd..724405d534 100644 --- a/src/libsystemd/sd-resolve/sd-resolve.c +++ b/src/libsystemd/sd-resolve/sd-resolve.c @@ -34,6 +34,7 @@ #include "sd-resolve.h" #include "fd-util.h" +#include "io-util.h" #include "list.h" #include "missing.h" #include "resolve-util.h" diff --git a/src/libudev/libudev-queue.c b/src/libudev/libudev-queue.c index 4d1a0adbf2..a22994c8a2 100644 --- a/src/libudev/libudev-queue.c +++ b/src/libudev/libudev-queue.c @@ -25,6 +25,7 @@ #include <sys/inotify.h> #include "fd-util.h" +#include "io-util.h" #include "libudev-private.h" /** diff --git a/src/login/logind-session.c b/src/login/logind-session.c index ead79ad327..10f1cfef81 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -35,8 +35,10 @@ #include "bus-util.h" #include "escape.h" #include "fd-util.h" +#include "fd-util.h" #include "fileio.h" #include "formats-util.h" +#include "io-util.h" #include "logind-session.h" #include "mkdir.h" #include "path-util.h" diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c index 42841480c5..fbfd3a3eba 100644 --- a/src/random-seed/random-seed.c +++ b/src/random-seed/random-seed.c @@ -26,6 +26,7 @@ #include <unistd.h> #include "fd-util.h" +#include "io-util.h" #include "log.h" #include "mkdir.h" #include "string-util.h" diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c index 65476fa38b..6144eedfeb 100644 --- a/src/resolve/resolved-manager.c +++ b/src/resolve/resolved-manager.c @@ -29,6 +29,7 @@ #include "fd-util.h" #include "fileio-label.h" #include "hostname-util.h" +#include "io-util.h" #include "netlink-util.h" #include "network-internal.h" #include "ordered-set.h" diff --git a/src/rfkill/rfkill.c b/src/rfkill/rfkill.c index df8fc0690d..311343e454 100644 --- a/src/rfkill/rfkill.c +++ b/src/rfkill/rfkill.c @@ -28,6 +28,7 @@ #include "escape.h" #include "fd-util.h" #include "fileio.h" +#include "io-util.h" #include "mkdir.h" #include "string-util.h" #include "udev-util.h" diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index baa6f159f8..15203d21ea 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -35,6 +35,7 @@ #include "ask-password-api.h" #include "fd-util.h" #include "formats-util.h" +#include "io-util.h" #include "missing.h" #include "mkdir.h" #include "random-util.h" diff --git a/src/shared/efivars.c b/src/shared/efivars.c index b482603bce..4808ede60c 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -25,6 +25,7 @@ #include "efivars.h" #include "fd-util.h" +#include "io-util.h" #include "utf8.h" #include "util.h" #include "virt.h" diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 6f5b83d08d..d8ea4c9f92 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -29,6 +29,7 @@ #include "formats-util.h" #include "hashmap.h" #include "hostname-util.h" +#include "io-util.h" #include "journal-internal.h" #include "log.h" #include "logs-show.h" diff --git a/src/shared/spawn-polkit-agent.c b/src/shared/spawn-polkit-agent.c index 472cdecf20..7cc9e7ccc1 100644 --- a/src/shared/spawn-polkit-agent.c +++ b/src/shared/spawn-polkit-agent.c @@ -25,11 +25,12 @@ #include <errno.h> #include <poll.h> +#include "fd-util.h" +#include "io-util.h" #include "log.h" -#include "util.h" #include "process-util.h" #include "spawn-polkit-agent.h" -#include "fd-util.h" +#include "util.h" #ifdef ENABLE_POLKIT static pid_t agent_pid = 0; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 213c3c30a0..49acea1dd2 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -54,6 +54,7 @@ #include "hostname-util.h" #include "initreq.h" #include "install.h" +#include "io-util.h" #include "list.h" #include "log.h" #include "logs-show.h" diff --git a/src/test/test-util.c b/src/test/test-util.c index ddfcdd857b..86895733c0 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -35,7 +35,9 @@ #include "cpu-set-util.h" #include "def.h" #include "escape.h" +#include "fd-util.h" #include "fileio.h" +#include "io-util.h" #include "mkdir.h" #include "process-util.h" #include "rm-rf.h" @@ -44,7 +46,6 @@ #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/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index e574e5ac26..457d721303 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -46,6 +46,7 @@ #include "escape.h" #include "fd-util.h" #include "formats-util.h" +#include "io-util.h" #include "label.h" #include "log.h" #include "macro.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 30f7f42a09..33419f6962 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -36,6 +36,7 @@ #include "conf-parser.h" #include "def.h" #include "fd-util.h" +#include "io-util.h" #include "mkdir.h" #include "path-util.h" #include "process-util.h" diff --git a/src/udev/udevd.c b/src/udev/udevd.c index a548f9ba49..df5fd88bff 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -51,6 +51,7 @@ #include "fileio.h" #include "formats-util.h" #include "hashmap.h" +#include "io-util.h" #include "netlink-util.h" #include "process-util.h" #include "selinux-util.h" diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c index 4f67145b36..4c44d50613 100644 --- a/src/update-done/update-done.c +++ b/src/update-done/update-done.c @@ -20,6 +20,7 @@ ***/ #include "fd-util.h" +#include "io-util.h" #include "selinux-util.h" #include "util.h" diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index a06f61dd6f..49523a0a67 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -33,6 +33,7 @@ #include "fd-util.h" #include "fileio.h" +#include "io-util.h" #include "log.h" #include "process-util.h" #include "signal-util.h" |