From: Daan De Meyer Date: Wed, 27 Oct 2021 15:02:56 +0000 (+0100) Subject: basic: Make ret_names param to unit_file_find_fragment() optional X-Git-Tag: v250-rc1~388^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=11e9347bc63364ba6c8934c20e288e5664254024;p=thirdparty%2Fsystemd.git basic: Make ret_names param to unit_file_find_fragment() optional --- diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c index bbe439da05a..89bfeceae4f 100644 --- a/src/basic/unit-file.c +++ b/src/basic/unit-file.c @@ -598,9 +598,11 @@ int unit_file_find_fragment( if (name_type < 0) return name_type; - r = add_names(unit_ids_map, unit_name_map, unit_name, NULL, name_type, instance, &names, unit_name); - if (r < 0) - return r; + if (ret_names) { + r = add_names(unit_ids_map, unit_name_map, unit_name, NULL, name_type, instance, &names, unit_name); + if (r < 0) + return r; + } /* First try to load fragment under the original name */ r = unit_ids_map_get(unit_ids_map, unit_name, &fragment); @@ -619,7 +621,7 @@ int unit_file_find_fragment( return log_debug_errno(r, "Cannot load template %s: %m", template); } - if (fragment) { + if (fragment && ret_names) { const char *fragment_basename = basename(fragment); if (!streq(fragment_basename, unit_name)) { @@ -631,7 +633,8 @@ int unit_file_find_fragment( } *ret_fragment_path = fragment; - *ret_names = TAKE_PTR(names); + if (ret_names) + *ret_names = TAKE_PTR(names); return 0; } diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 4fcd2e0efd0..7900c1f460e 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -71,6 +71,19 @@ static void test_unit_file_build_name_map(char **ids) { SET_FOREACH(name, names) log_info(" %s", name); } + + /* Make sure everything still works if we don't collect names. */ + STRV_FOREACH(id, ids) { + const char *fragment; + log_info("*** %s ***", *id); + r = unit_file_find_fragment(unit_ids, + unit_names, + *id, + &fragment, + NULL); + assert_se(r == 0); + log_info("fragment: %s", fragment); + } } static void test_runlevel_to_target(void) {