From 084698b996f1ef7f372b97b5cddd0293b09902ff Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Fri, 28 Oct 2016 15:14:01 +0200 Subject: [PATCH] logger: Simplify binary log file header writing Additionally, add return code as writing may fail and handle the return code in invoking functions. Change-Id: I7c1434fe87b6f6a50ea986307e935efd87775796 --- src/logger/logger.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/src/logger/logger.c b/src/logger/logger.c index 26eea88..164e8e0 100644 --- a/src/logger/logger.c +++ b/src/logger/logger.c @@ -539,20 +539,16 @@ static void buffer_append(struct logger* s, const struct logger_entry* entry, st * @brief Add binary file header * @details Adds the header to a binary file * @param[in] fd The file FD + * @return 0 on success, -errno on failure */ -static void add_misc_file_info(int fd) +static int add_misc_file_info(int fd) { - const int32_t version = PIPE_FILE_FORMAT_VERSION; - const int32_t endian = 0x12345678; - int r; - - r = write(fd, &endian, 4); - if (r <= 0) - return; + const int32_t header[2] = { + /* endian */ 0x12345678, + /* version */ PIPE_FILE_FORMAT_VERSION, + }; - r = write(fd, &version, 4); - if (r <= 0) - return; + return (write(fd, &header, sizeof(header)) != sizeof(header)) ? -errno : 0; } /** @@ -685,8 +681,13 @@ static int print_out_logs(struct reader* reader, struct log_buffer* buffer) goto cleanup; rotate_logs(&reader->file); - if (!plaintext) - add_misc_file_info(reader->file.fd); + if (!plaintext) { + r = add_misc_file_info(reader->file.fd); + if (r < 0) { + ret = 1; + goto cleanup; + } + } } } @@ -1009,8 +1010,11 @@ static int parse_command_line(const char* cmdl, struct logger* server, struct wr retval = -errno; goto cleanup; } - if (!file_already_exists && reader->type == READER_BUFFER && reader->buf_id != LOG_ID_KMSG) - add_misc_file_info(reader->file.fd); + if (!file_already_exists && reader->type == READER_BUFFER && reader->buf_id != LOG_ID_KMSG) { + retval = add_misc_file_info(reader->file.fd); + if (retval < 0) + goto cleanup; + } } else { reader->file.rotate_size_kbytes = 0; reader->file.max_rotated = 0; -- 2.7.4