diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-04 11:16:21 +0100 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-04 11:16:21 +0100 |
commit | 50b32828f5a6dad74c389fd8545b9513791c9e94 (patch) | |
tree | a4a811d44dd5e850e985f7e7254935087481c02e /eurephiadm | |
parent | 173446b95a879c5963cf56b4970d65b6a3078c26 (diff) | |
download | eurephia-50b32828f5a6dad74c389fd8545b9513791c9e94.tar.gz eurephia-50b32828f5a6dad74c389fd8545b9513791c9e94.tar.xz eurephia-50b32828f5a6dad74c389fd8545b9513791c9e94.zip |
Implemented argparser in edit_config.c
Diffstat (limited to 'eurephiadm')
-rw-r--r-- | eurephiadm/commands/edit_config.c | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/eurephiadm/commands/edit_config.c b/eurephiadm/commands/edit_config.c index e5a5f63..94865a6 100644 --- a/eurephiadm/commands/edit_config.c +++ b/eurephiadm/commands/edit_config.c @@ -32,19 +32,46 @@ #include <eurephiadb_session_struct.h> #include <eurephiadb_driver.h> +#define MODULE "eurephiadm::config" +#include "../argparser.h" + int cmd_EditConfig(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { - int rc = 0; + int rc = 0, i = 0; + e_options editargs[] = { + {"--set", "-s", 2}, + {"--delete", "-D", 1}, + {NULL, NULL, 0} + }; assert((ctx != NULL) && (ctx->dbc != NULL) && (ctx->dbc->config != NULL)); - if( strcmp(argv[1], "set") == 0 ) { - rc = eDBadminConfigSet(ctx, argv[2], argv[3]); - } else if( strcmp(argv[1], "delete") == 0 ) { - rc = eDBadminConfigDelete(ctx, argv[2]); - } else { + for( i = 1; i < argc; i++ ) { + if( *argv[i] != '-' ) { + break; + } + 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]); + break; + + case 'D': + fprintf(stderr, "Deleting config parameter '%s'\n", optargs[0]); + rc = eDBadminConfigDelete(ctx, optargs[0]); + break; + + default: + return 1; + } + } + + if( argc == 2 ) { char *val = eGet_value(ctx->dbc->config, argv[1]); fprintf(stdout, "%s\n", (val != NULL ? val : "")); rc = 1; + } else if( argc == 1 ){ + fprintf(stderr, "No config action performed\n"); + rc = 1; } if( rc != 1 ) { |