diff --git a/utils/skygw_debug.h b/utils/skygw_debug.h index 1d22fbdbd..3d43451b5 100644 --- a/utils/skygw_debug.h +++ b/utils/skygw_debug.h @@ -263,6 +263,9 @@ typedef enum skygw_chk_t { (SERVER_IS_RELAY_SERVER(s) ? "RUNNING RELAY" : \ (SERVER_IS_RUNNING(s) ? "RUNNING (only)" : "NO STATUS"))))))) +#define BREFSRV(b) (b->bref_backend->backend_server) + + #define STRHINTTYPE(t) (t == HINT_ROUTE_TO_MASTER ? "HINT_ROUTE_TO_MASTER" : \ ((t) == HINT_ROUTE_TO_SLAVE ? "HINT_ROUTE_TO_SLAVE" : \ ((t) == HINT_ROUTE_TO_NAMED_SERVER ? "HINT_ROUTE_TO_NAMED_SERVER" : \ diff --git a/utils/skygw_utils.cc b/utils/skygw_utils.cc index 52ab2b732..f801b497f 100644 --- a/utils/skygw_utils.cc +++ b/utils/skygw_utils.cc @@ -1749,14 +1749,23 @@ return_succp: return succp; } - -bool skygw_file_write( +/** + * Write data to a file. + * + * @param file write target + * @param data pointer to contiguous memory buffer + * @param nbytes amount of bytes to be written + * @param flush ensure that write is permanent + * + * @return 0 if succeed, errno if failed. + */ +int skygw_file_write( skygw_file_t* file, void* data, size_t nbytes, bool flush) { - bool succp = false; + int rc; #if !defined(LAPTOP_TEST) int err = 0; size_t nwritten; @@ -1771,13 +1780,14 @@ bool skygw_file_write( nwritten = fwrite(data, nbytes, 1, file->sf_file); if (nwritten != 1) { + rc = errno; perror("Logfile write.\n"); fprintf(stderr, - "* Writing %ld bytes, %s to %s failed.\n", + "* Writing %ld bytes,\n%s\n to %s failed.\n", nbytes, (char *)data, file->sf_fname); - goto return_succp; + goto return_rc; } writecount += 1; @@ -1789,10 +1799,10 @@ bool skygw_file_write( writecount = 0; } #endif - succp = true; + rc = 0; CHK_FILE(file); -return_succp: - return succp; +return_rc: + return rc; } skygw_file_t* skygw_file_init( diff --git a/utils/skygw_utils.h b/utils/skygw_utils.h index 6d2bc7b67..17ce75f7d 100644 --- a/utils/skygw_utils.h +++ b/utils/skygw_utils.h @@ -146,7 +146,7 @@ EXTERN_C_BLOCK_END /** Skygw file routines */ skygw_file_t* skygw_file_init(char* fname, char* symlinkname); void skygw_file_done(skygw_file_t* file); -bool skygw_file_write( +int skygw_file_write( skygw_file_t* file, void* data, size_t nbytes,