From 9f27cd8ca6ccbf1ab4cd8b0b66445535e2573d59 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Tue, 27 Apr 2004 19:51:33 +0000 Subject: [PATCH] Check the return code from close() and output an error if it fails. --- receiver.c | 6 +++++- util.c | 22 +++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/receiver.c b/receiver.c index 108c8560..1975e580 100644 --- a/receiver.c +++ b/receiver.c @@ -458,7 +458,11 @@ int recv_files(int f_in,struct file_list *flist,char *local_name) if (fd1 != -1) { close(fd1); } - close(fd2); + if (close(fd2) < 0) { + rprintf(FERROR, "close failed on %s: %s\n", + full_fname(fnametmp), strerror(errno)); + exit_cleanup(RERR_FILEIO); + } if (verbose > 2) rprintf(FINFO,"renaming %s to %s\n",fnametmp,fname); diff --git a/util.c b/util.c index 327dd91d..5129c35b 100644 --- a/util.c +++ b/util.c @@ -253,20 +253,20 @@ int copy_file(char *source, char *dest, mode_t mode) ifd = do_open(source, O_RDONLY, 0); if (ifd == -1) { rprintf(FERROR,"open %s: %s\n", - source,strerror(errno)); + full_fname(source), strerror(errno)); return -1; } if (robust_unlink(dest) && errno != ENOENT) { rprintf(FERROR,"unlink %s: %s\n", - dest,strerror(errno)); + full_fname(dest), strerror(errno)); return -1; } ofd = do_open(dest, O_WRONLY | O_CREAT | O_TRUNC | O_EXCL, mode); if (ofd == -1) { rprintf(FERROR,"open %s: %s\n", - dest,strerror(errno)); + full_fname(dest), strerror(errno)); close(ifd); return -1; } @@ -274,19 +274,27 @@ int copy_file(char *source, char *dest, mode_t mode) while ((len = safe_read(ifd, buf, sizeof buf)) > 0) { if (full_write(ofd, buf, len) < 0) { rprintf(FERROR,"write %s: %s\n", - dest,strerror(errno)); + full_fname(dest), strerror(errno)); close(ifd); close(ofd); return -1; } } - close(ifd); - close(ofd); + if (close(ifd) < 0) { + rprintf(FINFO, "close failed on %s: %s\n", + full_fname(source), strerror(errno)); + } + + if (close(ofd) < 0) { + rprintf(FERROR, "close failed on %s: %s\n", + full_fname(dest), strerror(errno)); + return -1; + } if (len < 0) { rprintf(FERROR,"read %s: %s\n", - source,strerror(errno)); + full_fname(source), strerror(errno)); return -1; } -- 2.34.1