From c0cf1c58268acf5eb5fac76866875c4a9abfce83 Mon Sep 17 00:00:00 2001 From: Mike Yuan Date: Tue, 10 Dec 2024 15:51:24 +0100 Subject: [PATCH] basic/fileio: minor modernization for xopendirat() --- src/basic/fileio.c | 16 +++++++++------- src/basic/fileio.h | 20 +++++++++----------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 2d29c384cc7..8cf7f21b6bb 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -957,19 +957,21 @@ int get_proc_field(const char *filename, const char *pattern, const char *termin return 0; } -DIR *xopendirat(int fd, const char *name, int flags) { - _cleanup_close_ int nfd = -EBADF; +DIR* xopendirat(int dir_fd, const char *name, int flags) { + _cleanup_close_ int fd = -EBADF; - assert(!(flags & O_CREAT)); + assert(dir_fd >= 0 || dir_fd == AT_FDCWD); + assert(name); + assert(!(flags & (O_CREAT|O_TMPFILE))); - if (fd == AT_FDCWD && flags == 0) + if (dir_fd == AT_FDCWD && flags == 0) return opendir(name); - nfd = openat(fd, name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|flags, 0); - if (nfd < 0) + fd = openat(dir_fd, name, O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|flags); + if (fd < 0) return NULL; - return take_fdopendir(&nfd); + return take_fdopendir(&fd); } int fopen_mode_to_flags(const char *mode) { diff --git a/src/basic/fileio.h b/src/basic/fileio.h index 71ec6ba9210..29518d201ee 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -98,7 +98,7 @@ 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); +DIR* xopendirat(int dir_fd, const char *name, int flags); typedef enum XfopenFlags { XFOPEN_UNLOCKED = 1 << 0, /* call __fsetlocking(FSETLOCKING_BYCALLER) after opened */ @@ -148,6 +148,14 @@ typedef enum ReadLineFlags { } ReadLineFlags; int read_line_full(FILE *f, size_t limit, ReadLineFlags flags, char **ret); +static inline int read_line(FILE *f, size_t limit, char **ret) { + return read_line_full(f, limit, 0, ret); +} +static inline int read_nul_string(FILE *f, size_t limit, char **ret) { + return read_line_full(f, limit, READ_LINE_ONLY_NUL, ret); +} + +int read_stripped_line(FILE *f, size_t limit, char **ret); static inline bool file_offset_beyond_memory_size(off_t x) { if (x < 0) /* off_t is signed, filter that out */ @@ -155,16 +163,6 @@ static inline bool file_offset_beyond_memory_size(off_t x) { return (uint64_t) x > (uint64_t) SIZE_MAX; } -static inline int read_line(FILE *f, size_t limit, char **ret) { - return read_line_full(f, limit, 0, ret); -} - -static inline int read_nul_string(FILE *f, size_t limit, char **ret) { - return read_line_full(f, limit, READ_LINE_ONLY_NUL, ret); -} - -int read_stripped_line(FILE *f, size_t limit, char **ret); - int safe_fgetc(FILE *f, char *ret); int warn_file_is_world_accessible(const char *filename, struct stat *st, const char *unit, unsigned line);