aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--liberty.c3
-rw-r--r--tests/liberty.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/liberty.c b/liberty.c
index ff7c0c7..0690e89 100644
--- a/liberty.c
+++ b/liberty.c
@@ -4833,7 +4833,8 @@ config_item_write_kv_pair (struct config_writer *self,
str_append_printf (self->output,
"%s# %s\n", indent, value->schema->comment);
- bool can_use_word = true;
+ char *end = NULL;
+ bool can_use_word = ((void) strtoll (key, &end, 10), end == key);
for (const char *p = key; *p; p++)
if (!config_tokenizer_is_word_char (*p))
can_use_word = false;
diff --git a/tests/liberty.c b/tests/liberty.c
index 92647ae..fddfb2c 100644
--- a/tests/liberty.c
+++ b/tests/liberty.c
@@ -647,7 +647,7 @@ static const struct config_schema g_config_test[] =
.type = CONFIG_ITEM_INTEGER,
.validate = test_config_validate_nonnegative,
.default_ = "1" },
- { .name = "foobar",
+ { .name = "123",
.type = CONFIG_ITEM_STRING,
.default_ = "\"qux\\x01`\" \"\"`a`" },
{}
@@ -676,10 +676,11 @@ test_config (void)
config_item_destroy (invalid);
hard_assert (!strcmp ("qux\001`a",
- config_item_get (config.root, "top.foobar", NULL)->value.string.str));
+ config_item_get (config.root, "top.123", NULL)->value.string.str));
struct str s = str_make ();
config_item_write (config.root, true, &s);
+ print_debug ("%s", s.str);
struct config_item *parsed = config_item_parse (s.str, s.len, false, NULL);
hard_assert (parsed);
config_item_destroy (parsed);