Add a safe wrapper for write and fix some warnings
1. Add a function writeall and make swrite wrap that function. Use either writeall or swrite, depending on whether we want to exit on errors or not. 2. Fix warnings when compiling with a higher optimisation level. (CFLAGS ?= -pipe -O3 -march=native -mtune=native -freorder-blocks-and-partition) Signed-off-by: hwangcc <hwangcc@csie.nctu.edu.tw>
This commit is contained in:
24
src/util.c
24
src/util.c
@ -265,25 +265,13 @@ char *store_restart_layout(void) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
size_t written = 0;
|
||||
while (written < length) {
|
||||
int n = write(fd, payload + written, length - written);
|
||||
/* TODO: correct error-handling */
|
||||
if (n == -1) {
|
||||
perror("write()");
|
||||
free(filename);
|
||||
close(fd);
|
||||
return NULL;
|
||||
}
|
||||
if (n == 0) {
|
||||
DLOG("write == 0?\n");
|
||||
free(filename);
|
||||
close(fd);
|
||||
return NULL;
|
||||
}
|
||||
written += n;
|
||||
DLOG("written: %zd of %zd\n", written, length);
|
||||
if (writeall(fd, payload, length) == -1) {
|
||||
ELOG("Could not write restart layout to \"%s\", layout will be lost: %s\n", filename, strerror(errno));
|
||||
free(filename);
|
||||
close(fd);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
close(fd);
|
||||
|
||||
if (length > 0) {
|
||||
|
Reference in New Issue
Block a user