From: Egor Chelak Date: Sat, 7 Nov 2020 00:19:56 +0000 (+0200) Subject: ul_copy_file: make defines for return values X-Git-Tag: v2.37-rc1~393^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cabbf61fab7e69860b076f1d55b26e1fb07b0b4c;p=thirdparty%2Futil-linux.git ul_copy_file: make defines for return values Suggested-by: Sami Kerola Signed-off-by: Egor Chelak --- 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; }