From cabbf61fab7e69860b076f1d55b26e1fb07b0b4c Mon Sep 17 00:00:00 2001 From: Egor Chelak Date: Sat, 7 Nov 2020 02:19:56 +0200 Subject: [PATCH] ul_copy_file: make defines for return values Suggested-by: Sami Kerola Signed-off-by: Egor Chelak --- include/fileutils.h | 2 ++ lib/fileutils.c | 10 +++++----- login-utils/vipw.c | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/fileutils.h b/include/fileutils.h index 2766b0d437..618bf39967 100644 --- a/include/fileutils.h +++ b/include/fileutils.h @@ -74,6 +74,8 @@ static inline struct dirent *xreaddir(DIR *dp) extern void close_all_fds(const int exclude[], size_t exsz); +#define UL_COPY_READ_ERROR (-1) +#define UL_COPY_WRITE_ERROR (-2) int ul_copy_file(int from, int to); #endif /* UTIL_LINUX_FILEUTILS */ diff --git a/lib/fileutils.c b/lib/fileutils.c index a41830457e..9da906ae09 100644 --- a/lib/fileutils.c +++ b/lib/fileutils.c @@ -199,9 +199,9 @@ int main(int argc, char *argv[]) close_all_fds(wanted_fds, ARRAY_SIZE(wanted_fds)); } else if (strcmp(argv[1], "--copy-file") == 0) { int ret = ul_copy_file(STDIN_FILENO, STDOUT_FILENO); - if (ret == -1) + if (ret == UL_COPY_READ_ERROR) err(EXIT_FAILURE, "read"); - else if (ret == -2) + else if (ret == UL_COPY_WRITE_ERROR) err(EXIT_FAILURE, "write"); } return EXIT_SUCCESS; @@ -263,9 +263,9 @@ static int copy_file_simple(int from, int to) while ((nr = read_all(from, buf, sizeof(buf))) > 0) if (write_all(to, buf, nr) == -1) - return -2; + return UL_COPY_WRITE_ERROR; if (nr < 0) - return -1; + return UL_COPY_READ_ERROR; #ifdef HAVE_EXPLICIT_BZERO explicit_bzero(buf, sizeof(buf)); #endif @@ -280,7 +280,7 @@ int ul_copy_file(int from, int to) ssize_t nw; if (fstat(from, &st) == -1) - return -1; + return UL_COPY_READ_ERROR; if (!S_ISREG(st.st_mode)) return copy_file_simple(from, to); if (sendfile_all(to, from, NULL, st.st_size) < 0) diff --git a/login-utils/vipw.c b/login-utils/vipw.c index a107259aec..c2d6a9fb1e 100644 --- a/login-utils/vipw.c +++ b/login-utils/vipw.c @@ -131,9 +131,9 @@ static FILE * pw_tmpfile(int lockfd) tmp_file = tmpname; res = ul_copy_file(lockfd, fileno(fd)); - if (res == -1) + if (res == UL_COPY_READ_ERROR) pw_error(orig_file, 1, 1); - else if (res == -2) + else if (res == UL_COPY_WRITE_ERROR) pw_error(tmp_file, 1, 1); return fd; } -- 2.47.3