Put a prolog at the top of configuration files
Later I'm going to put in there some more information about the format etc.
This commit is contained in:
parent
f52fab9448
commit
586ccd4e87
|
@ -1824,8 +1824,8 @@ read_config_file (struct str_map *config, struct error **e)
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
write_default_config (const char *filename, const struct config_item *table,
|
write_default_config (const char *filename, const char *prolog,
|
||||||
struct error **e)
|
const struct config_item *table, struct error **e)
|
||||||
{
|
{
|
||||||
struct str path, base;
|
struct str path, base;
|
||||||
|
|
||||||
|
@ -1861,6 +1861,9 @@ write_default_config (const char *filename, const struct config_item *table,
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (prolog)
|
||||||
|
fputs (prolog, fp);
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
for (; table->key != NULL; table++)
|
for (; table->key != NULL; table++)
|
||||||
{
|
{
|
||||||
|
|
33
src/kike.c
33
src/kike.c
|
@ -993,12 +993,30 @@ print_usage (const char *program_name)
|
||||||
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
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
const char *invocation_name = argv[0];
|
const char *invocation_name = argv[0];
|
||||||
|
|
||||||
struct error *e = NULL;
|
|
||||||
static struct option opts[] =
|
static struct option opts[] =
|
||||||
{
|
{
|
||||||
{ "debug", no_argument, NULL, 'd' },
|
{ "debug", no_argument, NULL, 'd' },
|
||||||
|
@ -1028,18 +1046,8 @@ main (int argc, char *argv[])
|
||||||
printf (PROGRAM_NAME " " PROGRAM_VERSION "\n");
|
printf (PROGRAM_NAME " " PROGRAM_VERSION "\n");
|
||||||
exit (EXIT_SUCCESS);
|
exit (EXIT_SUCCESS);
|
||||||
case 'w':
|
case 'w':
|
||||||
{
|
call_write_default_config (optarg);
|
||||||
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);
|
|
||||||
exit (EXIT_SUCCESS);
|
exit (EXIT_SUCCESS);
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
print_fatal ("error in options");
|
print_fatal ("error in options");
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
|
@ -1058,6 +1066,7 @@ main (int argc, char *argv[])
|
||||||
struct server_context ctx;
|
struct server_context ctx;
|
||||||
server_context_init (&ctx);
|
server_context_init (&ctx);
|
||||||
|
|
||||||
|
struct error *e = NULL;
|
||||||
if (!read_config_file (&ctx.config, &e))
|
if (!read_config_file (&ctx.config, &e))
|
||||||
{
|
{
|
||||||
print_fatal ("error loading configuration: %s", e->message);
|
print_fatal ("error loading configuration: %s", e->message);
|
||||||
|
|
|
@ -1686,6 +1686,25 @@ print_usage (const char *program_name)
|
||||||
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
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
@ -1693,7 +1712,6 @@ main (int argc, char *argv[])
|
||||||
str_vector_init (&g_original_argv);
|
str_vector_init (&g_original_argv);
|
||||||
str_vector_add_vector (&g_original_argv, argv);
|
str_vector_add_vector (&g_original_argv, argv);
|
||||||
|
|
||||||
struct error *e = NULL;
|
|
||||||
static struct option opts[] =
|
static struct option opts[] =
|
||||||
{
|
{
|
||||||
{ "debug", no_argument, NULL, 'd' },
|
{ "debug", no_argument, NULL, 'd' },
|
||||||
|
@ -1723,18 +1741,8 @@ main (int argc, char *argv[])
|
||||||
printf (PROGRAM_NAME " " PROGRAM_VERSION "\n");
|
printf (PROGRAM_NAME " " PROGRAM_VERSION "\n");
|
||||||
exit (EXIT_SUCCESS);
|
exit (EXIT_SUCCESS);
|
||||||
case 'w':
|
case 'w':
|
||||||
{
|
call_write_default_config (optarg);
|
||||||
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);
|
|
||||||
exit (EXIT_SUCCESS);
|
exit (EXIT_SUCCESS);
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
print_fatal ("error in options");
|
print_fatal ("error in options");
|
||||||
exit (EXIT_FAILURE);
|
exit (EXIT_FAILURE);
|
||||||
|
@ -1753,6 +1761,7 @@ main (int argc, char *argv[])
|
||||||
struct bot_context ctx;
|
struct bot_context ctx;
|
||||||
bot_context_init (&ctx);
|
bot_context_init (&ctx);
|
||||||
|
|
||||||
|
struct error *e = NULL;
|
||||||
if (!read_config_file (&ctx.config, &e))
|
if (!read_config_file (&ctx.config, &e))
|
||||||
{
|
{
|
||||||
print_fatal ("error loading configuration: %s", e->message);
|
print_fatal ("error loading configuration: %s", e->message);
|
||||||
|
|
Loading…
Reference in New Issue