|
|
|
@ -2,7 +2,7 @@ |
|
|
|
|
* gzlog.c |
|
|
|
|
* Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved |
|
|
|
|
* For conditions of distribution and use, see copyright notice in gzlog.h |
|
|
|
|
* version 2.1, 8 Jul 2012 |
|
|
|
|
* version 2.2, 14 Aug 2012 |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -750,7 +750,8 @@ local int log_recover(struct log *log, int op) |
|
|
|
|
strcpy(log->end, ".add"); |
|
|
|
|
if (stat(log->path, &st) == 0 && st.st_size) { |
|
|
|
|
len = (size_t)(st.st_size); |
|
|
|
|
if (len != st.st_size || (data = malloc(st.st_size)) == NULL) { |
|
|
|
|
if ((off_t)len != st.st_size || |
|
|
|
|
(data = malloc(st.st_size)) == NULL) { |
|
|
|
|
log_log(log, op, "allocation failure"); |
|
|
|
|
return -2; |
|
|
|
|
} |
|
|
|
@ -758,7 +759,7 @@ local int log_recover(struct log *log, int op) |
|
|
|
|
log_log(log, op, ".add file read failure"); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
ret = read(fd, data, len) != len; |
|
|
|
|
ret = (size_t)read(fd, data, len) != len; |
|
|
|
|
close(fd); |
|
|
|
|
if (ret) { |
|
|
|
|
log_log(log, op, ".add file read failure"); |
|
|
|
@ -952,7 +953,7 @@ int gzlog_compress(gzlog *logd) |
|
|
|
|
fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); |
|
|
|
|
if (fd < 0) |
|
|
|
|
break; |
|
|
|
|
ret = write(fd, data, len) != len; |
|
|
|
|
ret = (size_t)write(fd, data, len) != len; |
|
|
|
|
if (ret | close(fd)) |
|
|
|
|
break; |
|
|
|
|
log_touch(log); |
|
|
|
@ -963,7 +964,7 @@ int gzlog_compress(gzlog *logd) |
|
|
|
|
if (fd < 0) |
|
|
|
|
break; |
|
|
|
|
next = DICT > len ? len : DICT; |
|
|
|
|
ret = write(fd, (char *)data + len - next, next) != next; |
|
|
|
|
ret = (size_t)write(fd, (char *)data + len - next, next) != next; |
|
|
|
|
if (ret | close(fd)) |
|
|
|
|
break; |
|
|
|
|
log_touch(log); |
|
|
|
@ -1013,7 +1014,7 @@ int gzlog_write(gzlog *logd, void *data, size_t len) |
|
|
|
|
fd = open(log->path, O_WRONLY | O_CREAT | O_TRUNC, 0644); |
|
|
|
|
if (fd < 0) |
|
|
|
|
return -1; |
|
|
|
|
ret = write(fd, data, len) != len; |
|
|
|
|
ret = (size_t)write(fd, data, len) != len; |
|
|
|
|
if (ret | close(fd)) |
|
|
|
|
return -1; |
|
|
|
|
log_touch(log); |
|
|
|
|