summaryrefslogtreecommitdiff
path: root/pom.c
diff options
context:
space:
mode:
Diffstat (limited to 'pom.c')
-rw-r--r--pom.c29
1 files changed, 28 insertions, 1 deletions
diff --git a/pom.c b/pom.c
index 7fc754f..5a4433f 100644
--- a/pom.c
+++ b/pom.c
@@ -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");
+ }
+}