diff options
author | Wayne Davison <wayned@samba.org> | 2004-04-27 19:51:33 +0000 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2004-04-27 19:51:33 +0000 |
commit | 9f27cd8ca6ccbf1ab4cd8b0b66445535e2573d59 (patch) | |
tree | 1ec0d364930b42bbdc6c2e05dca26a9b42fbff4b | |
parent | b084f9e092159b03c955312b0c90fe95eb490b2f (diff) | |
download | rsync-9f27cd8ca6ccbf1ab4cd8b0b66445535e2573d59.tar.gz |
Check the return code from close() and output an error if it
fails.
-rw-r--r-- | receiver.c | 6 | ||||
-rw-r--r-- | util.c | 22 |
2 files changed, 20 insertions, 8 deletions
@@ -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); @@ -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; } |