diff options
Diffstat (limited to 'pom.c')
-rw-r--r-- | pom.c | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -2,7 +2,6 @@ TODO: - error_to_string - conf_copy -- conf_print - typed get functions */ #include "pom.h" @@ -1412,3 +1411,31 @@ pom_conf_merge(pom_conf *conf, const pom_conf *other) { *conf = new_conf; return true; } + +void +pom_conf_print(const pom_conf *conf) { + const pom_item *item; + pom_item_iter *iter = NULL; + while ((item = pom_conf_next_item(conf, &iter))) { + printf("%s: \"", item->key); + char c; + for (const char *p = item->value; (c = *p); p++) { + if (c == '\n') { + printf("\\n"); + } else if (c == '\t') { + printf("\\t"); + } else if (c == '\r') { + printf("\\r"); + } else if (c == '\\') { + printf("\\\\"); + } else if (c == '"') { + printf("\\\""); + } else if (c < 0x20) { + printf("\\x%02X", c); + } else { + putchar(c); + } + } + printf("\"\n"); + } +} |