From 2e64b27aeb5f91dac3c4b32ccdbfef587b260b83 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Mon, 6 Jun 2022 16:04:53 +0200 Subject: [PATCH] journalctl: Use STATIC_DESTRUCTOR_REGISTER() --- src/journal/journalctl.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 904881adc2..6ee49a6913 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -65,6 +65,7 @@ #include "rlimit-util.h" #include "set.h" #include "sigbus.h" +#include "static-destruct.h" #include "stdio-util.h" #include "string-table.h" #include "strv.h" @@ -138,6 +139,19 @@ static pcre2_code *arg_compiled_pattern = NULL; static int arg_case_sensitive = -1; /* -1 means be smart */ #endif +STATIC_DESTRUCTOR_REGISTER(arg_file, strv_freep); +STATIC_DESTRUCTOR_REGISTER(arg_facilities, set_freep); +STATIC_DESTRUCTOR_REGISTER(arg_verify_key, freep); +STATIC_DESTRUCTOR_REGISTER(arg_syslog_identifier, strv_freep); +STATIC_DESTRUCTOR_REGISTER(arg_system_units, strv_freep); +STATIC_DESTRUCTOR_REGISTER(arg_user_units, strv_freep); +STATIC_DESTRUCTOR_REGISTER(arg_root, freep); +STATIC_DESTRUCTOR_REGISTER(arg_image, freep); +STATIC_DESTRUCTOR_REGISTER(arg_output_fields, strv_freep); +#if HAVE_PCRE2 +STATIC_DESTRUCTOR_REGISTER(arg_compiled_pattern, sym_pcre2_code_freep); +#endif + static enum { ACTION_SHOW, ACTION_NEW_ID128, @@ -2814,28 +2828,13 @@ int main(int argc, char *argv[]) { finish: pager_close(); - strv_free(arg_file); - - set_free(arg_facilities); - strv_free(arg_syslog_identifier); - strv_free(arg_system_units); - strv_free(arg_user_units); - strv_free(arg_output_fields); - - free(arg_root); - free(arg_verify_key); - #if HAVE_PCRE2 - if (arg_compiled_pattern) { - sym_pcre2_code_free(arg_compiled_pattern); - + if (arg_compiled_pattern && r == 0 && n_shown == 0) /* --grep was used, no error was thrown, but the pattern didn't * match anything. Let's mimic grep's behavior here and return * a non-zero exit code, so journalctl --grep can be used * in scripts and such */ - if (r == 0 && n_shown == 0) - r = -ENOENT; - } + r = -ENOENT; #endif return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;