From c926bb361b300c0c4ed6f04b8990fb0a708bdcfb Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Mon, 11 Dec 2023 14:00:13 -0500 Subject: [PATCH] lttng: enable-event: wrap the use of poptContext into a unique_ptr MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémie Galarneau Change-Id: Idf6cdb405cc4b316100b832dfe1b850d77ee161b --- src/bin/lttng/commands/enable_events.cpp | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/bin/lttng/commands/enable_events.cpp b/src/bin/lttng/commands/enable_events.cpp index e6f6274fb..2a74a15b4 100644 --- a/src/bin/lttng/commands/enable_events.cpp +++ b/src/bin/lttng/commands/enable_events.cpp @@ -1220,6 +1220,11 @@ error: return ret; } +void _poptContextFree_deleter_func(poptContext ctx) +{ + poptFreeContext(ctx); +} + } /* namespace */ int validate_exclusion_list(const char *event_name, @@ -1274,20 +1279,20 @@ end: int cmd_enable_events(int argc, const char **argv) { int opt, ret = CMD_SUCCESS, command_ret = CMD_SUCCESS, success = 1; - static poptContext pc; char *session_name = nullptr; char *event_list = nullptr; const char *arg_event_list = nullptr; const char *leftover = nullptr; int event_type = -1; - pc = poptGetContext(nullptr, argc, argv, long_options, 0); - poptReadDefaultConfig(pc, 0); + auto pc = lttng::make_unique_wrapper( + poptGetContext(nullptr, argc, argv, long_options, 0)); + poptReadDefaultConfig(pc.get(), 0); /* Default event type */ opt_event_type = LTTNG_EVENT_ALL; - while ((opt = poptGetNextOpt(pc)) != -1) { + while ((opt = poptGetNextOpt(pc.get())) != -1) { switch (opt) { case OPT_HELP: SHOW_HELP(); @@ -1312,11 +1317,11 @@ int cmd_enable_events(int argc, const char **argv) break; case OPT_LOGLEVEL: opt_loglevel_type = LTTNG_EVENT_LOGLEVEL_RANGE; - opt_loglevel = poptGetOptArg(pc); + opt_loglevel = poptGetOptArg(pc.get()); break; case OPT_LOGLEVEL_ONLY: opt_loglevel_type = LTTNG_EVENT_LOGLEVEL_SINGLE; - opt_loglevel = poptGetOptArg(pc); + opt_loglevel = poptGetOptArg(pc.get()); break; case OPT_LIST_OPTIONS: list_cmd_options(stdout, long_options); @@ -1373,7 +1378,7 @@ int cmd_enable_events(int argc, const char **argv) } } - arg_event_list = poptGetArg(pc); + arg_event_list = poptGetArg(pc.get()); if (arg_event_list == nullptr && opt_enable_all == 0) { ERR("Missing event name(s)."); ret = CMD_ERROR; @@ -1389,7 +1394,7 @@ int cmd_enable_events(int argc, const char **argv) } } - leftover = poptGetArg(pc); + leftover = poptGetArg(pc.get()); if (leftover) { ERR("Unknown argument: %s", leftover); ret = CMD_ERROR; @@ -1447,7 +1452,5 @@ end: /* Overwrite ret if an error occurred in enable_events */ ret = command_ret ? command_ret : ret; - - poptFreeContext(pc); return ret; } -- 2.34.1