diff options
51 files changed, 382 insertions, 329 deletions
| diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c index 50328e4187..62b03a913c 100644 --- a/src/basic/calendarspec.c +++ b/src/basic/calendarspec.c @@ -24,6 +24,7 @@  #include "string-util.h"  #include "calendarspec.h" +#include "fileio.h"  #define BITS_WEEKDAYS   127 diff --git a/src/basic/copy.c b/src/basic/copy.c index 9f274c4d51..4b410a74e5 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 "fileio.h"  #include "io-util.h"  #include "string-util.h"  #include "strv.h" diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 5d33309ab2..b7e447f6b6 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -25,6 +25,9 @@  #include "escape.h"  #include "fd-util.h"  #include "fileio.h" +#include "hexdecoct.h" +#include "path-util.h" +#include "random-util.h"  #include "string-util.h"  #include "strv.h"  #include "utf8.h" @@ -54,7 +57,7 @@ static int write_string_file_atomic(const char *fn, const char *line, bool enfor          if (r < 0)                  return r; -        fchmod_umask(fileno(f), 0644); +        (void) fchmod_umask(fileno(f), 0644);          r = write_string_stream(f, line, enforce_newline);          if (r >= 0) { @@ -63,7 +66,7 @@ static int write_string_file_atomic(const char *fn, const char *line, bool enfor          }          if (r < 0) -                unlink(p); +                (void) unlink(p);          return r;  } @@ -848,3 +851,298 @@ int get_proc_field(const char *filename, const char *pattern, const char *termin          *field = f;          return 0;  } + +DIR *xopendirat(int fd, const char *name, int flags) { +        int nfd; +        DIR *d; + +        assert(!(flags & O_CREAT)); + +        nfd = openat(fd, name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|flags, 0); +        if (nfd < 0) +                return NULL; + +        d = fdopendir(nfd); +        if (!d) { +                safe_close(nfd); +                return NULL; +        } + +        return d; +} + +static int search_and_fopen_internal(const char *path, const char *mode, const char *root, char **search, FILE **_f) { +        char **i; + +        assert(path); +        assert(mode); +        assert(_f); + +        if (!path_strv_resolve_uniq(search, root)) +                return -ENOMEM; + +        STRV_FOREACH(i, search) { +                _cleanup_free_ char *p = NULL; +                FILE *f; + +                if (root) +                        p = strjoin(root, *i, "/", path, NULL); +                else +                        p = strjoin(*i, "/", path, NULL); +                if (!p) +                        return -ENOMEM; + +                f = fopen(p, mode); +                if (f) { +                        *_f = f; +                        return 0; +                } + +                if (errno != ENOENT) +                        return -errno; +        } + +        return -ENOENT; +} + +int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f) { +        _cleanup_strv_free_ char **copy = NULL; + +        assert(path); +        assert(mode); +        assert(_f); + +        if (path_is_absolute(path)) { +                FILE *f; + +                f = fopen(path, mode); +                if (f) { +                        *_f = f; +                        return 0; +                } + +                return -errno; +        } + +        copy = strv_copy((char**) search); +        if (!copy) +                return -ENOMEM; + +        return search_and_fopen_internal(path, mode, root, copy, _f); +} + +int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f) { +        _cleanup_strv_free_ char **s = NULL; + +        if (path_is_absolute(path)) { +                FILE *f; + +                f = fopen(path, mode); +                if (f) { +                        *_f = f; +                        return 0; +                } + +                return -errno; +        } + +        s = strv_split_nulstr(search); +        if (!s) +                return -ENOMEM; + +        return search_and_fopen_internal(path, mode, root, s, _f); +} + +int fopen_temporary(const char *path, FILE **_f, char **_temp_path) { +        FILE *f; +        char *t; +        int r, fd; + +        assert(path); +        assert(_f); +        assert(_temp_path); + +        r = tempfn_xxxxxx(path, NULL, &t); +        if (r < 0) +                return r; + +        fd = mkostemp_safe(t, O_WRONLY|O_CLOEXEC); +        if (fd < 0) { +                free(t); +                return -errno; +        } + +        f = fdopen(fd, "we"); +        if (!f) { +                unlink_noerrno(t); +                free(t); +                safe_close(fd); +                return -errno; +        } + +        *_f = f; +        *_temp_path = t; + +        return 0; +} + +int fflush_and_check(FILE *f) { +        assert(f); + +        errno = 0; +        fflush(f); + +        if (ferror(f)) +                return errno ? -errno : -EIO; + +        return 0; +} + +/* This is much like like mkostemp() but is subject to umask(). */ +int mkostemp_safe(char *pattern, int flags) { +        _cleanup_umask_ mode_t u; +        int fd; + +        assert(pattern); + +        u = umask(077); + +        fd = mkostemp(pattern, flags); +        if (fd < 0) +                return -errno; + +        return fd; +} + +int open_tmpfile(const char *path, int flags) { +        char *p; +        int fd; + +        assert(path); + +#ifdef O_TMPFILE +        /* Try O_TMPFILE first, if it is supported */ +        fd = open(path, flags|O_TMPFILE|O_EXCL, S_IRUSR|S_IWUSR); +        if (fd >= 0) +                return fd; +#endif + +        /* Fall back to unguessable name + unlinking */ +        p = strjoina(path, "/systemd-tmp-XXXXXX"); + +        fd = mkostemp_safe(p, flags); +        if (fd < 0) +                return fd; + +        unlink(p); +        return fd; +} + +int tempfn_xxxxxx(const char *p, const char *extra, char **ret) { +        const char *fn; +        char *t; + +        assert(p); +        assert(ret); + +        /* +         * Turns this: +         *         /foo/bar/waldo +         * +         * Into this: +         *         /foo/bar/.#<extra>waldoXXXXXX +         */ + +        fn = basename(p); +        if (!filename_is_valid(fn)) +                return -EINVAL; + +        if (extra == NULL) +                extra = ""; + +        t = new(char, strlen(p) + 2 + strlen(extra) + 6 + 1); +        if (!t) +                return -ENOMEM; + +        strcpy(stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn), "XXXXXX"); + +        *ret = path_kill_slashes(t); +        return 0; +} + +int tempfn_random(const char *p, const char *extra, char **ret) { +        const char *fn; +        char *t, *x; +        uint64_t u; +        unsigned i; + +        assert(p); +        assert(ret); + +        /* +         * Turns this: +         *         /foo/bar/waldo +         * +         * Into this: +         *         /foo/bar/.#<extra>waldobaa2a261115984a9 +         */ + +        fn = basename(p); +        if (!filename_is_valid(fn)) +                return -EINVAL; + +        if (!extra) +                extra = ""; + +        t = new(char, strlen(p) + 2 + strlen(extra) + 16 + 1); +        if (!t) +                return -ENOMEM; + +        x = stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn); + +        u = random_u64(); +        for (i = 0; i < 16; i++) { +                *(x++) = hexchar(u & 0xF); +                u >>= 4; +        } + +        *x = 0; + +        *ret = path_kill_slashes(t); +        return 0; +} + +int tempfn_random_child(const char *p, const char *extra, char **ret) { +        char *t, *x; +        uint64_t u; +        unsigned i; + +        assert(p); +        assert(ret); + +        /* Turns this: +         *         /foo/bar/waldo +         * Into this: +         *         /foo/bar/waldo/.#<extra>3c2b6219aa75d7d0 +         */ + +        if (!extra) +                extra = ""; + +        t = new(char, strlen(p) + 3 + strlen(extra) + 16 + 1); +        if (!t) +                return -ENOMEM; + +        x = stpcpy(stpcpy(stpcpy(t, p), "/.#"), extra); + +        u = random_u64(); +        for (i = 0; i < 16; i++) { +                *(x++) = hexchar(u & 0xF); +                u >>= 4; +        } + +        *x = 0; + +        *ret = path_kill_slashes(t); +        return 0; +} diff --git a/src/basic/fileio.h b/src/basic/fileio.h index 4998d4d042..fa7f192331 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -20,8 +20,12 @@    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 <dirent.h> +#include <stdbool.h>  #include <stddef.h>  #include <stdio.h> +#include <sys/types.h>  #include "macro.h" @@ -49,3 +53,27 @@ int write_env_file(const char *fname, char **l);  int executable_is_script(const char *path, char **interpreter);  int get_proc_field(const char *filename, const char *pattern, const char *terminator, char **field); + +DIR *xopendirat(int dirfd, const char *name, int flags); + +int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f); +int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f); + +#define FOREACH_LINE(line, f, on_error)                         \ +        for (;;)                                                \ +                if (!fgets(line, sizeof(line), f)) {            \ +                        if (ferror(f)) {                        \ +                                on_error;                       \ +                        }                                       \ +                        break;                                  \ +                } else + +int fflush_and_check(FILE *f); + +int fopen_temporary(const char *path, FILE **_f, char **_temp_path); +int mkostemp_safe(char *pattern, int flags); +int open_tmpfile(const char *path, int flags); + +int tempfn_xxxxxx(const char *p, const char *extra, char **ret); +int tempfn_random(const char *p, const char *extra, char **ret); +int tempfn_random_child(const char *p, const char *extra, char **ret); diff --git a/src/basic/hostname-util.c b/src/basic/hostname-util.c index 7d058416e5..ea0528c6fc 100644 --- a/src/basic/hostname-util.c +++ b/src/basic/hostname-util.c @@ -23,6 +23,7 @@  #include <sys/utsname.h>  #include "fd-util.h" +#include "fileio.h"  #include "hostname-util.h"  #include "string-util.h"  #include "util.h" diff --git a/src/basic/time-util.c b/src/basic/time-util.c index b348ed4204..b7d92cbad8 100644 --- a/src/basic/time-util.c +++ b/src/basic/time-util.c @@ -24,6 +24,7 @@  #include <sys/timex.h>  #include "fd-util.h" +#include "fileio.h"  #include "path-util.h"  #include "string-util.h"  #include "strv.h" diff --git a/src/basic/util.c b/src/basic/util.c index f403dca10e..25ba59505d 100644 --- a/src/basic/util.c +++ b/src/basic/util.c @@ -636,25 +636,6 @@ int null_or_empty_fd(int fd) {          return null_or_empty(&st);  } -DIR *xopendirat(int fd, const char *name, int flags) { -        int nfd; -        DIR *d; - -        assert(!(flags & O_CREAT)); - -        nfd = openat(fd, name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|flags, 0); -        if (nfd < 0) -                return NULL; - -        d = fdopendir(nfd); -        if (!d) { -                safe_close(nfd); -                return NULL; -        } - -        return d; -} -  static char *tag_to_udev_node(const char *tagvalue, const char *by) {          _cleanup_free_ char *t = NULL, *u = NULL;          size_t enc_len; @@ -864,39 +845,6 @@ bool plymouth_running(void) {          return access("/run/plymouth/pid", F_OK) >= 0;  } -int fopen_temporary(const char *path, FILE **_f, char **_temp_path) { -        FILE *f; -        char *t; -        int r, fd; - -        assert(path); -        assert(_f); -        assert(_temp_path); - -        r = tempfn_xxxxxx(path, NULL, &t); -        if (r < 0) -                return r; - -        fd = mkostemp_safe(t, O_WRONLY|O_CLOEXEC); -        if (fd < 0) { -                free(t); -                return -errno; -        } - -        f = fdopen(fd, "we"); -        if (!f) { -                unlink_noerrno(t); -                free(t); -                safe_close(fd); -                return -errno; -        } - -        *_f = f; -        *_temp_path = t; - -        return 0; -} -  int symlink_atomic(const char *from, const char *to) {          _cleanup_free_ char *t = NULL;          int r; @@ -1782,88 +1730,6 @@ int on_ac_power(void) {          return found_online || !found_offline;  } -static int search_and_fopen_internal(const char *path, const char *mode, const char *root, char **search, FILE **_f) { -        char **i; - -        assert(path); -        assert(mode); -        assert(_f); - -        if (!path_strv_resolve_uniq(search, root)) -                return -ENOMEM; - -        STRV_FOREACH(i, search) { -                _cleanup_free_ char *p = NULL; -                FILE *f; - -                if (root) -                        p = strjoin(root, *i, "/", path, NULL); -                else -                        p = strjoin(*i, "/", path, NULL); -                if (!p) -                        return -ENOMEM; - -                f = fopen(p, mode); -                if (f) { -                        *_f = f; -                        return 0; -                } - -                if (errno != ENOENT) -                        return -errno; -        } - -        return -ENOENT; -} - -int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f) { -        _cleanup_strv_free_ char **copy = NULL; - -        assert(path); -        assert(mode); -        assert(_f); - -        if (path_is_absolute(path)) { -                FILE *f; - -                f = fopen(path, mode); -                if (f) { -                        *_f = f; -                        return 0; -                } - -                return -errno; -        } - -        copy = strv_copy((char**) search); -        if (!copy) -                return -ENOMEM; - -        return search_and_fopen_internal(path, mode, root, copy, _f); -} - -int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f) { -        _cleanup_strv_free_ char **s = NULL; - -        if (path_is_absolute(path)) { -                FILE *f; - -                f = fopen(path, mode); -                if (f) { -                        *_f = f; -                        return 0; -                } - -                return -errno; -        } - -        s = strv_split_nulstr(search); -        if (!s) -                return -ENOMEM; - -        return search_and_fopen_internal(path, mode, root, s, _f); -} -  void* greedy_realloc(void **p, size_t *allocated, size_t need, size_t size) {          size_t a, newalloc;          void *q; @@ -2213,46 +2079,6 @@ int namespace_enter(int pidns_fd, int mntns_fd, int netns_fd, int userns_fd, int          return reset_uid_gid();  } -/* This is much like like mkostemp() but is subject to umask(). */ -int mkostemp_safe(char *pattern, int flags) { -        _cleanup_umask_ mode_t u; -        int fd; - -        assert(pattern); - -        u = umask(077); - -        fd = mkostemp(pattern, flags); -        if (fd < 0) -                return -errno; - -        return fd; -} - -int open_tmpfile(const char *path, int flags) { -        char *p; -        int fd; - -        assert(path); - -#ifdef O_TMPFILE -        /* Try O_TMPFILE first, if it is supported */ -        fd = open(path, flags|O_TMPFILE|O_EXCL, S_IRUSR|S_IWUSR); -        if (fd >= 0) -                return fd; -#endif - -        /* Fall back to unguessable name + unlinking */ -        p = strjoina(path, "/systemd-tmp-XXXXXX"); - -        fd = mkostemp_safe(p, flags); -        if (fd < 0) -                return fd; - -        unlink(p); -        return fd; -} -  int fd_warn_permissions(const char *path, int fd) {          struct stat st; @@ -2599,127 +2425,6 @@ int bind_remount_recursive(const char *prefix, bool ro) {          }  } -int fflush_and_check(FILE *f) { -        assert(f); - -        errno = 0; -        fflush(f); - -        if (ferror(f)) -                return errno ? -errno : -EIO; - -        return 0; -} - -int tempfn_xxxxxx(const char *p, const char *extra, char **ret) { -        const char *fn; -        char *t; - -        assert(p); -        assert(ret); - -        /* -         * Turns this: -         *         /foo/bar/waldo -         * -         * Into this: -         *         /foo/bar/.#<extra>waldoXXXXXX -         */ - -        fn = basename(p); -        if (!filename_is_valid(fn)) -                return -EINVAL; - -        if (extra == NULL) -                extra = ""; - -        t = new(char, strlen(p) + 2 + strlen(extra) + 6 + 1); -        if (!t) -                return -ENOMEM; - -        strcpy(stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn), "XXXXXX"); - -        *ret = path_kill_slashes(t); -        return 0; -} - -int tempfn_random(const char *p, const char *extra, char **ret) { -        const char *fn; -        char *t, *x; -        uint64_t u; -        unsigned i; - -        assert(p); -        assert(ret); - -        /* -         * Turns this: -         *         /foo/bar/waldo -         * -         * Into this: -         *         /foo/bar/.#<extra>waldobaa2a261115984a9 -         */ - -        fn = basename(p); -        if (!filename_is_valid(fn)) -                return -EINVAL; - -        if (!extra) -                extra = ""; - -        t = new(char, strlen(p) + 2 + strlen(extra) + 16 + 1); -        if (!t) -                return -ENOMEM; - -        x = stpcpy(stpcpy(stpcpy(mempcpy(t, p, fn - p), ".#"), extra), fn); - -        u = random_u64(); -        for (i = 0; i < 16; i++) { -                *(x++) = hexchar(u & 0xF); -                u >>= 4; -        } - -        *x = 0; - -        *ret = path_kill_slashes(t); -        return 0; -} - -int tempfn_random_child(const char *p, const char *extra, char **ret) { -        char *t, *x; -        uint64_t u; -        unsigned i; - -        assert(p); -        assert(ret); - -        /* Turns this: -         *         /foo/bar/waldo -         * Into this: -         *         /foo/bar/waldo/.#<extra>3c2b6219aa75d7d0 -         */ - -        if (!extra) -                extra = ""; - -        t = new(char, strlen(p) + 3 + strlen(extra) + 16 + 1); -        if (!t) -                return -ENOMEM; - -        x = stpcpy(stpcpy(stpcpy(t, p), "/.#"), extra); - -        u = random_u64(); -        for (i = 0; i < 16; i++) { -                *(x++) = hexchar(u & 0xF); -                u >>= 4; -        } - -        *x = 0; - -        *ret = path_kill_slashes(t); -        return 0; -} -  int take_password_lock(const char *root) {          struct flock flock = { diff --git a/src/basic/util.h b/src/basic/util.h index ec95c53130..9393140c72 100644 --- a/src/basic/util.h +++ b/src/basic/util.h @@ -158,8 +158,6 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k  bool fstype_is_network(const char *fstype); -int fopen_temporary(const char *path, FILE **_f, char **_temp_path); -  bool is_device_path(const char *path);  int dir_is_empty(const char *path); @@ -201,8 +199,6 @@ bool null_or_empty(struct stat *st) _pure_;  int null_or_empty_path(const char *fn);  int null_or_empty_fd(int fd); -DIR *xopendirat(int dirfd, const char *name, int flags); -  char *fstab_node_to_udev_node(const char *p);  void execute_directories(const char* const* directories, usec_t timeout, char *argv[]); @@ -349,18 +345,6 @@ const char *draw_special_char(DrawSpecialChar ch);  int on_ac_power(void); -int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f); -int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f); - -#define FOREACH_LINE(line, f, on_error)                         \ -        for (;;)                                                \ -                if (!fgets(line, sizeof(line), f)) {            \ -                        if (ferror(f)) {                        \ -                                on_error;                       \ -                        }                                       \ -                        break;                                  \ -                } else -  #define FOREACH_DIRENT(de, d, on_error)                                 \          for (errno = 0, de = readdir(d);; errno = 0, de = readdir(d))   \                  if (!de) {                                              \ @@ -521,9 +505,6 @@ int container_get_leader(const char *machine, pid_t *pid);  int namespace_open(pid_t pid, int *pidns_fd, int *mntns_fd, int *netns_fd, int *userns_fd, int *root_fd);  int namespace_enter(int pidns_fd, int mntns_fd, int netns_fd, int userns_fd, int root_fd); -int mkostemp_safe(char *pattern, int flags); -int open_tmpfile(const char *path, int flags); -  int fd_warn_permissions(const char *path, int fd);  #ifndef PERSONALITY_INVALID @@ -550,12 +531,6 @@ int umount_recursive(const char *target, int flags);  int bind_remount_recursive(const char *prefix, bool ro); -int fflush_and_check(FILE *f); - -int tempfn_xxxxxx(const char *p, const char *extra, char **ret); -int tempfn_random(const char *p, const char *extra, char **ret); -int tempfn_random_child(const char *p, const char *extra, char **ret); -  int take_password_lock(const char *root);  int is_symlink(const char *path); diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index a167f8086c..7e06abd3bf 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -40,6 +40,7 @@  #include "blkid-util.h"  #include "efivars.h"  #include "fd-util.h" +#include "fileio.h"  #include "rm-rf.h"  #include "string-util.h"  #include "util.h" diff --git a/src/core/cgroup.c b/src/core/cgroup.c index a33eaa8d42..6ef0580fad 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -25,6 +25,7 @@  #include "cgroup-util.h"  #include "cgroup.h"  #include "fd-util.h" +#include "fileio.h"  #include "parse-util.h"  #include "path-util.h"  #include "process-util.h" diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c index 6a43be873a..f424909b46 100644 --- a/src/core/dbus-cgroup.c +++ b/src/core/dbus-cgroup.c @@ -24,6 +24,7 @@  #include "cgroup.h"  #include "dbus-cgroup.h"  #include "fd-util.h" +#include "fileio.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-manager.c b/src/core/dbus-manager.c index 1ef259ec7a..77a64dfd57 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -35,6 +35,7 @@  #include "dbus.h"  #include "env-util.h"  #include "fd-util.h" +#include "fileio.h"  #include "formats-util.h"  #include "install.h"  #include "log.h" diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c index 22b8690c54..91cdeb1f30 100644 --- a/src/core/dbus-service.c +++ b/src/core/dbus-service.c @@ -26,6 +26,7 @@  #include "dbus-kill.h"  #include "dbus-service.h"  #include "fd-util.h" +#include "fileio.h"  #include "path-util.h"  #include "service.h"  #include "string-util.h" diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c index 0c0982b0b4..9572fa17d9 100644 --- a/src/core/ima-setup.c +++ b/src/core/ima-setup.c @@ -25,6 +25,7 @@  #include <errno.h>  #include "fd-util.h" +#include "fileio.h"  #include "ima-setup.h"  #include "log.h"  #include "util.h" diff --git a/src/core/manager.c b/src/core/manager.c index 9ad8a136ab..589501519a 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -54,6 +54,7 @@  #include "escape.h"  #include "exit-status.h"  #include "fd-util.h" +#include "fileio.h"  #include "hashmap.h"  #include "io-util.h"  #include "locale-setup.h" diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 51a2c6dfd7..768d59c8df 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -23,6 +23,7 @@  #include "dropin.h"  #include "fd-util.h" +#include "fileio.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 8dd75f3324..b9683a7ee1 100644 --- a/src/dbus1-generator/dbus1-generator.c +++ b/src/dbus1-generator/dbus1-generator.c @@ -24,6 +24,7 @@  #include "cgroup-util.h"  #include "conf-parser.h"  #include "fd-util.h" +#include "fileio.h"  #include "mkdir.h"  #include "special.h"  #include "unit-name.h" diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 18baf6cc7d..732b3d1704 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -26,6 +26,7 @@  #include <unistd.h>  #include "fd-util.h" +#include "fileio.h"  #include "fstab-util.h"  #include "generator.h"  #include "log.h" diff --git a/src/hwdb/hwdb.c b/src/hwdb/hwdb.c index 3b800e99d3..b4118828a9 100644 --- a/src/hwdb/hwdb.c +++ b/src/hwdb/hwdb.c @@ -23,6 +23,8 @@  #include <string.h>  #include "conf-files.h" +#include "fd-util.h" +#include "fileio.h"  #include "hwdb-internal.h"  #include "hwdb-util.h"  #include "mkdir.h" @@ -31,7 +33,6 @@  #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/export-raw.c b/src/import/export-raw.c index 24c0ec9309..85e781a308 100644 --- a/src/import/export-raw.c +++ b/src/import/export-raw.c @@ -29,6 +29,7 @@  #include "copy.h"  #include "export-raw.h"  #include "fd-util.h" +#include "fileio.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 aa9b7f1a91..38e659a517 100644 --- a/src/import/export-tar.c +++ b/src/import/export-tar.c @@ -24,6 +24,7 @@  #include "btrfs-util.h"  #include "export-tar.h"  #include "fd-util.h" +#include "fileio.h"  #include "import-common.h"  #include "process-util.h"  #include "ratelimit.h" diff --git a/src/import/import-raw.c b/src/import/import-raw.c index a34f30abfc..d94d8ab4ae 100644 --- a/src/import/import-raw.c +++ b/src/import/import-raw.c @@ -27,6 +27,7 @@  #include "btrfs-util.h"  #include "copy.h"  #include "fd-util.h" +#include "fileio.h"  #include "hostname-util.h"  #include "import-common.h"  #include "import-compress.h" diff --git a/src/import/import-tar.c b/src/import/import-tar.c index 9aade0f430..d88eae1973 100644 --- a/src/import/import-tar.c +++ b/src/import/import-tar.c @@ -27,6 +27,7 @@  #include "btrfs-util.h"  #include "copy.h"  #include "fd-util.h" +#include "fileio.h"  #include "hostname-util.h"  #include "import-common.h"  #include "import-compress.h" diff --git a/src/import/pull-dkr.c b/src/import/pull-dkr.c index 448dbafa9f..700462bfd2 100644 --- a/src/import/pull-dkr.c +++ b/src/import/pull-dkr.c @@ -28,6 +28,7 @@  #include "btrfs-util.h"  #include "curl-util.h"  #include "fd-util.h" +#include "fileio.h"  #include "hostname-util.h"  #include "import-common.h"  #include "import-util.h" diff --git a/src/import/pull-raw.c b/src/import/pull-raw.c index 848a4fcd44..4d0ac770aa 100644 --- a/src/import/pull-raw.c +++ b/src/import/pull-raw.c @@ -29,6 +29,7 @@  #include "copy.h"  #include "curl-util.h"  #include "fd-util.h" +#include "fileio.h"  #include "hostname-util.h"  #include "import-common.h"  #include "import-util.h" diff --git a/src/import/pull-tar.c b/src/import/pull-tar.c index 3540bbff41..3e21d72157 100644 --- a/src/import/pull-tar.c +++ b/src/import/pull-tar.c @@ -28,6 +28,7 @@  #include "copy.h"  #include "curl-util.h"  #include "fd-util.h" +#include "fileio.h"  #include "hostname-util.h"  #include "import-common.h"  #include "import-util.h" diff --git a/src/journal/catalog.c b/src/journal/catalog.c index fe3975b7b8..72d2bedc26 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -32,6 +32,7 @@  #include "catalog.h"  #include "conf-files.h"  #include "fd-util.h" +#include "fileio.h"  #include "hashmap.h"  #include "log.h"  #include "mkdir.h" diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index fecccd4eb9..07ca8dde0a 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -30,6 +30,7 @@  #include "compress.h"  #include "fd-util.h" +#include "fileio.h"  #include "journal-internal.h"  #include "log.h"  #include "macro.h" diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c index f388c30d2e..dddd5703f4 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 "fileio.h"  #include "io-util.h"  #include "memfd-util.h"  #include "socket-util.h" diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c index de4f73a471..5d000aedbb 100644 --- a/src/journal/journal-verify.c +++ b/src/journal/journal-verify.c @@ -26,6 +26,7 @@  #include "compress.h"  #include "fd-util.h" +#include "fileio.h"  #include "journal-authenticate.h"  #include "journal-def.h"  #include "journal-file.h" diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c index 72c1f60f02..c942df46a8 100644 --- a/src/journal/test-catalog.c +++ b/src/journal/test-catalog.c @@ -29,6 +29,7 @@  #include "catalog.h"  #include "fd-util.h" +#include "fileio.h"  #include "log.h"  #include "macro.h"  #include "string-util.h" diff --git a/src/journal/test-compress.c b/src/journal/test-compress.c index e562fa1948..db4fa15554 100644 --- a/src/journal/test-compress.c +++ b/src/journal/test-compress.c @@ -19,6 +19,7 @@  #include "compress.h"  #include "fd-util.h" +#include "fileio.h"  #include "macro.h"  #include "random-util.h"  #include "util.h" diff --git a/src/journal/test-mmap-cache.c b/src/journal/test-mmap-cache.c index ac1239acc4..fdd48e531c 100644 --- a/src/journal/test-mmap-cache.c +++ b/src/journal/test-mmap-cache.c @@ -19,12 +19,13 @@    along with systemd; If not, see <http://www.gnu.org/licenses/>.  ***/ +#include <fcntl.h>  #include <stdlib.h>  #include <sys/mman.h>  #include <unistd.h> -#include <fcntl.h>  #include "fd-util.h" +#include "fileio.h"  #include "macro.h"  #include "mmap-cache.h"  #include "util.h" diff --git a/src/libsystemd-network/sd-lldp.c b/src/libsystemd-network/sd-lldp.c index b2b85e56e8..bc06f48386 100644 --- a/src/libsystemd-network/sd-lldp.c +++ b/src/libsystemd-network/sd-lldp.c @@ -25,6 +25,7 @@  #include "sd-lldp.h"  #include "fd-util.h" +#include "fileio.h"  #include "hashmap.h"  #include "lldp-internal.h"  #include "lldp-port.h" diff --git a/src/libsystemd/sd-bus/bus-dump.c b/src/libsystemd/sd-bus/bus-dump.c index cd7fcc7c80..9ddd059072 100644 --- a/src/libsystemd/sd-bus/bus-dump.c +++ b/src/libsystemd/sd-bus/bus-dump.c @@ -19,18 +19,19 @@    along with systemd; If not, see <http://www.gnu.org/licenses/>.  ***/ +#include "bus-dump.h"  #include "bus-internal.h"  #include "bus-message.h"  #include "bus-type.h"  #include "cap-list.h"  #include "capability.h" +#include "fileio.h"  #include "formats-util.h"  #include "macro.h"  #include "string-util.h"  #include "strv.h"  #include "terminal-util.h"  #include "util.h" -#include "bus-dump.h"  static char *indent(unsigned level, unsigned flags) {          char *p; diff --git a/src/libsystemd/sd-bus/bus-introspect.c b/src/libsystemd/sd-bus/bus-introspect.c index f5a8885332..a90536bac9 100644 --- a/src/libsystemd/sd-bus/bus-introspect.c +++ b/src/libsystemd/sd-bus/bus-introspect.c @@ -24,6 +24,7 @@  #include "bus-protocol.h"  #include "bus-signature.h"  #include "fd-util.h" +#include "fileio.h"  #include "string-util.h"  #include "util.h" diff --git a/src/libsystemd/sd-bus/bus-match.c b/src/libsystemd/sd-bus/bus-match.c index fca3ebd394..6a37f22c1f 100644 --- a/src/libsystemd/sd-bus/bus-match.c +++ b/src/libsystemd/sd-bus/bus-match.c @@ -24,6 +24,7 @@  #include "bus-message.h"  #include "bus-util.h"  #include "fd-util.h" +#include "fileio.h"  #include "hexdecoct.h"  #include "string-util.h"  #include "strv.h" diff --git a/src/libsystemd/sd-path/sd-path.c b/src/libsystemd/sd-path/sd-path.c index 8e3eeb15d8..c1d42e96e5 100644 --- a/src/libsystemd/sd-path/sd-path.c +++ b/src/libsystemd/sd-path/sd-path.c @@ -21,6 +21,7 @@  #include "architecture.h"  #include "fd-util.h" +#include "fileio.h"  #include "missing.h"  #include "path-util.h"  #include "string-util.h" diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c index 5590aec2b7..0059c09e77 100644 --- a/src/libudev/libudev-monitor.c +++ b/src/libudev/libudev-monitor.c @@ -31,6 +31,7 @@  #include "libudev.h"  #include "fd-util.h" +#include "fileio.h"  #include "formats-util.h"  #include "libudev-private.h"  #include "missing.h" diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 2566894d05..2dcf8ddc62 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -27,6 +27,7 @@  #include "sd-messages.h"  #include "fd-util.h" +#include "fileio.h"  #include "formats-util.h"  #include "logind-acl.h"  #include "logind-seat.h" diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index 34bd65cb11..5627e63938 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -28,6 +28,7 @@  #include "conf-files.h"  #include "fd-util.h" +#include "fileio.h"  #include "log.h"  #include "string-util.h"  #include "strv.h" diff --git a/src/network/networkd-manager.c b/src/network/networkd-manager.c index febfe2ff81..af243c9a70 100644 --- a/src/network/networkd-manager.c +++ b/src/network/networkd-manager.c @@ -29,6 +29,7 @@  #include "conf-parser.h"  #include "def.h"  #include "fd-util.h" +#include "fileio.h"  #include "libudev-private.h"  #include "local-addresses.h"  #include "netlink-util.h" diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index 15203d21ea..9e8025d615 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -34,6 +34,7 @@  #include "ask-password-api.h"  #include "fd-util.h" +#include "fileio.h"  #include "formats-util.h"  #include "io-util.h"  #include "missing.h" diff --git a/src/shared/clean-ipc.c b/src/shared/clean-ipc.c index fe3187384f..2be1bc3fc0 100644 --- a/src/shared/clean-ipc.c +++ b/src/shared/clean-ipc.c @@ -30,6 +30,7 @@  #include "clean-ipc.h"  #include "fd-util.h" +#include "fileio.h"  #include "formats-util.h"  #include "string-util.h"  #include "strv.h" diff --git a/src/shared/machine-pool.c b/src/shared/machine-pool.c index c576242b59..6d726a687a 100644 --- a/src/shared/machine-pool.c +++ b/src/shared/machine-pool.c @@ -26,6 +26,7 @@  #include "btrfs-util.h"  #include "fd-util.h" +#include "fileio.h"  #include "lockfile-util.h"  #include "machine-pool.h"  #include "mkdir.h" diff --git a/src/test/test-async.c b/src/test/test-async.c index abd36d693c..ada6d67c42 100644 --- a/src/test/test-async.c +++ b/src/test/test-async.c @@ -20,8 +20,9 @@  #include <unistd.h>  #include "async.h" -#include "util.h" +#include "fileio.h"  #include "macro.h" +#include "util.h"  static bool test_async = false; diff --git a/src/test/test-fdset.c b/src/test/test-fdset.c index 96d5e38177..282aab1246 100644 --- a/src/test/test-fdset.c +++ b/src/test/test-fdset.c @@ -22,6 +22,7 @@  #include "fd-util.h"  #include "fdset.h" +#include "fileio.h"  #include "macro.h"  #include "util.h" diff --git a/src/test/test-terminal-util.c b/src/test/test-terminal-util.c index a41de59719..e940b5a204 100644 --- a/src/test/test-terminal-util.c +++ b/src/test/test-terminal-util.c @@ -21,11 +21,12 @@  #include <stdio.h>  #include <stdbool.h> -#include "terminal-util.h" +#include "fd-util.h" +#include "fileio.h" +#include "log.h"  #include "macro.h" +#include "terminal-util.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 6aa9cc8473..683fbe217c 100644 --- a/src/test/test-tmpfiles.c +++ b/src/test/test-tmpfiles.c @@ -25,6 +25,7 @@  #include <unistd.h>  #include "fd-util.h" +#include "fileio.h"  #include "formats-util.h"  #include "string-util.h"  #include "util.h" diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 57cca17e80..85a2d6c2f5 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -45,6 +45,7 @@  #include "copy.h"  #include "escape.h"  #include "fd-util.h" +#include "fileio.h"  #include "formats-util.h"  #include "io-util.h"  #include "label.h" diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index f9509ad640..69aff7b579 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -23,6 +23,7 @@  #include <string.h>  #include "conf-files.h" +#include "fileio.h"  #include "hwdb-internal.h"  #include "hwdb-util.h"  #include "strbuf.h" | 
