/*
- * Copyright 2019 Philippe Proulx <pproulx@efficios.com>
- *
- * 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:
+ * SPDX-License-Identifier: MIT
*
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
+ * Copyright 2019 Philippe Proulx <pproulx@efficios.com>
*/
#define BT_COMP_LOG_SELF_COMP (trace->fs_sink->self_comp)
return unique_path;
}
+/*
+ * Disable `deprecated-declarations` warnings for
+ * lttng_validate_datetime() because we're using `GTimeVal` and
+ * g_time_val_from_iso8601() which are deprecated since GLib 2.56
+ * (Babeltrace supports older versions too).
+ */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+
/*
* Validate that the input string `datetime` is an ISO8601-compliant string (the
* format used by LTTng in the metadata).
return ret;
}
+#pragma GCC diagnostic pop
+
static
int append_lttng_trace_path_ust_uid(const struct fs_sink_trace *trace,
GString *path, const bt_trace *tc)
GString *make_trace_path_rel(const struct fs_sink_trace *trace)
{
GString *path = NULL;
+ const char *trace_name;
- if (trace->fs_sink->assume_single_trace) {
- /* Use output directory directly */
- path = g_string_new("");
- goto end;
- }
+ BT_ASSERT(!trace->fs_sink->assume_single_trace);
/* First, try to build a path using environment fields written by LTTng. */
path = make_lttng_trace_path_rel(trace);
}
/* Otherwise, use the trace name, if available. */
- const char *trace_name = bt_trace_get_name(trace->ir_trace);
+ trace_name = bt_trace_get_name(trace->ir_trace);
if (trace_name) {
path = g_string_new(trace_name);
goto end;
GString *full_path = NULL;
GString *unique_full_path = NULL;
- rel_path = make_trace_path_rel(trace);
- if (!rel_path) {
- goto end;
- }
+ if (trace->fs_sink->assume_single_trace) {
+ /* Use output directory directly */
+ unique_full_path = g_string_new(output_base_directory);
+ if (!unique_full_path) {
+ goto end;
+ }
+ } else {
+ rel_path = make_trace_path_rel(trace);
+ if (!rel_path) {
+ goto end;
+ }
- rel_path_san = sanitize_trace_path(rel_path->str);
- if (!rel_path_san) {
- goto end;
- }
+ rel_path_san = sanitize_trace_path(rel_path->str);
+ if (!rel_path_san) {
+ goto end;
+ }
- full_path = g_string_new(NULL);
- if (!full_path) {
- goto end;
- }
+ full_path = g_string_new(NULL);
+ if (!full_path) {
+ goto end;
+ }
- g_string_printf(full_path, "%s" G_DIR_SEPARATOR_S "%s",
- output_base_directory, rel_path_san->str);
+ g_string_printf(full_path, "%s" G_DIR_SEPARATOR_S "%s",
+ output_base_directory, rel_path_san->str);
- unique_full_path = make_unique_trace_path(full_path->str);
+ unique_full_path = make_unique_trace_path(full_path->str);
+ }
end:
if (rel_path) {
BT_COMP_LOGF_ERRNO("In trace destruction listener: "
"cannot open metadata file for writing",
": path=\"%s\"", trace->metadata_path->str);
- abort();
+ bt_common_abort();
}
len = fwrite(tsdl->str, sizeof(*tsdl->str), tsdl->len, fh);
BT_COMP_LOGF_ERRNO("In trace destruction listener: "
"cannot write metadata file",
": path=\"%s\"", trace->metadata_path->str);
- abort();
+ bt_common_abort();
}
if (!trace->fs_sink->quiet) {