diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-08-29 08:20:51 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-08-29 08:22:09 +0200 |
commit | bea8d13227ec01ba325f0bab512b0c16b1fea976 (patch) | |
tree | 409b08c85016e8e9a4c40e36a1e5f98188d88692 | |
parent | ecebeace0ea28f243045bdee1002530028846fe8 (diff) | |
download | xK-bea8d13227ec01ba325f0bab512b0c16b1fea976.tar.gz xK-bea8d13227ec01ba325f0bab512b0c16b1fea976.tar.xz xK-bea8d13227ec01ba325f0bab512b0c16b1fea976.zip |
xC: don't autosave when nothing changed
-rw-r--r-- | xC.c | 23 |
1 files changed, 13 insertions, 10 deletions
@@ -11361,7 +11361,7 @@ handle_command_set_modify return result; } -static void +static bool handle_command_set_assign_item (struct app_context *ctx, char *key, struct config_item *new_, bool add, bool remove) { @@ -11384,14 +11384,14 @@ handle_command_set_assign_item (struct app_context *ctx, log_global_error (ctx, "Failed to set option \"#s\": #s", key, e->message); error_free (e); + return false; } - else - { - struct strv tmp = strv_make (); - dump_matching_options (ctx->config.root, key, &tmp); - log_global_status (ctx, "Option changed: #s", tmp.vector[0]); - strv_free (&tmp); - } + + struct strv tmp = strv_make (); + dump_matching_options (ctx->config.root, key, &tmp); + log_global_status (ctx, "Option changed: #s", tmp.vector[0]); + strv_free (&tmp); + return true; } static bool @@ -11427,15 +11427,18 @@ handle_command_set_assign config_item_destroy (new_); return true; } + + bool changed = false; for (size_t i = 0; i < all->len; i++) { char *key = cstr_cut_until (all->vector[i], " "); - handle_command_set_assign_item (ctx, key, new_, add, remove); + if (handle_command_set_assign_item (ctx, key, new_, add, remove)) + changed = true; free (key); } config_item_destroy (new_); - if (get_config_boolean (ctx->config.root, "general.autosave")) + if (changed && get_config_boolean (ctx->config.root, "general.autosave")) save_configuration (ctx); return true; } |