diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-11-10 17:36:11 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-11-10 17:36:11 +0100 |
commit | b237fcbd7e189f755dd8b372398a0ea94255d090 (patch) | |
tree | cb5c453ea3b4b966bf30784a4200a1d2b32f622a /src/util/disk.c | |
parent | 54f722729882247a318fbf686f2b2c31137ab72b (diff) | |
download | gnunet-b237fcbd7e189f755dd8b372398a0ea94255d090.tar.gz gnunet-b237fcbd7e189f755dd8b372398a0ea94255d090.zip |
new convenience function to do operations on a configuration object to avoid repetitive configuration_create, _load and _destroy logic
Diffstat (limited to 'src/util/disk.c')
-rw-r--r-- | src/util/disk.c | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/src/util/disk.c b/src/util/disk.c index e0227be70..dc38d1137 100644 --- a/src/util/disk.c +++ b/src/util/disk.c | |||
@@ -2668,28 +2668,19 @@ GNUNET_DISK_internal_file_handle_ (const struct GNUNET_DISK_FileHandle *fh, | |||
2668 | 2668 | ||
2669 | 2669 | ||
2670 | /** | 2670 | /** |
2671 | * Remove the directory given under @a option in | 2671 | * Helper function for #GNUNET_DISK_purge_cfg_dir. |
2672 | * section [PATHS] in configuration under @a cfg_filename | ||
2673 | * | 2672 | * |
2674 | * @param cfg_filename configuration file to parse | 2673 | * @param cls a `const char *` with the option to purge |
2675 | * @param option option with the dir name to purge | 2674 | * @param cfg our configuration |
2675 | * @return #GNUNET_OK on success | ||
2676 | */ | 2676 | */ |
2677 | void | 2677 | static int |
2678 | GNUNET_DISK_purge_cfg_dir (const char *cfg_filename, | 2678 | purge_cfg_dir (void *cls, |
2679 | const char *option) | 2679 | const struct GNUNET_CONFIGURATION_Handle *cfg) |
2680 | { | 2680 | { |
2681 | struct GNUNET_CONFIGURATION_Handle *cfg; | 2681 | const char *option = cls; |
2682 | char *tmpname; | 2682 | char *tmpname; |
2683 | 2683 | ||
2684 | cfg = GNUNET_CONFIGURATION_create (); | ||
2685 | if (GNUNET_OK != | ||
2686 | GNUNET_CONFIGURATION_load (cfg, | ||
2687 | cfg_filename)) | ||
2688 | { | ||
2689 | GNUNET_break (0); | ||
2690 | GNUNET_CONFIGURATION_destroy (cfg); | ||
2691 | return; | ||
2692 | } | ||
2693 | if (GNUNET_OK != | 2684 | if (GNUNET_OK != |
2694 | GNUNET_CONFIGURATION_get_value_filename (cfg, | 2685 | GNUNET_CONFIGURATION_get_value_filename (cfg, |
2695 | "PATHS", | 2686 | "PATHS", |
@@ -2699,10 +2690,8 @@ GNUNET_DISK_purge_cfg_dir (const char *cfg_filename, | |||
2699 | GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, | 2690 | GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR, |
2700 | "PATHS", | 2691 | "PATHS", |
2701 | option); | 2692 | option); |
2702 | GNUNET_CONFIGURATION_destroy (cfg); | 2693 | return GNUNET_NO; |
2703 | return; | ||
2704 | } | 2694 | } |
2705 | GNUNET_CONFIGURATION_destroy (cfg); | ||
2706 | if (GNUNET_SYSERR == | 2695 | if (GNUNET_SYSERR == |
2707 | GNUNET_DISK_directory_remove (tmpname)) | 2696 | GNUNET_DISK_directory_remove (tmpname)) |
2708 | { | 2697 | { |
@@ -2710,11 +2699,29 @@ GNUNET_DISK_purge_cfg_dir (const char *cfg_filename, | |||
2710 | "remove", | 2699 | "remove", |
2711 | tmpname); | 2700 | tmpname); |
2712 | GNUNET_free (tmpname); | 2701 | GNUNET_free (tmpname); |
2713 | return; | 2702 | return GNUNET_OK; |
2714 | } | 2703 | } |
2715 | GNUNET_free (tmpname); | 2704 | GNUNET_free (tmpname); |
2705 | return GNUNET_OK; | ||
2716 | } | 2706 | } |
2717 | 2707 | ||
2718 | 2708 | ||
2709 | /** | ||
2710 | * Remove the directory given under @a option in | ||
2711 | * section [PATHS] in configuration under @a cfg_filename | ||
2712 | * | ||
2713 | * @param cfg_filename configuration file to parse | ||
2714 | * @param option option with the dir name to purge | ||
2715 | */ | ||
2716 | void | ||
2717 | GNUNET_DISK_purge_cfg_dir (const char *cfg_filename, | ||
2718 | const char *option) | ||
2719 | { | ||
2720 | GNUNET_break (GNUNET_OK == | ||
2721 | GNUNET_CONFIGURATION_parse_and_run (cfg_filename, | ||
2722 | &purge_cfg_dir, | ||
2723 | (void *) option)); | ||
2724 | } | ||
2725 | |||
2719 | 2726 | ||
2720 | /* end of disk.c */ | 2727 | /* end of disk.c */ |