X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=src%2Fplugins%2Fctf%2Ffs-src%2Ffile.cpp;h=5184de45c4a218951b7e7fa967d213d23b2788c2;hb=afb0f12beee7f3aa65156e27a76b627dfb3b52e1;hp=42b865a86675bdbddad5f0c96230e30284b8c36b;hpb=087cd0f57f0f7d815a609a4e041d1200f380e4aa;p=babeltrace.git diff --git a/src/plugins/ctf/fs-src/file.cpp b/src/plugins/ctf/fs-src/file.cpp index 42b865a8..5184de45 100644 --- a/src/plugins/ctf/fs-src/file.cpp +++ b/src/plugins/ctf/fs-src/file.cpp @@ -4,108 +4,94 @@ * Copyright 2016 Philippe Proulx */ +#include +#include +#include + #define BT_COMP_LOG_SELF_COMP (file->self_comp) -#define BT_LOG_OUTPUT_LEVEL (file->log_level) -#define BT_LOG_TAG "PLUGIN/SRC.CTF.FS/FILE" +#define BT_LOG_OUTPUT_LEVEL (file->log_level) +#define BT_LOG_TAG "PLUGIN/SRC.CTF.FS/FILE" #include "logging/comp-logging.h" -#include -#include -#include -#include -#include #include "file.hpp" +#include "fs.hpp" -BT_HIDDEN void ctf_fs_file_destroy(struct ctf_fs_file *file) { - if (!file) { - return; - } - - if (file->fp) { - BT_COMP_LOGD("Closing file \"%s\" (%p)", - file->path ? file->path->str : NULL, file->fp); - - if (fclose(file->fp)) { - BT_COMP_LOGE("Cannot close file \"%s\": %s", - file->path ? file->path->str : "NULL", - strerror(errno)); - } - } - - if (file->path) { - g_string_free(file->path, TRUE); - } - - g_free(file); -} + if (!file) { + return; + } -BT_HIDDEN -struct ctf_fs_file *ctf_fs_file_create(bt_logging_level log_level, - bt_self_component *self_comp) -{ - struct ctf_fs_file *file = g_new0(struct ctf_fs_file, 1); + if (file->fp) { + BT_COMP_LOGD("Closing file \"%s\" (%p)", file->path ? file->path->str : NULL, file->fp); - if (!file) { - goto error; - } + if (fclose(file->fp)) { + BT_COMP_LOGE("Cannot close file \"%s\": %s", file->path ? file->path->str : "NULL", + strerror(errno)); + } + } - file->log_level = log_level; - file->self_comp = self_comp; - file->path = g_string_new(NULL); - if (!file->path) { - goto error; - } + if (file->path) { + g_string_free(file->path, TRUE); + } - goto end; + delete file; +} + +struct ctf_fs_file *ctf_fs_file_create(bt_logging_level log_level, bt_self_component *self_comp) +{ + ctf_fs_file *file = new ctf_fs_file; + file->log_level = log_level; + file->self_comp = self_comp; + file->path = g_string_new(NULL); + if (!file->path) { + goto error; + } + + goto end; error: - ctf_fs_file_destroy(file); - file = NULL; + ctf_fs_file_destroy(file); + file = NULL; end: - return file; + return file; } -BT_HIDDEN int ctf_fs_file_open(struct ctf_fs_file *file, const char *mode) { - int ret = 0; - struct stat stat; - - BT_COMP_LOGI("Opening file \"%s\" with mode \"%s\"", file->path->str, mode); - file->fp = fopen(file->path->str, mode); - if (!file->fp) { - BT_COMP_LOGE_APPEND_CAUSE_ERRNO(file->self_comp, - "Cannot open file", ": path=%s, mode=%s", - file->path->str, mode); - goto error; - } - - BT_COMP_LOGI("Opened file: %p", file->fp); - - if (fstat(fileno(file->fp), &stat)) { - BT_COMP_LOGE_APPEND_CAUSE_ERRNO(file->self_comp, - "Cannot get file information", - ": path=%s", file->path->str); - goto error; - } - - file->size = stat.st_size; - BT_COMP_LOGI("File is %jd bytes", (intmax_t) file->size); - goto end; + int ret = 0; + struct stat stat; + + BT_COMP_LOGI("Opening file \"%s\" with mode \"%s\"", file->path->str, mode); + file->fp = fopen(file->path->str, mode); + if (!file->fp) { + BT_COMP_LOGE_APPEND_CAUSE_ERRNO(file->self_comp, "Cannot open file", ": path=%s, mode=%s", + file->path->str, mode); + goto error; + } + + BT_COMP_LOGI("Opened file: %p", file->fp); + + if (fstat(fileno(file->fp), &stat)) { + BT_COMP_LOGE_APPEND_CAUSE_ERRNO(file->self_comp, "Cannot get file information", ": path=%s", + file->path->str); + goto error; + } + + file->size = stat.st_size; + BT_COMP_LOGI("File is %jd bytes", (intmax_t) file->size); + goto end; error: - ret = -1; + ret = -1; - if (file->fp) { - if (fclose(file->fp)) { - BT_COMP_LOGE("Cannot close file \"%s\": %s", file->path->str, - strerror(errno)); - } - } + if (file->fp) { + if (fclose(file->fp)) { + BT_COMP_LOGE("Cannot close file \"%s\": %s", file->path->str, strerror(errno)); + } + } end: - return ret; + return ret; }