summaryrefslogtreecommitdiffstats
path: root/eurephiadm
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-09-14 19:47:49 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-09-14 19:47:49 +0200
commit2a3ecc74455bd43dc00fa73e94a86e261ae10340 (patch)
tree14b3ec661a31eb531b49122a0771a968d8b0a37b /eurephiadm
parentacd6fad0322c9e078fe17c55cffc428a15efe66f (diff)
downloadeurephia-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.c44
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);
}