X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=cli%2Fbabeltrace-cfg-cli-args.c;h=9d2b684edaa4e11a13d9a74aa613650f84de2ac0;hb=f6ccaed94e575af57fe6bf38154771bee4871a2a;hp=b48c696741aaddba4f77665b3641c87518bd6848;hpb=9270b61e78604bf36ccf3c7f12eb045a8fe6832e;p=deliverable%2Fbabeltrace.git diff --git a/cli/babeltrace-cfg-cli-args.c b/cli/babeltrace-cfg-cli-args.c index b48c69674..9d2b684ed 100644 --- a/cli/babeltrace-cfg-cli-args.c +++ b/cli/babeltrace-cfg-cli-args.c @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #include @@ -41,6 +41,7 @@ #include "babeltrace-cfg.h" #include "babeltrace-cfg-cli-args.h" #include "babeltrace-cfg-cli-args-connect.h" +#include "version.h" /* * Error printf() macro which prepends "Error: " the first time it's @@ -593,8 +594,8 @@ end: * component class name. * * On success, both *plugin and *component are not NULL. *plugin - * and *component are owned by the caller. On success, *name can be NULL - * if no component name was found, and *comp_cls_type is set. + * and *comp_cls are owned by the caller. On success, *name can be NULL + * if no component class name was found, and *comp_cls_type is set. */ static void plugin_comp_cls_names(const char *arg, char **name, char **plugin, @@ -607,10 +608,10 @@ void plugin_comp_cls_names(const char *arg, char **name, char **plugin, GString *gs_comp_cls = NULL; size_t end_pos; - assert(arg); - assert(plugin); - assert(comp_cls); - assert(comp_cls_type); + BT_ASSERT(arg); + BT_ASSERT(plugin); + BT_ASSERT(comp_cls); + BT_ASSERT(comp_cls_type); if (!bt_common_string_is_printable(arg)) { printf_err("Argument contains a non-printable character\n"); @@ -656,7 +657,7 @@ void plugin_comp_cls_names(const char *arg, char **name, char **plugin, /* Parse the plugin name */ gs_plugin = bt_common_string_until(at, ".:\\", ".", &end_pos); if (!gs_plugin || gs_plugin->len == 0 || at[end_pos] == '\0') { - printf_err("Missing plugin name\n"); + printf_err("Missing plugin or component class name\n"); goto error; } @@ -729,7 +730,11 @@ end: static void print_version(void) { - puts("Babeltrace " VERSION); + if (GIT_VERSION[0] == '\0') { + puts("Babeltrace " VERSION); + } else { + puts("Babeltrace " VERSION " - " GIT_VERSION); + } } /* @@ -909,6 +914,9 @@ void bt_config_destroy(struct bt_object *obj) if (cfg->cmd_data.print_ctf_metadata.path) { g_string_free(cfg->cmd_data.print_ctf_metadata.path, TRUE); + g_string_free( + cfg->cmd_data.print_ctf_metadata.output_path, + TRUE); } break; case BT_CONFIG_COMMAND_PRINT_LTTNG_LIVE_SESSIONS: @@ -916,6 +924,9 @@ void bt_config_destroy(struct bt_object *obj) g_string_free( cfg->cmd_data.print_lttng_live_sessions.url, TRUE); + g_string_free( + cfg->cmd_data.print_lttng_live_sessions.output_path, + TRUE); } break; default: @@ -1180,9 +1191,9 @@ end: static void append_param_arg(GString *params_arg, const char *key, const char *value) { - assert(params_arg); - assert(key); - assert(value); + BT_ASSERT(params_arg); + BT_ASSERT(key); + BT_ASSERT(value); if (params_arg->len != 0) { g_string_append_c(params_arg, ','); @@ -1305,6 +1316,7 @@ enum { OPT_COMPONENT, OPT_CONNECT, OPT_DEBUG, + OPT_DEBUG_INFO, OPT_DEBUG_INFO_DIR, OPT_DEBUG_INFO_FULL_PATH, OPT_DEBUG_INFO_TARGET_PREFIX, @@ -1316,7 +1328,6 @@ enum { OPT_LIST, OPT_NAME, OPT_NAMES, - OPT_NO_DEBUG_INFO, OPT_NO_DELTA, OPT_OMIT_HOME_PLUGIN_PATH, OPT_OMIT_SYSTEM_PLUGIN_PATH, @@ -1659,6 +1670,12 @@ struct bt_config *bt_config_print_ctf_metadata_create( goto error; } + cfg->cmd_data.print_ctf_metadata.output_path = g_string_new(NULL); + if (!cfg->cmd_data.print_ctf_metadata.output_path) { + print_err_oom(); + goto error; + } + goto end; error: @@ -1687,6 +1704,13 @@ struct bt_config *bt_config_print_lttng_live_sessions_create( goto error; } + cfg->cmd_data.print_lttng_live_sessions.output_path = + g_string_new(NULL); + if (!cfg->cmd_data.print_lttng_live_sessions.output_path) { + print_err_oom(); + goto error; + } + goto end; error: @@ -1763,13 +1787,10 @@ static void print_help_usage(FILE *fp) { fprintf(fp, "Usage: babeltrace [GENERAL OPTIONS] help [OPTIONS] PLUGIN\n"); - fprintf(fp, " babeltrace [GENERAL OPTIONS] help [OPTIONS] --component=TYPE.PLUGIN.CLS\n"); + fprintf(fp, " babeltrace [GENERAL OPTIONS] help [OPTIONS] TYPE.PLUGIN.CLS\n"); fprintf(fp, "\n"); fprintf(fp, "Options:\n"); fprintf(fp, "\n"); - fprintf(fp, " -c, --component=TYPE.PLUGIN.CLS Get help for the component class CLS of\n"); - fprintf(fp, " type TYPE (`source`, `filter`, or `sink`)\n"); - fprintf(fp, " found in the plugin PLUGIN\n"); fprintf(fp, " --omit-home-plugin-path Omit home plugins from plugin search path\n"); fprintf(fp, " (~/.local/lib/babeltrace/plugins)\n"); fprintf(fp, " --omit-system-plugin-path Omit system plugins from plugin search path\n"); @@ -1785,7 +1806,6 @@ void print_help_usage(FILE *fp) static struct poptOption help_long_options[] = { /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */ - { "component", 'c', POPT_ARG_STRING, NULL, OPT_COMPONENT, NULL, NULL }, { "help", 'h', POPT_ARG_NONE, NULL, OPT_HELP, NULL, NULL }, { "omit-home-plugin-path", '\0', POPT_ARG_NONE, NULL, OPT_OMIT_HOME_PLUGIN_PATH, NULL, NULL }, { "omit-system-plugin-path", '\0', POPT_ARG_NONE, NULL, OPT_OMIT_SYSTEM_PLUGIN_PATH, NULL, NULL }, @@ -1812,7 +1832,6 @@ struct bt_config *bt_config_help_from_args(int argc, const char *argv[], struct bt_config *cfg = NULL; const char *leftover; char *plugin_name = NULL, *comp_cls_name = NULL; - char *plug_comp_cls_names = NULL; *retcode = 0; cfg = bt_config_help_create(initial_plugin_paths); @@ -1853,19 +1872,6 @@ struct bt_config *bt_config_help_from_args(int argc, const char *argv[], case OPT_OMIT_HOME_PLUGIN_PATH: cfg->omit_home_plugin_path = true; break; - case OPT_COMPONENT: - if (plug_comp_cls_names) { - printf_err("Cannot specify more than one plugin and component class:\n %s\n", - arg); - goto error; - } - - plug_comp_cls_names = strdup(arg); - if (!plug_comp_cls_names) { - print_err_oom(); - goto error; - } - break; case OPT_HELP: print_help_usage(stdout); *retcode = -1; @@ -1890,35 +1896,30 @@ struct bt_config *bt_config_help_from_args(int argc, const char *argv[], leftover = poptGetArg(pc); if (leftover) { - if (plug_comp_cls_names) { - printf_err("Cannot specify plugin name and --component component class:\n %s\n", - leftover); - goto error; - } - - g_string_assign(cfg->cmd_data.help.cfg_component->plugin_name, - leftover); - } else { - if (!plug_comp_cls_names) { - print_help_usage(stdout); - *retcode = -1; - BT_PUT(cfg); - goto end; - } - - plugin_comp_cls_names(plug_comp_cls_names, NULL, + plugin_comp_cls_names(leftover, NULL, &plugin_name, &comp_cls_name, &cfg->cmd_data.help.cfg_component->type); if (plugin_name && comp_cls_name) { - g_string_assign(cfg->cmd_data.help.cfg_component->plugin_name, + /* Component class help */ + g_string_assign( + cfg->cmd_data.help.cfg_component->plugin_name, plugin_name); - g_string_assign(cfg->cmd_data.help.cfg_component->comp_cls_name, + g_string_assign( + cfg->cmd_data.help.cfg_component->comp_cls_name, comp_cls_name); } else { - printf_err("Invalid --component option's argument:\n %s\n", - plug_comp_cls_names); - goto error; + /* Fall back to plugin help */ + cfg->cmd_data.help.cfg_component->type = + BT_COMPONENT_CLASS_TYPE_UNKNOWN; + g_string_assign( + cfg->cmd_data.help.cfg_component->plugin_name, + leftover); } + } else { + print_help_usage(stdout); + *retcode = -1; + BT_PUT(cfg); + goto end; } if (append_home_and_system_plugin_paths_cfg(cfg)) { @@ -1932,7 +1933,6 @@ error: BT_PUT(cfg); end: - free(plug_comp_cls_names); g_free(plugin_name); g_free(comp_cls_name); @@ -1950,13 +1950,10 @@ end: static void print_query_usage(FILE *fp) { - fprintf(fp, "Usage: babeltrace [GEN OPTS] query [OPTS] OBJECT --component=TYPE.PLUGIN.CLS\n"); + fprintf(fp, "Usage: babeltrace [GEN OPTS] query [OPTS] TYPE.PLUGIN.CLS OBJECT\n"); fprintf(fp, "\n"); fprintf(fp, "Options:\n"); fprintf(fp, "\n"); - fprintf(fp, " -c, --component=TYPE.PLUGIN.CLS Query the component class CLS of type TYPE\n"); - fprintf(fp, " (`source`, `filter`, or `sink`) found in\n"); - fprintf(fp, " the plugin PLUGIN\n"); fprintf(fp, " --omit-home-plugin-path Omit home plugins from plugin search path\n"); fprintf(fp, " (~/.local/lib/babeltrace/plugins)\n"); fprintf(fp, " --omit-system-plugin-path Omit system plugins from plugin search path\n"); @@ -1972,7 +1969,6 @@ void print_query_usage(FILE *fp) static struct poptOption query_long_options[] = { /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */ - { "component", 'c', POPT_ARG_STRING, NULL, OPT_COMPONENT, NULL, NULL }, { "help", 'h', POPT_ARG_NONE, NULL, OPT_HELP, NULL, NULL }, { "omit-home-plugin-path", '\0', POPT_ARG_NONE, NULL, OPT_OMIT_HOME_PLUGIN_PATH, NULL, NULL }, { "omit-system-plugin-path", '\0', POPT_ARG_NONE, NULL, OPT_OMIT_SYSTEM_PLUGIN_PATH, NULL, NULL }, @@ -2040,28 +2036,9 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[], case OPT_OMIT_HOME_PLUGIN_PATH: cfg->omit_home_plugin_path = true; break; - case OPT_COMPONENT: - if (cfg->cmd_data.query.cfg_component) { - printf_err("Cannot specify more than one plugin and component class:\n %s\n", - arg); - goto error; - } - - cfg->cmd_data.query.cfg_component = - bt_config_component_from_arg(arg); - if (!cfg->cmd_data.query.cfg_component) { - printf_err("Invalid format for --component option's argument:\n %s\n", - arg); - goto error; - } - - /* Default parameters: null */ - bt_put(cfg->cmd_data.query.cfg_component->params); - cfg->cmd_data.query.cfg_component->params = - bt_value_null; - break; case OPT_PARAMS: { + bt_put(params); params = bt_value_from_arg(arg); if (!params) { printf_err("Invalid format for --params option's argument:\n %s\n", @@ -2085,14 +2062,6 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[], arg = NULL; } - if (!cfg->cmd_data.query.cfg_component) { - printf_err("No target component class specified with --component option\n"); - goto error; - } - - assert(params); - BT_MOVE(cfg->cmd_data.query.cfg_component->params, params); - /* Check for option parsing error */ if (opt < -1) { printf_err("While parsing command-line options, at option %s: %s\n", @@ -2101,9 +2070,28 @@ struct bt_config *bt_config_query_from_args(int argc, const char *argv[], } /* - * We need exactly one leftover argument which is the - * mandatory object. + * We need exactly two leftover arguments which are the + * mandatory component class specification and query object. */ + leftover = poptGetArg(pc); + if (leftover) { + cfg->cmd_data.query.cfg_component = + bt_config_component_from_arg(leftover); + if (!cfg->cmd_data.query.cfg_component) { + printf_err("Invalid format for component class specification:\n %s\n", + leftover); + goto error; + } + + BT_ASSERT(params); + BT_MOVE(cfg->cmd_data.query.cfg_component->params, params); + } else { + print_query_usage(stdout); + *retcode = -1; + BT_PUT(cfg); + goto end; + } + leftover = poptGetArg(pc); if (leftover) { if (strlen(leftover) == 0) { @@ -2140,7 +2128,7 @@ end: poptFreeContext(pc); } - BT_PUT(params); + bt_put(params); free(arg); return cfg; } @@ -2391,7 +2379,7 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[], struct bt_value *connection_args = NULL; GString *cur_param_key = NULL; char error_buf[256] = { 0 }; - long long retry_duration = -1; + long retry_duration = -1; struct poptOption run_long_options[] = { { "base-params", 'b', POPT_ARG_STRING, NULL, OPT_BASE_PARAMS, NULL, NULL }, { "component", 'c', POPT_ARG_STRING, NULL, OPT_COMPONENT, NULL, NULL }, @@ -2404,7 +2392,7 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[], { "params", 'p', POPT_ARG_STRING, NULL, OPT_PARAMS, NULL, NULL }, { "plugin-path", '\0', POPT_ARG_STRING, NULL, OPT_PLUGIN_PATH, NULL, NULL }, { "reset-base-params", 'r', POPT_ARG_NONE, NULL, OPT_RESET_BASE_PARAMS, NULL, NULL }, - { "retry-duration", '\0', POPT_ARG_LONGLONG, &retry_duration, OPT_RETRY_DURATION, NULL, NULL }, + { "retry-duration", '\0', POPT_ARG_LONG, &retry_duration, OPT_RETRY_DURATION, NULL, NULL }, { "value", '\0', POPT_ARG_STRING, NULL, OPT_VALUE, NULL, NULL }, { NULL, 0, '\0', NULL, 0, NULL, NULL }, }; @@ -2514,7 +2502,7 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[], abort(); } - assert(cur_base_params); + BT_ASSERT(cur_base_params); bt_put(cur_cfg_comp->params); cur_cfg_comp->params = bt_value_copy(cur_base_params); if (!cur_cfg_comp->params) { @@ -2621,7 +2609,7 @@ struct bt_config *bt_config_run_from_args(int argc, const char *argv[], break; case OPT_RETRY_DURATION: if (retry_duration < 0) { - printf_err("--retry-duration option's argument must be positive or 0: %lld\n", + printf_err("--retry-duration option's argument must be positive or 0: %ld\n", retry_duration); goto error; } @@ -2740,10 +2728,10 @@ struct bt_config *bt_config_run_from_args_array(struct bt_value *run_args, struct bt_value *arg_value = bt_value_array_get(run_args, i); const char *arg; - assert(arg_value); + BT_ASSERT(arg_value); ret = bt_value_string_get(arg_value, &arg); - assert(ret == 0); - assert(arg); + BT_ASSERT(ret == 0); + BT_ASSERT(arg); argv[i + 1] = arg; bt_put(arg_value); } @@ -2796,6 +2784,8 @@ void print_convert_usage(FILE *fp) fprintf(fp, " --run-args-0 Print the equivalent arguments for the\n"); fprintf(fp, " `run` command to the standard output,\n"); fprintf(fp, " formatted for `xargs -0`, and quit\n"); + fprintf(fp, " --stream-intersection Only process events when all streams\n"); + fprintf(fp, " are active\n"); fprintf(fp, " -u, --url=URL Set the `url` string parameter of the\n"); fprintf(fp, " current component to URL\n"); fprintf(fp, " -h, --help Show this help and quit\n"); @@ -2804,8 +2794,6 @@ void print_convert_usage(FILE *fp) fprintf(fp, "\n"); fprintf(fp, " --clock-offset=SEC Set clock offset to SEC seconds\n"); fprintf(fp, " --clock-offset-ns=NS Set clock offset to NS ns\n"); - fprintf(fp, " --stream-intersection Only process events when all streams\n"); - fprintf(fp, " are active\n"); fprintf(fp, "\n"); fprintf(fp, "Implicit `sink.text.pretty` component options:\n"); fprintf(fp, "\n"); @@ -2849,6 +2837,8 @@ void print_convert_usage(FILE *fp) fprintf(fp, "\n"); fprintf(fp, "Implicit `filter.lttng-utils.debug-info` component options:\n"); fprintf(fp, "\n"); + fprintf(fp, " --debug-info Create an implicit\n"); + fprintf(fp, " `filter.lttng-utils.debug-info` component\n"); fprintf(fp, " --debug-info-dir=DIR Search for debug info in directory DIR\n"); fprintf(fp, " instead of `/usr/lib/debug`\n"); fprintf(fp, " --debug-info-full-path Show full debug info source and\n"); @@ -2857,8 +2847,6 @@ void print_convert_usage(FILE *fp) fprintf(fp, " Use directory DIR as a prefix when\n"); fprintf(fp, " looking up executables during debug\n"); fprintf(fp, " info analysis\n"); - fprintf(fp, " --no-debug-info Do not create an implicit\n"); - fprintf(fp, " `lttng-utils.debug-info` filter component\n"); fprintf(fp, "\n"); fprintf(fp, "Legacy options that still work:\n"); fprintf(fp, "\n"); @@ -2916,7 +2904,7 @@ struct poptOption convert_long_options[] = { { "input-format", 'i', POPT_ARG_STRING, NULL, OPT_INPUT_FORMAT, NULL, NULL }, { "name", '\0', POPT_ARG_STRING, NULL, OPT_NAME, NULL, NULL }, { "names", 'n', POPT_ARG_STRING, NULL, OPT_NAMES, NULL, NULL }, - { "no-debug-info", '\0', POPT_ARG_NONE, NULL, OPT_NO_DEBUG_INFO, NULL, NULL }, + { "debug-info", '\0', POPT_ARG_NONE, NULL, OPT_DEBUG_INFO, NULL, NULL }, { "no-delta", '\0', POPT_ARG_NONE, NULL, OPT_NO_DELTA, NULL, NULL }, { "omit-home-plugin-path", '\0', POPT_ARG_NONE, NULL, OPT_OMIT_HOME_PLUGIN_PATH, NULL, NULL }, { "omit-system-plugin-path", '\0', POPT_ARG_NONE, NULL, OPT_OMIT_SYSTEM_PLUGIN_PATH, NULL, NULL }, @@ -3064,7 +3052,7 @@ int append_run_args_for_implicit_component( goto error; } - assert(bt_value_is_string(elem)); + BT_ASSERT(bt_value_is_string(elem)); if (bt_value_string_get(elem, &arg)) { goto error; } @@ -3089,7 +3077,7 @@ end: static void finalize_implicit_component_args(struct implicit_component_args *args) { - assert(args); + BT_ASSERT(args); if (args->comp_arg) { g_string_free(args->comp_arg, TRUE); @@ -3145,9 +3133,9 @@ static void append_implicit_component_param(struct implicit_component_args *args, const char *key, const char *value) { - assert(args); - assert(key); - assert(value); + BT_ASSERT(args); + BT_ASSERT(key); + BT_ASSERT(value); append_param_arg(args->params_arg, key, value); } @@ -3157,9 +3145,9 @@ int append_implicit_component_extra_param(struct implicit_component_args *args, { int ret = 0; - assert(args); - assert(key); - assert(value); + BT_ASSERT(args); + BT_ASSERT(key); + BT_ASSERT(value); if (bt_value_array_append_string(args->extra_params, "--key")) { print_err_oom(); @@ -3378,9 +3366,9 @@ int convert_auto_connect(struct bt_value *run_args, GList *filter_prev; GList *sink_at = sink_names; - assert(source_names); - assert(filter_names); - assert(sink_names); + BT_ASSERT(source_names); + BT_ASSERT(filter_names); + BT_ASSERT(sink_names); /* Connect all sources to the first filter */ for (source_at = source_names; source_at != NULL; source_at = g_list_next(source_at)) { @@ -3439,7 +3427,7 @@ int split_timerange(const char *arg, char **begin, char **end) GString *g_begin = NULL; GString *g_end = NULL; - assert(arg); + BT_ASSERT(arg); if (*ch == '[') { ch++; @@ -3457,8 +3445,8 @@ int split_timerange(const char *arg, char **begin, char **end) goto error; } - assert(begin); - assert(end); + BT_ASSERT(begin); + BT_ASSERT(end); *begin = g_begin->str; *end = g_end->str; g_string_free(g_begin, FALSE); @@ -3488,7 +3476,7 @@ int g_list_prepend_gstring(GList **list, const char *string) int ret = 0; GString *gs = g_string_new(string); - assert(list); + BT_ASSERT(list); if (!gs) { print_err_oom(); @@ -3588,7 +3576,7 @@ end: static struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], int *retcode, bool force_omit_system_plugin_path, - bool force_omit_home_plugin_path, bool force_no_debug_info, + bool force_omit_home_plugin_path, struct bt_value *initial_plugin_paths, char *log_level) { poptContext pc = NULL; @@ -3663,7 +3651,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], } if (init_implicit_component_args(&implicit_debug_info_args, - "filter.lttng-utils.debug-info", !force_no_debug_info)) { + "filter.lttng-utils.debug-info", false)) { goto error; } @@ -3962,6 +3950,7 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], case OPT_CLOCK_SECONDS: case OPT_COLOR: case OPT_DEBUG: + case OPT_DEBUG_INFO: case OPT_DEBUG_INFO_DIR: case OPT_DEBUG_INFO_FULL_PATH: case OPT_DEBUG_INFO_TARGET_PREFIX: @@ -3969,7 +3958,6 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], case OPT_FIELDS: case OPT_INPUT_FORMAT: case OPT_NAMES: - case OPT_NO_DEBUG_INFO: case OPT_NO_DELTA: case OPT_OUTPUT_FORMAT: case OPT_OUTPUT: @@ -4134,13 +4122,13 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], goto error; } break; - case OPT_NO_DEBUG_INFO: - implicit_debug_info_args.exists = false; + case OPT_DEBUG_INFO: + implicit_debug_info_args.exists = true; break; case OPT_DEBUG_INFO_DIR: implicit_debug_info_args.exists = true; ret = append_implicit_component_extra_param( - &implicit_debug_info_args, "dir", arg); + &implicit_debug_info_args, "debug-info-dir", arg); if (ret) { goto error; } @@ -4355,6 +4343,13 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], gs_leftover = leftovers->data; g_string_assign(cfg->cmd_data.print_ctf_metadata.path, gs_leftover->str); + + if (output) { + g_string_assign( + cfg->cmd_data.print_ctf_metadata.output_path, + output); + } + goto end; } @@ -4442,6 +4437,13 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], g_string_assign(cfg->cmd_data.print_lttng_live_sessions.url, gs_leftover->str); + + if (output) { + g_string_assign( + cfg->cmd_data.print_lttng_live_sessions.output_path, + output); + } + goto end; } @@ -4671,9 +4673,9 @@ struct bt_config *bt_config_convert_from_args(int argc, const char *argv[], GString *quoted = NULL; const char *arg_to_print; - assert(arg_value); + BT_ASSERT(arg_value); ret = bt_value_string_get(arg_value, &arg); - assert(ret == 0); + BT_ASSERT(ret == 0); BT_PUT(arg_value); if (print_run_args) { @@ -4822,7 +4824,7 @@ char log_level_from_arg(const char *arg) struct bt_config *bt_config_cli_args_create(int argc, const char *argv[], int *retcode, bool force_omit_system_plugin_path, - bool force_omit_home_plugin_path, bool force_no_debug_info, + bool force_omit_home_plugin_path, struct bt_value *initial_plugin_paths) { struct bt_config *config = NULL; @@ -4854,6 +4856,8 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[], } if (argc <= 1) { + print_version(); + puts(""); print_gen_usage(stdout); goto end; } @@ -4955,8 +4959,8 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[], goto end; } - assert(command_argv); - assert(command_argc >= 0); + BT_ASSERT(command_argv); + BT_ASSERT(command_argc >= 0); switch (command_type) { case COMMAND_TYPE_RUN: @@ -4967,7 +4971,7 @@ struct bt_config *bt_config_cli_args_create(int argc, const char *argv[], case COMMAND_TYPE_CONVERT: config = bt_config_convert_from_args(command_argc, command_argv, retcode, force_omit_system_plugin_path, - force_omit_home_plugin_path, force_no_debug_info, + force_omit_home_plugin_path, initial_plugin_paths, &log_level); break; case COMMAND_TYPE_LIST_PLUGINS: