diff --git a/lib/config/config.c b/lib/config/config.c index a32fd9fa7..7ed7b827b 100644 --- a/lib/config/config.c +++ b/lib/config/config.c @@ -186,6 +186,17 @@ struct config_tree *create_config_tree_from_string(struct cmd_context *cmd __att return cft; } +int override_config_tree_from_string(struct cmd_context *cmd, + const char *config_settings) +{ + if (!(cmd->cft_override = create_config_tree_from_string(cmd,config_settings))) { + log_error("Failed to set overridden configuration entries."); + return 1; + } + + return 0; +} + int read_config_fd(struct config_tree *cft, struct device *dev, off_t offset, size_t size, off_t offset2, size_t size2, checksum_fn_t checksum_fn, uint32_t checksum) diff --git a/lib/config/config.h b/lib/config/config.h index 1e4bc2929..f5a8f3bed 100644 --- a/lib/config/config.h +++ b/lib/config/config.h @@ -56,6 +56,8 @@ struct config_tree_list { struct config_tree *create_config_tree(const char *filename, int keep_open); struct config_tree *create_config_tree_from_string(struct cmd_context *cmd, const char *config_settings); +int override_config_tree_from_string(struct cmd_context *cmd, + const char *config_settings); void destroy_config_tree(struct config_tree *cft); typedef uint32_t (*checksum_fn_t) (uint32_t initial, const void *buf, uint32_t size); diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 3ca75a7dd..0966d0bc6 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -887,16 +887,6 @@ int help(struct cmd_context *cmd __attribute((unused)), int argc, char **argv) return ret; } -static int _override_settings(struct cmd_context *cmd, const char *config_settings) -{ - if (!(cmd->cft_override = create_config_tree_from_string(cmd, config_settings))) { - log_error("Failed to set overridden configuration entries."); - return EINVALID_CMD_LINE; - } - - return 0; -} - static void _apply_settings(struct cmd_context *cmd) { init_debug(cmd->current_settings.debug); @@ -986,9 +976,11 @@ int lvm_run_command(struct cmd_context *cmd, int argc, char **argv) set_cmd_name(cmd->command->name); if (arg_count(cmd, config_ARG)) - if ((ret = _override_settings(cmd, - arg_str_value(cmd, config_ARG, "")))) + if ((ret = override_config_tree_from_string(cmd, + arg_str_value(cmd, config_ARG, "")))) { + ret = EINVALID_CMD_LINE; goto_out; + } if (arg_count(cmd, config_ARG) || !cmd->config_valid || config_files_changed(cmd)) { /* Reinitialise various settings inc. logging, filters */