Fix: liblttng-ctl: non-packed structure used for tracker serialization
[lttng-tools.git] / src / bin / lttng-relayd / utils.cpp
1 /*
2 * Copyright (C) 2013 Julien Desfossez <jdesfossez@efficios.com>
3 * Copyright (C) 2013 David Goulet <dgoulet@efficios.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-only
6 *
7 */
8
9 #define _LGPL_SOURCE
10 #include <stdio.h>
11 #include <stdlib.h>
12 #include <string.h>
13
14 #include <common/common.hpp>
15 #include <common/defaults.hpp>
16 #include <common/utils.hpp>
17 #include <common/path.hpp>
18
19 #include "lttng-relayd.hpp"
20 #include "utils.hpp"
21
22 static char *create_output_path_auto(const char *path_name)
23 {
24 int ret;
25 char *traces_path = NULL;
26 const char *default_path;
27
28 default_path = utils_get_home_dir();
29 if (default_path == NULL) {
30 ERR("Home path not found.\n \
31 Please specify an output path using -o, --output PATH");
32 goto exit;
33 }
34 ret = asprintf(&traces_path, "%s/" DEFAULT_TRACE_DIR_NAME
35 "/%s", default_path, path_name);
36 if (ret < 0) {
37 PERROR("asprintf trace dir name");
38 goto exit;
39 }
40 exit:
41 return traces_path;
42 }
43
44 static char *create_output_path_noauto(const char *path_name)
45 {
46 int ret;
47 char *traces_path = NULL;
48 char *full_path;
49
50 full_path = utils_expand_path(opt_output_path);
51 if (!full_path) {
52 goto exit;
53 }
54
55 ret = asprintf(&traces_path, "%s/%s", full_path, path_name);
56 if (ret < 0) {
57 PERROR("asprintf trace dir name");
58 goto exit;
59 }
60 exit:
61 free(full_path);
62 return traces_path;
63 }
64
65 /*
66 * Create the output trace directory path name string.
67 *
68 * Return the allocated string containing the path name or else NULL.
69 */
70 char *create_output_path(const char *path_name)
71 {
72 LTTNG_ASSERT(path_name);
73
74 if (opt_output_path == NULL) {
75 return create_output_path_auto(path_name);
76 } else {
77 return create_output_path_noauto(path_name);
78 }
79 }
This page took 0.030525 seconds and 4 git commands to generate.