mirror of
https://github.com/reactos/ccache.git
synced 2025-01-08 12:00:20 +00:00
Improve logging of error conditions in copy_file
This commit is contained in:
parent
89fe28488e
commit
022c16be74
19
util.c
19
util.c
@ -123,17 +123,23 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
char *tmp_name;
|
char *tmp_name;
|
||||||
mode_t mask;
|
mode_t mask;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
int errnum;
|
||||||
|
|
||||||
|
cc_log("Copying %s to %s (%s)",
|
||||||
|
src, dest, compress_dest ? "compressed": "uncompressed");
|
||||||
|
|
||||||
x_asprintf(&tmp_name, "%s.%s.XXXXXX", dest, tmp_string());
|
x_asprintf(&tmp_name, "%s.%s.XXXXXX", dest, tmp_string());
|
||||||
|
|
||||||
/* open source file */
|
/* open source file */
|
||||||
fd_in = open(src, O_RDONLY);
|
fd_in = open(src, O_RDONLY);
|
||||||
if (fd_in == -1) {
|
if (fd_in == -1) {
|
||||||
|
cc_log("open error: %s", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
gz_in = gzdopen(fd_in, "rb");
|
gz_in = gzdopen(fd_in, "rb");
|
||||||
if (!gz_in) {
|
if (!gz_in) {
|
||||||
|
cc_log("gzdopen(src) error: %s", strerror(errno));
|
||||||
close(fd_in);
|
close(fd_in);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -141,6 +147,7 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
/* open destination file */
|
/* open destination file */
|
||||||
fd_out = mkstemp(tmp_name);
|
fd_out = mkstemp(tmp_name);
|
||||||
if (fd_out == -1) {
|
if (fd_out == -1) {
|
||||||
|
cc_log("mkstemp error: %s", strerror(errno));
|
||||||
gzclose(gz_in);
|
gzclose(gz_in);
|
||||||
free(tmp_name);
|
free(tmp_name);
|
||||||
return -1;
|
return -1;
|
||||||
@ -153,6 +160,7 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
* Turn off compression for empty files to save some space.
|
* Turn off compression for empty files to save some space.
|
||||||
*/
|
*/
|
||||||
if (fstat(fd_in, &st) != 0) {
|
if (fstat(fd_in, &st) != 0) {
|
||||||
|
cc_log("fstat error: %s", strerror(errno));
|
||||||
gzclose(gz_in);
|
gzclose(gz_in);
|
||||||
close(fd_out);
|
close(fd_out);
|
||||||
free(tmp_name);
|
free(tmp_name);
|
||||||
@ -166,6 +174,7 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
if (compress_dest) {
|
if (compress_dest) {
|
||||||
gz_out = gzdopen(dup(fd_out), "wb");
|
gz_out = gzdopen(dup(fd_out), "wb");
|
||||||
if (!gz_out) {
|
if (!gz_out) {
|
||||||
|
cc_log("gzdopen(dest) error: %s", strerror(errno));
|
||||||
gzclose(gz_in);
|
gzclose(gz_in);
|
||||||
close(fd_out);
|
close(fd_out);
|
||||||
free(tmp_name);
|
free(tmp_name);
|
||||||
@ -180,6 +189,13 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
ret = write(fd_out, buf, n);
|
ret = write(fd_out, buf, n);
|
||||||
}
|
}
|
||||||
if (ret != n) {
|
if (ret != n) {
|
||||||
|
if (compress_dest) {
|
||||||
|
cc_log("gzwrite error: %s (errno: %s)",
|
||||||
|
gzerror(gz_in, &errnum),
|
||||||
|
strerror(errno));
|
||||||
|
} else {
|
||||||
|
cc_log("write error: %s", strerror(errno));
|
||||||
|
}
|
||||||
gzclose(gz_in);
|
gzclose(gz_in);
|
||||||
if (gz_out) {
|
if (gz_out) {
|
||||||
gzclose(gz_out);
|
gzclose(gz_out);
|
||||||
@ -191,7 +207,6 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (n == 0 && !gzeof(gz_in)) {
|
if (n == 0 && !gzeof(gz_in)) {
|
||||||
int errnum;
|
|
||||||
cc_log("gzread error: %s (errno: %s)",
|
cc_log("gzread error: %s (errno: %s)",
|
||||||
gzerror(gz_in, &errnum), strerror(errno));
|
gzerror(gz_in, &errnum), strerror(errno));
|
||||||
gzclose(gz_in);
|
gzclose(gz_in);
|
||||||
@ -216,6 +231,7 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
|
|
||||||
/* the close can fail on NFS if out of space */
|
/* the close can fail on NFS if out of space */
|
||||||
if (close(fd_out) == -1) {
|
if (close(fd_out) == -1) {
|
||||||
|
cc_log("close error: %s", strerror(errno));
|
||||||
unlink(tmp_name);
|
unlink(tmp_name);
|
||||||
free(tmp_name);
|
free(tmp_name);
|
||||||
return -1;
|
return -1;
|
||||||
@ -224,6 +240,7 @@ int copy_file(const char *src, const char *dest, int compress_dest)
|
|||||||
unlink(dest);
|
unlink(dest);
|
||||||
|
|
||||||
if (rename(tmp_name, dest) == -1) {
|
if (rename(tmp_name, dest) == -1) {
|
||||||
|
cc_log("rename error: %s", strerror(errno));
|
||||||
unlink(tmp_name);
|
unlink(tmp_name);
|
||||||
free(tmp_name);
|
free(tmp_name);
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user