From 2f2896a58e212d2fd647b77e671f158dcd61982b Mon Sep 17 00:00:00 2001 From: Joerg Steffens Date: Mon, 6 Oct 2014 22:03:29 +0200 Subject: [PATCH] print config file schema without valid config file print config file schema even without a valid configuration file. --- src/dird/dird.c | 16 +++++++++------- src/dird/dird_conf.c | 8 +++++++- src/dird/dird_conf.h | 2 ++ 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/dird/dird.c b/src/dird/dird.c index f51cfa442b7..1fbc60ef5bc 100644 --- a/src/dird/dird.c +++ b/src/dird/dird.c @@ -271,6 +271,15 @@ int main (int argc, char *argv[]) drop(uid, gid, false); /* reduce privileges if requested */ } + if (export_config_schema) { + my_config = new_config_parser(); + init_dir_config(my_config, configfile, M_ERROR_TERM); + POOL_MEM buffer; + print_config_schema_json(buffer); + printf( "%s\n", buffer.c_str() ); + goto bail_out; + } + my_config = new_config_parser(); parse_dir_config(my_config, configfile, M_ERROR_TERM); @@ -284,13 +293,6 @@ int main (int argc, char *argv[]) goto bail_out; } - if (export_config_schema) { - POOL_MEM buffer; - print_config_schema_json(buffer); - printf( "%s\n", buffer.c_str() ); - goto bail_out; - } - if (!test_config) { /* we don't need to do this block in test mode */ if (background) { daemon_start(); diff --git a/src/dird/dird_conf.c b/src/dird/dird_conf.c index 952fff8e567..3436f12ca65 100644 --- a/src/dird/dird_conf.c +++ b/src/dird/dird_conf.c @@ -3503,7 +3503,7 @@ static void print_config_cb(RES_ITEM *items, int i, POOL_MEM &cfg_str) } } -bool parse_dir_config(CONFIG *config, const char *configfile, int exit_code) +void init_dir_config(CONFIG *config, const char *configfile, int exit_code) { config->init(configfile, NULL, @@ -3518,5 +3518,11 @@ bool parse_dir_config(CONFIG *config, const char *configfile, int exit_code) R_LAST, resources, res_head); +} + +bool parse_dir_config(CONFIG *config, const char *configfile, int exit_code) +{ + init_dir_config( config, configfile, exit_code ); + return config->parse_config(); } diff --git a/src/dird/dird_conf.h b/src/dird/dird_conf.h index 5b447e7ff43..981090a65dc 100644 --- a/src/dird/dird_conf.h +++ b/src/dird/dird_conf.h @@ -620,6 +620,8 @@ class RUNRES: public BRSRES { bool last_set; /* last week of month */ }; +void init_dir_config(CONFIG *config, const char *configfile, int exit_code); + #define GetPoolResWithName(x) ((POOLRES *)GetResWithName(R_POOL, (x))) #define GetStoreResWithName(x) ((STORERES *)GetResWithName(R_STORAGE, (x))) #define GetClientResWithName(x) ((CLIENTRES *)GetResWithName(R_CLIENT, (x)))