config: finish config_item_write() implementation
This commit is contained in:
parent
fddcef24f9
commit
83e159d945
20
common.c
20
common.c
|
@ -781,6 +781,24 @@ struct config_writer
|
||||||
static void config_item_write_object_innards
|
static void config_item_write_object_innards
|
||||||
(struct config_writer *self, struct config_item_ *object);
|
(struct config_writer *self, struct config_item_ *object);
|
||||||
|
|
||||||
|
static void
|
||||||
|
config_item_write_string (struct str *output, const struct str *s)
|
||||||
|
{
|
||||||
|
str_append_c (output, '"');
|
||||||
|
for (size_t i = 0; i < s->len; i++)
|
||||||
|
{
|
||||||
|
unsigned char c = s->str[i];
|
||||||
|
if (c == '\n') str_append (output, "\\n");
|
||||||
|
else if (c == '\r') str_append (output, "\\r");
|
||||||
|
else if (c == '\t') str_append (output, "\\t");
|
||||||
|
else if (c == '\\') str_append (output, "\\\\");
|
||||||
|
else if (c == '"') str_append (output, "\\\"");
|
||||||
|
else if (c < 32) str_append_printf (output, "\\x%02x", c);
|
||||||
|
else str_append_c (output, c);
|
||||||
|
}
|
||||||
|
str_append_c (output, '"');
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
config_item_write_value (struct config_writer *self, struct config_item_ *value)
|
config_item_write_value (struct config_writer *self, struct config_item_ *value)
|
||||||
{
|
{
|
||||||
|
@ -797,7 +815,7 @@ config_item_write_value (struct config_writer *self, struct config_item_ *value)
|
||||||
break;
|
break;
|
||||||
case CONFIG_ITEM_STRING:
|
case CONFIG_ITEM_STRING:
|
||||||
case CONFIG_ITEM_STRING_ARRAY:
|
case CONFIG_ITEM_STRING_ARRAY:
|
||||||
// TODO
|
config_item_write_string (self->output, &value->value.string);
|
||||||
break;
|
break;
|
||||||
case CONFIG_ITEM_OBJECT:
|
case CONFIG_ITEM_OBJECT:
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue