/*
- * Copyright 2016-2017 - Philippe Proulx <pproulx@efficios.com>
+ * SPDX-License-Identifier: MIT
*
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
+ * Copyright 2016-2017 Philippe Proulx <pproulx@efficios.com>
*/
#define BT_COMP_LOG_SELF_COMP self_comp
+#define BT_COMP_LOG_SELF_COMP_CLASS self_comp_class
#define BT_LOG_OUTPUT_LEVEL log_level
#define BT_LOG_TAG "PLUGIN/CTF/META/DECODER-DECODE-PACKET"
#include "logging/comp-logging.h"
+#include "decoder-packetized-file-stream-to-buf.h"
+
#include <stdio.h>
#include <stdbool.h>
#include <stdint.h>
static
int decode_packet(FILE *in_fp, FILE *out_fp,
int byte_order, bool *is_uuid_set, uint8_t *uuid,
- bt_logging_level log_level, bt_self_component *self_comp)
+ bt_logging_level log_level, bt_self_component *self_comp,
+ bt_self_component_class *self_comp_class)
{
struct packet_header header;
size_t readlen, writelen, toread;
const long offset = ftell(in_fp);
if (offset < 0) {
- BT_COMP_LOGE_ERRNO("Failed to get current metadata file position",
+ BT_COMP_LOGE_APPEND_CAUSE_ERRNO(BT_COMP_LOG_SELF_COMP,
+ "Failed to get current metadata file position",
".");
goto error;
}
goto end;
}
if (readlen < 1) {
- BT_COMP_LOGE("Cannot decode metadata packet: offset=%ld", offset);
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot decode metadata packet: offset=%ld", offset);
goto error;
}
}
if (header.compression_scheme) {
- BT_COMP_LOGE("Metadata packet compression is not supported as of this version: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Metadata packet compression is not supported as of this version: "
"compression-scheme=%u, offset=%ld",
(unsigned int) header.compression_scheme, offset);
goto error;
}
if (header.encryption_scheme) {
- BT_COMP_LOGE("Metadata packet encryption is not supported as of this version: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Metadata packet encryption is not supported as of this version: "
"encryption-scheme=%u, offset=%ld",
(unsigned int) header.encryption_scheme, offset);
goto error;
}
if (header.checksum || header.checksum_scheme) {
- BT_COMP_LOGE("Metadata packet checksum verification is not supported as of this version: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Metadata packet checksum verification is not supported as of this version: "
"checksum-scheme=%u, checksum=%x, offset=%ld",
(unsigned int) header.checksum_scheme, header.checksum,
offset);
if (!ctf_metadata_decoder_is_packet_version_valid(header.major,
header.minor)) {
- BT_COMP_LOGE("Invalid metadata packet version: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Invalid metadata packet version: "
"version=%u.%u, offset=%ld",
header.major, header.minor, offset);
goto error;
bt_uuid_copy(uuid, header.uuid);
*is_uuid_set = true;
} else if (bt_uuid_compare(header.uuid, uuid)) {
- BT_COMP_LOGE("Metadata UUID mismatch between packets of the same stream: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Metadata UUID mismatch between packets of the same stream: "
"packet-uuid=\"" BT_UUID_FMT "\", "
"expected-uuid=\"" BT_UUID_FMT "\", "
"offset=%ld",
}
if ((header.content_size / CHAR_BIT) < sizeof(header)) {
- BT_COMP_LOGE("Bad metadata packet content size: content-size=%u, "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Bad metadata packet content size: content-size=%u, "
"offset=%ld", header.content_size, offset);
goto error;
}
loop_read = MIN(sizeof(buf) - 1, toread);
readlen = fread(buf, sizeof(uint8_t), loop_read, in_fp);
if (ferror(in_fp)) {
- BT_COMP_LOGE("Cannot read metadata packet buffer: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot read metadata packet buffer: "
"offset=%ld, read-size=%zu",
ftell(in_fp), loop_read);
goto error;
}
if (readlen > loop_read) {
- BT_COMP_LOGE("fread returned more byte than expected: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("fread returned more byte than expected: "
"read-size-asked=%zu, read-size-returned=%zu",
loop_read, readlen);
goto error;
writelen = fwrite(buf, sizeof(uint8_t), readlen, out_fp);
if (writelen < readlen || ferror(out_fp)) {
- BT_COMP_LOGE("Cannot write decoded metadata text to buffer: "
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot write decoded metadata text to buffer: "
"read-offset=%ld, write-size=%zu",
ftell(in_fp), readlen);
goto error;
int ctf_metadata_decoder_packetized_file_stream_to_buf(FILE *fp,
char **buf, int byte_order, bool *is_uuid_set,
uint8_t *uuid, bt_logging_level log_level,
- bt_self_component *self_comp)
+ bt_self_component *self_comp,
+ bt_self_component_class *self_comp_class)
{
FILE *out_fp;
size_t size;
out_fp = bt_open_memstream(buf, &size);
if (!out_fp) {
- BT_COMP_LOGE("Cannot open memory stream: %s.",
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot open memory stream: %s.",
strerror(errno));
goto error;
}
}
tret = decode_packet(fp, out_fp, byte_order, is_uuid_set,
- uuid, log_level, self_comp);
+ uuid, log_level, self_comp, self_comp_class);
if (tret) {
- BT_COMP_LOGE("Cannot decode packet: index=%zu",
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE("Cannot decode packet: index=%zu",
packet_index);
goto error;
}
/* Make sure the whole string ends with a null character */
tret = fputc('\0', out_fp);
if (tret == EOF) {
- BT_COMP_LOGE_STR(
+ _BT_COMP_OR_COMP_CLASS_LOGE_APPEND_CAUSE(
"Cannot append '\\0' to the decoded metadata buffer.");
goto error;
}
*/
out_fp = NULL;
if (ret < 0) {
- BT_COMP_LOGE_ERRNO("Cannot close memory stream", ".");
+ BT_COMP_LOGE_APPEND_CAUSE_ERRNO(BT_COMP_LOG_SELF_COMP, "Cannot close memory stream", ".");
goto error;
}