diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-14 19:47:49 +0200 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-14 19:47:49 +0200 |
| commit | 2a3ecc74455bd43dc00fa73e94a86e261ae10340 (patch) | |
| tree | 14b3ec661a31eb531b49122a0771a968d8b0a37b /eurephiadm | |
| parent | acd6fad0322c9e078fe17c55cffc428a15efe66f (diff) | |
| download | eurephia-2a3ecc74455bd43dc00fa73e94a86e261ae10340.tar.gz eurephia-2a3ecc74455bd43dc00fa73e94a86e261ae10340.tar.xz eurephia-2a3ecc74455bd43dc00fa73e94a86e261ae10340.zip | |
Adopted eurephiadm config command to use the new unified db function, eDBadminConfiguration()
Diffstat (limited to 'eurephiadm')
| -rw-r--r-- | eurephiadm/commands/edit_config.c | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/eurephiadm/commands/edit_config.c b/eurephiadm/commands/edit_config.c index d029364..cb12cb1 100644 --- a/eurephiadm/commands/edit_config.c +++ b/eurephiadm/commands/edit_config.c @@ -21,7 +21,7 @@ */ /** - * @file edit_config.c + * @file eurephiadm/commands/edit_config.c * @author David Sommerseth <dazo@users.sourceforge.net> * @date 2008-12-02 * @@ -34,9 +34,12 @@ #include <string.h> #include <assert.h> +#include <libxml/tree.h> + #include <eurephia_nullsafe.h> #include <eurephia_context.h> #include <eurephia_log.h> +#include <eurephia_xml.h> #include <eurephia_values_struct.h> #include <eurephia_values.h> #include <eurephiadb_session_struct.h> @@ -86,6 +89,9 @@ int cmd_ShowCfg(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, in */ int cmd_EditConfig(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { int rc = 0, i = 0; + xmlDoc *cfgxml = NULL, *resxml = NULL; + xmlNode *cfg_n = NULL, *res_n = NULL; + e_options editargs[] = { {"--set", "-s", 2}, {"--delete", "-D", 1}, @@ -102,13 +108,19 @@ int cmd_EditConfig(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, } switch( eurephia_getopt(&i, argc, argv, editargs) ) { case 's': - fprintf(stderr, "Setting config parameter '%s' to '%s'\n", optargs[0], optargs[1]); - rc = eDBadminConfigSet(ctx, optargs[0], optargs[1]); + eurephiaXML_CreateDoc(ctx, 1, "configuration", &cfgxml, &cfg_n); + cfg_n = xmlNewChild(cfg_n, NULL, (xmlChar *) "set", (xmlChar *) optargs[1]); + xmlNewProp(cfg_n, (xmlChar *) "key", (xmlChar *) optargs[0]); + resxml = eDBadminConfiguration(ctx, cfgxml); + xmlFreeDoc(cfgxml); break; case 'D': - fprintf(stderr, "Deleting config parameter '%s'\n", optargs[0]); - rc = eDBadminConfigDelete(ctx, optargs[0]); + eurephiaXML_CreateDoc(ctx, 1, "configuration", &cfgxml, &cfg_n); + cfg_n = xmlNewChild(cfg_n, NULL, (xmlChar *) "delete", NULL); + xmlNewProp(cfg_n, (xmlChar *) "key", (xmlChar *) optargs[0]); + resxml = eDBadminConfiguration(ctx, cfgxml); + xmlFreeDoc(cfgxml); break; case 'l': @@ -117,6 +129,7 @@ int cmd_EditConfig(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, case 'h': help_EditConfig(); + return 0; default: return 1; @@ -130,10 +143,25 @@ int cmd_EditConfig(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, } else if( argc == 1 ){ fprintf(stderr, "No config action performed\n"); rc = 1; - } + } else if( resxml != NULL ) { + res_n = eurephiaXML_getRoot(ctx, resxml, NULL, 1); + if( res_n == NULL ) { + fprintf(stderr, "%s: Error updating the configuration. No results returned.\n", + MODULE); + return rc = 1; + } - if( rc != 1 ) { - fprintf(stderr, "Failed to update the configuration\n"); + if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { + fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + rc = 1; + } else { + fprintf(stdout, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + rc = 0; + } + xmlFreeDoc(resxml); + } else { + fprintf(stderr, "Unexpected error while performing configuration changes\n"); + rc = 1; } return (rc != 1); } |
