diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-04-13 09:10:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-13 09:10:17 +0200 |
commit | 39857544ee3794481f165e6ecc5d5a81c65f0ee9 (patch) | |
tree | 2404d8531594f1d31f8dfa7cb29024a1d41049d8 /src/shared | |
parent | repart: always take BSD lock when whole block device is opened (diff) | |
parent | test: also test client-side operation if applicable (diff) | |
download | systemd-39857544ee3794481f165e6ecc5d5a81c65f0ee9.tar.xz systemd-39857544ee3794481f165e6ecc5d5a81c65f0ee9.zip |
Merge pull request #27027 from dtardon/unit-file-list-cleanup
Use _cleanup_ for UnitFileList hash
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/install.c | 16 | ||||
-rw-r--r-- | src/shared/install.h | 3 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/shared/install.c b/src/shared/install.c index 79f9ea9b0e..964092456f 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -3611,7 +3611,7 @@ int unit_file_preset_all( return execute_preset(file_flags, &plus, &minus, &lp, config_path, NULL, mode, changes, n_changes); } -static UnitFileList* unit_file_list_free_one(UnitFileList *f) { +static UnitFileList* unit_file_list_free(UnitFileList *f) { if (!f) return NULL; @@ -3619,11 +3619,15 @@ static UnitFileList* unit_file_list_free_one(UnitFileList *f) { return mfree(f); } -Hashmap* unit_file_list_free(Hashmap *h) { - return hashmap_free_with_destructor(h, unit_file_list_free_one); -} +DEFINE_TRIVIAL_CLEANUP_FUNC(UnitFileList*, unit_file_list_free); -DEFINE_TRIVIAL_CLEANUP_FUNC(UnitFileList*, unit_file_list_free_one); +DEFINE_HASH_OPS_WITH_VALUE_DESTRUCTOR( + unit_file_list_hash_ops_free, + char, + string_hash_func, + string_compare_func, + UnitFileList, + unit_file_list_free); int unit_file_get_list( RuntimeScope scope, @@ -3659,7 +3663,7 @@ int unit_file_get_list( } FOREACH_DIRENT(de, d, return -errno) { - _cleanup_(unit_file_list_free_onep) UnitFileList *f = NULL; + _cleanup_(unit_file_list_freep) UnitFileList *f = NULL; if (!unit_name_is_valid(de->d_name, UNIT_NAME_ANY)) continue; diff --git a/src/shared/install.h b/src/shared/install.h index 0f9724f999..2067969f83 100644 --- a/src/shared/install.h +++ b/src/shared/install.h @@ -195,7 +195,8 @@ int unit_file_get_state(RuntimeScope scope, const char *root_dir, const char *fi int unit_file_exists(RuntimeScope scope, const LookupPaths *paths, const char *name); int unit_file_get_list(RuntimeScope scope, const char *root_dir, Hashmap *h, char **states, char **patterns); -Hashmap* unit_file_list_free(Hashmap *h); + +extern const struct hash_ops unit_file_list_hash_ops_free; InstallChangeType install_changes_add(InstallChange **changes, size_t *n_changes, InstallChangeType type, const char *path, const char *source); void install_changes_free(InstallChange *changes, size_t n_changes); |