diff options
Diffstat (limited to 'src/kike.c')
-rw-r--r-- | src/kike.c | 33 |
1 files changed, 21 insertions, 12 deletions
@@ -993,12 +993,30 @@ print_usage (const char *program_name) program_name); } +static void +call_write_default_config (const char *hint) +{ + static const char *prolog = + "# " PROGRAM_NAME " " PROGRAM_VERSION " configuration file\n" + "\n"; + + struct error *e = NULL; + char *filename = write_default_config (hint, prolog, g_config_table, &e); + if (!filename) + { + print_fatal ("%s", e->message); + error_free (e); + exit (EXIT_FAILURE); + } + print_status ("configuration written to `%s'", filename); + free (filename); +} + int main (int argc, char *argv[]) { const char *invocation_name = argv[0]; - struct error *e = NULL; static struct option opts[] = { { "debug", no_argument, NULL, 'd' }, @@ -1028,18 +1046,8 @@ main (int argc, char *argv[]) printf (PROGRAM_NAME " " PROGRAM_VERSION "\n"); exit (EXIT_SUCCESS); case 'w': - { - char *filename = write_default_config (optarg, g_config_table, &e); - if (!filename) - { - print_fatal ("%s", e->message); - error_free (e); - exit (EXIT_FAILURE); - } - print_status ("configuration written to `%s'", filename); - free (filename); + call_write_default_config (optarg); exit (EXIT_SUCCESS); - } default: print_fatal ("error in options"); exit (EXIT_FAILURE); @@ -1058,6 +1066,7 @@ main (int argc, char *argv[]) struct server_context ctx; server_context_init (&ctx); + struct error *e = NULL; if (!read_config_file (&ctx.config, &e)) { print_fatal ("error loading configuration: %s", e->message); |