Commit | Line | Data |
---|---|---|
c42c79ea | 1 | /* |
0235b0db | 2 | * SPDX-License-Identifier: MIT |
c42c79ea PP |
3 | * |
4 | * Copyright 2016 Philippe Proulx <pproulx@efficios.com> | |
5 | * | |
0235b0db | 6 | * Babeltrace trace converter - parameter parsing |
c42c79ea PP |
7 | */ |
8 | ||
578e048b | 9 | #include "common/common.h" |
3fadfbc0 | 10 | #include <babeltrace2/babeltrace.h> |
c42c79ea | 11 | #include <glib.h> |
ec2c5e50 | 12 | #include "babeltrace2-cfg.h" |
c42c79ea | 13 | |
c42c79ea | 14 | static |
9009cc24 | 15 | void destroy_gstring(void *data) |
1670bffd PP |
16 | { |
17 | g_string_free(data, TRUE); | |
18 | } | |
19 | ||
c42c79ea | 20 | /* |
4eb7af91 SM |
21 | * Extracts the various paths from the string arg, delimited by ':' on UNIX, |
22 | * ';' on Windows, and appends them to the array value object `plugin_paths`. | |
c42c79ea | 23 | */ |
601b0d3c | 24 | int bt_config_append_plugin_paths( |
b19ff26f | 25 | bt_value *plugin_paths, const char *arg) |
c42c79ea | 26 | { |
601b0d3c | 27 | int ret = 0; |
1670bffd | 28 | GPtrArray *dirs = g_ptr_array_new_with_free_func(destroy_gstring); |
1670bffd | 29 | size_t i; |
c42c79ea | 30 | |
1670bffd | 31 | if (!dirs) { |
601b0d3c | 32 | ret = -1; |
1670bffd PP |
33 | goto end; |
34 | } | |
c42c79ea | 35 | |
1670bffd PP |
36 | ret = bt_common_append_plugin_path_dirs(arg, dirs); |
37 | if (ret) { | |
601b0d3c | 38 | ret = -1; |
1670bffd PP |
39 | goto end; |
40 | } | |
c42c79ea | 41 | |
1670bffd PP |
42 | for (i = 0; i < dirs->len; i++) { |
43 | GString *dir = g_ptr_array_index(dirs, i); | |
c42c79ea | 44 | |
05e21286 | 45 | ret = bt_value_array_append_string_element( |
da91b29a | 46 | plugin_paths, dir->str); |
d24d5663 | 47 | if (ret < 0) { |
601b0d3c PP |
48 | ret = -1; |
49 | goto end; | |
74aa915d | 50 | } |
c42c79ea PP |
51 | } |
52 | ||
1670bffd PP |
53 | end: |
54 | g_ptr_array_free(dirs, TRUE); | |
601b0d3c | 55 | return ret; |
c42c79ea PP |
56 | } |
57 | ||
9009cc24 | 58 | void bt_config_connection_destroy(struct bt_config_connection *connection) |
c42c79ea | 59 | { |
9009cc24 PP |
60 | if (!connection) { |
61 | return; | |
62 | } | |
c42c79ea | 63 | |
9009cc24 PP |
64 | if (connection->upstream_comp_name) { |
65 | g_string_free(connection->upstream_comp_name, TRUE); | |
6e1bc0df | 66 | } |
db0f160a | 67 | |
9009cc24 PP |
68 | if (connection->downstream_comp_name) { |
69 | g_string_free(connection->downstream_comp_name, TRUE); | |
c42c79ea PP |
70 | } |
71 | ||
9009cc24 PP |
72 | if (connection->upstream_port_glob) { |
73 | g_string_free(connection->upstream_port_glob, TRUE); | |
290725f7 PP |
74 | } |
75 | ||
9009cc24 PP |
76 | if (connection->downstream_port_glob) { |
77 | g_string_free(connection->downstream_port_glob, TRUE); | |
290725f7 PP |
78 | } |
79 | ||
9009cc24 PP |
80 | if (connection->arg) { |
81 | g_string_free(connection->arg, TRUE); | |
290725f7 PP |
82 | } |
83 | ||
9009cc24 | 84 | g_free(connection); |
c42c79ea | 85 | } |