From 46b457e54bd74fb7589bef529a7e42e980ffd777 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sun, 9 Apr 2023 02:41:26 +0900 Subject: fileio: introduce read_one_line_file_at() --- src/basic/fileio.c | 11 ++++++----- src/basic/fileio.h | 5 ++++- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/basic/fileio.c b/src/basic/fileio.c index 340f9b4860..2eefaf0428 100644 --- a/src/basic/fileio.c +++ b/src/basic/fileio.c @@ -354,18 +354,19 @@ int write_string_filef( return write_string_file(fn, p, flags); } -int read_one_line_file(const char *fn, char **line) { +int read_one_line_file_at(int dir_fd, const char *filename, char **ret) { _cleanup_fclose_ FILE *f = NULL; int r; - assert(fn); - assert(line); + assert(dir_fd >= 0 || dir_fd == AT_FDCWD); + assert(filename); + assert(ret); - r = fopen_unlocked(fn, "re", &f); + r = fopen_unlocked_at(dir_fd, filename, "re", 0, &f); if (r < 0) return r; - return read_line(f, LONG_LINE_MAX, line); + return read_line(f, LONG_LINE_MAX, ret); } int verify_file_at(int dir_fd, const char *fn, const char *blob, bool accept_extra_nl) { diff --git a/src/basic/fileio.h b/src/basic/fileio.h index 0a88a19146..8901a43c41 100644 --- a/src/basic/fileio.h +++ b/src/basic/fileio.h @@ -71,7 +71,10 @@ static inline int write_string_file(const char *fn, const char *line, WriteStrin int write_string_filef(const char *fn, WriteStringFileFlags flags, const char *format, ...) _printf_(3, 4); -int read_one_line_file(const char *filename, char **line); +int read_one_line_file_at(int dir_fd, const char *filename, char **ret); +static inline int read_one_line_file(const char *filename, char **ret) { + return read_one_line_file_at(AT_FDCWD, filename, ret); +} int read_full_file_full(int dir_fd, const char *filename, uint64_t offset, size_t size, ReadFullFileFlags flags, const char *bind_name, char **ret_contents, size_t *ret_size); static inline int read_full_file_at(int dir_fd, const char *filename, char **ret_contents, size_t *ret_size) { return read_full_file_full(dir_fd, filename, UINT64_MAX, SIZE_MAX, 0, NULL, ret_contents, ret_size); -- cgit v1.2.1