From 193b809592e3540e05ac34d64fd3f0c642c4722c Mon Sep 17 00:00:00 2001 From: Roman Tokarev <rtokarev@corp.mail.ru> Date: Mon, 6 Dec 2010 15:27:46 +0300 Subject: [PATCH] [core] add --cfg_get option --- core/tarantool.c | 29 +++++++++++++++++++++++++++++ include/tarantool.h | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/core/tarantool.c b/core/tarantool.c index 8e89ba1199..138a024e54 100644 --- a/core/tarantool.c +++ b/core/tarantool.c @@ -226,6 +226,7 @@ main(int argc, char **argv) { int c, verbose = 0; char *cat_filename = NULL; + char *cfg_paramname = NULL; bool be_daemon = false; int n_accepted, n_skipped; FILE *f; @@ -269,6 +270,10 @@ main(int argc, char **argv) .has_arg = 0, .flag = NULL, .val = 'D'}, + {.name = "cfg_get", + .has_arg = 1, + .flag = NULL, + .val = 'g'}, {.name = NULL, .has_arg = 0, .flag = NULL, @@ -302,6 +307,10 @@ main(int argc, char **argv) case 'I': init_storage = true; break; + case 'g': + role = cfg_get; + cfg_paramname = strdup(optarg); + break; } } @@ -319,6 +328,7 @@ main(int argc, char **argv) fprintf(stderr, " -p, --create_pid\n"); fprintf(stderr, " -v, --verbose\n"); fprintf(stderr, " -D, --daemonize\n"); + fprintf(stderr, " --cfg_get=paramname\n"); return 0; } @@ -355,6 +365,25 @@ main(int argc, char **argv) } #endif + if (role == cfg_get) { + tarantool_cfg_iterator_t *i; + char *key, *value; + + i = tarantool_cfg_iterator_init(); + while ((key = tarantool_cfg_iterator_next(i, &cfg, &value)) != NULL) { + if (strcmp(key, cfg_paramname) == 0) { + printf("%s\n", value); + free(value); + + return 0; + } + + free(value); + } + + return 0; + } + cfg.log_level += verbose; if (cfg.work_dir != NULL && chdir(cfg.work_dir) == -1) diff --git a/include/tarantool.h b/include/tarantool.h index ff8600b240..a308f3e150 100644 --- a/include/tarantool.h +++ b/include/tarantool.h @@ -51,7 +51,7 @@ double tarantool_uptime(void); char **init_set_proc_title(int argc, char **argv); void set_proc_title(const char *format, ...); -enum tarantool_role { usage, cat, def }; +enum tarantool_role { usage, cat, def, cfg_get }; extern enum tarantool_role role; #endif -- GitLab