From ebfb601945b564142d6471fc10aa611c26dbd8b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 21 Mar 2023 19:49:18 +0100 Subject: [PATCH 1/4] oomd: add inline comments with param names --- src/oom/oomd-manager.c | 5 ++++- src/oom/oomd-util.c | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/oom/oomd-manager.c b/src/oom/oomd-manager.c index 4a43807b87..08a29ec77b 100644 --- a/src/oom/oomd-manager.c +++ b/src/oom/oomd-manager.c @@ -516,7 +516,10 @@ static int monitor_memory_pressure_contexts_handler(sd_event_source *s, uint64_t else clear_candidates = NULL; - r = oomd_kill_by_pgscan_rate(m->monitored_mem_pressure_cgroup_contexts_candidates, t->path, m->dry_run, &selected); + r = oomd_kill_by_pgscan_rate(m->monitored_mem_pressure_cgroup_contexts_candidates, + /* prefix= */ t->path, + /* dry_run= */ m->dry_run, + &selected); if (r == -ENOMEM) return log_oom(); if (r < 0) diff --git a/src/oom/oomd-util.c b/src/oom/oomd-util.c index f97b771c50..49c10b5e16 100644 --- a/src/oom/oomd-util.c +++ b/src/oom/oomd-util.c @@ -321,7 +321,7 @@ int oomd_kill_by_pgscan_rate(Hashmap *h, const char *prefix, bool dry_run, char if (sorted[i]->pgscan == 0 && sorted[i]->current_memory_usage == 0) continue; - r = oomd_cgroup_kill(sorted[i]->path, true, dry_run); + r = oomd_cgroup_kill(sorted[i]->path, /* recurse= */ true, /* dry_run= */ dry_run); if (r == -ENOMEM) return r; /* Treat oom as a hard error */ if (r < 0) { @@ -365,7 +365,7 @@ int oomd_kill_by_swap_usage(Hashmap *h, uint64_t threshold_usage, bool dry_run, if (sorted[i]->swap_usage <= threshold_usage) continue; - r = oomd_cgroup_kill(sorted[i]->path, true, dry_run); + r = oomd_cgroup_kill(sorted[i]->path, /* recurse= */ true, /* dry_run= */ dry_run); if (r == -ENOMEM) return r; /* Treat oom as a hard error */ if (r < 0) { From d82267e567698e23e8fd915f057d5d67c912aa09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 28 Mar 2023 11:26:01 +0200 Subject: [PATCH 2/4] busctl: do not truncate property values when --full --- src/busctl/busctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index e176710dfa..567d09089a 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -1120,7 +1120,7 @@ static int introspect(int argc, char **argv, void *userdata) { sorted[k++] = m; } - if (result_width > 40) + if (result_width > 40 && !arg_full) result_width = 40; typesafe_qsort(sorted, k, member_compare_funcp); From bc1f1eba776434f84f082bf4935b736c94dbb0f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 28 Mar 2023 11:30:07 +0200 Subject: [PATCH 3/4] busctl: use size_t for set size Also reduce the scope of variables. --- src/busctl/busctl.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 567d09089a..0adceb6d1b 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -369,9 +369,6 @@ static int list_bus_names(int argc, char **argv, void *userdata) { } static void print_subtree(const char *prefix, const char *path, char **l) { - const char *vertical, *space; - char **n; - /* We assume the list is sorted. Let's first skip over the * entry we are looking at. */ for (;;) { @@ -384,11 +381,13 @@ static void print_subtree(const char *prefix, const char *path, char **l) { l++; } - vertical = strjoina(prefix, special_glyph(SPECIAL_GLYPH_TREE_VERTICAL)); - space = strjoina(prefix, special_glyph(SPECIAL_GLYPH_TREE_SPACE)); + const char + *vertical = strjoina(prefix, special_glyph(SPECIAL_GLYPH_TREE_VERTICAL)), + *space = strjoina(prefix, special_glyph(SPECIAL_GLYPH_TREE_SPACE)); for (;;) { bool has_more = false; + char **n; if (!*l || !path_startswith(*l, path)) break; @@ -973,8 +972,8 @@ static int introspect(int argc, char **argv, void *userdata) { _cleanup_(sd_bus_message_unrefp) sd_bus_message *reply_xml = NULL; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(member_set_freep) Set *members = NULL; - unsigned name_width, type_width, signature_width, result_width, j, k = 0; - Member *m, **sorted = NULL; + unsigned name_width, type_width, signature_width, result_width; + Member *m; const char *xml; int r; @@ -1098,7 +1097,8 @@ static int introspect(int argc, char **argv, void *userdata) { signature_width = strlen("SIGNATURE"); result_width = strlen("RESULT/VALUE"); - sorted = newa(Member*, set_size(members)); + Member **sorted = newa(Member*, set_size(members)); + size_t k = 0; SET_FOREACH(m, members) { if (argv[3] && !streq(argv[3], m->interface)) @@ -1135,7 +1135,7 @@ static int introspect(int argc, char **argv, void *userdata) { (int) result_width, "RESULT/VALUE", "FLAGS"); - for (j = 0; j < k; j++) { + for (size_t j = 0; j < k; j++) { _cleanup_free_ char *ellipsized = NULL; const char *rv; bool is_interface; From f735076c548abe9878e98c2da044458dd0e684f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 28 Mar 2023 11:55:21 +0200 Subject: [PATCH 4/4] busctl: also assume --full if not writing to terminal If people grep the output, it probably shouldn't be ellipsized. --- src/busctl/busctl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c index 0adceb6d1b..37ba05680f 100644 --- a/src/busctl/busctl.c +++ b/src/busctl/busctl.c @@ -39,7 +39,7 @@ static JsonFormatFlags arg_json_format_flags = JSON_FORMAT_OFF; static PagerFlags arg_pager_flags = 0; static bool arg_legend = true; -static bool arg_full = false; +static int arg_full = -1; static const char *arg_address = NULL; static bool arg_unique = false; static bool arg_acquired = false; @@ -215,7 +215,7 @@ static int list_bus_names(int argc, char **argv, void *userdata) { if (!table) return log_oom(); - if (arg_full) + if (arg_full > 0) table_set_width(table, 0); r = table_set_align_percent(table, table_get_cell(table, 0, COLUMN_PID), 100); @@ -1120,7 +1120,7 @@ static int introspect(int argc, char **argv, void *userdata) { sorted[k++] = m; } - if (result_width > 40 && !arg_full) + if (result_width > 40 && arg_full <= 0) result_width = 40; typesafe_qsort(sorted, k, member_compare_funcp); @@ -2550,6 +2550,9 @@ static int parse_argv(int argc, char *argv[]) { assert_not_reached(); } + if (arg_full < 0) + arg_full = terminal_is_dumb(); + return 1; }