Add function to interface to allow enabling/disabling error/debug output for the format parses
This makes the `-d` option work in plistutil that wasn't doing anything
diff --git a/include/plist/plist.h b/include/plist/plist.h
index 0a21499..f955d5e 100644
--- a/include/plist/plist.h
+++ b/include/plist/plist.h
@@ -1094,6 +1094,13 @@
*/
void plist_mem_free(void* ptr);
+ /**
+ * Set debug level for the format parsers.
+ *
+ * @param debug Debug level. Currently, only 0 (off) and 1 (enabled) are supported.
+ */
+ void plist_set_debug(int debug);
+
/*@}*/
#ifdef __cplusplus
diff --git a/src/bplist.c b/src/bplist.c
index ff0b399..72040cc 100644
--- a/src/bplist.c
+++ b/src/bplist.c
@@ -227,6 +227,11 @@
/* deinit binary plist stuff */
}
+void plist_bin_set_debug(int debug)
+{
+ plist_bin_debug = debug;
+}
+
static plist_t parse_bin_node_at_index(struct bplist_data *bplist, uint32_t node_index);
static plist_t parse_int_node(const char **bnode, uint8_t size)
diff --git a/src/jplist.c b/src/jplist.c
index 99a8877..8ed7398 100644
--- a/src/jplist.c
+++ b/src/jplist.c
@@ -64,6 +64,11 @@
/* deinit JSON stuff */
}
+void plist_json_set_debug(int debug)
+{
+ plist_json_debug = debug;
+}
+
#ifndef HAVE_STRNDUP
static char* strndup(const char* str, size_t len)
{
diff --git a/src/oplist.c b/src/oplist.c
index 287d5a2..1781962 100644
--- a/src/oplist.c
+++ b/src/oplist.c
@@ -63,6 +63,11 @@
/* deinit OpenStep plist stuff */
}
+void plist_ostep_set_debug(int debug)
+{
+ plist_ostep_debug = debug;
+}
+
#ifndef HAVE_STRNDUP
static char* strndup(const char* str, size_t len)
{
diff --git a/src/plist.c b/src/plist.c
index 689fc79..8d57416 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -1497,6 +1497,19 @@
return (memmem(data->buff, data->length, cmpval, n) != NULL);
}
+extern void plist_xml_set_debug(int debug);
+extern void plist_bin_set_debug(int debug);
+extern void plist_json_set_debug(int debug);
+extern void plist_ostep_set_debug(int debug);
+
+PLIST_API void plist_set_debug(int debug)
+{
+ plist_xml_set_debug(debug);
+ plist_bin_set_debug(debug);
+ plist_json_set_debug(debug);
+ plist_ostep_set_debug(debug);
+}
+
PLIST_API void plist_sort(plist_t plist)
{
if (!plist) {
diff --git a/src/xplist.c b/src/xplist.c
index 1abc46d..bd506fb 100644
--- a/src/xplist.c
+++ b/src/xplist.c
@@ -102,6 +102,11 @@
/* deinit XML stuff */
}
+void plist_xml_set_debug(int debug)
+{
+ plist_xml_debug = debug;
+}
+
static size_t dtostr(char *buf, size_t bufsize, double realval)
{
size_t len = 0;
diff --git a/tools/plistutil.c b/tools/plistutil.c
index 1c199fe..4b83df3 100644
--- a/tools/plistutil.c
+++ b/tools/plistutil.c
@@ -184,6 +184,11 @@
return 0;
}
+ if (options->flags & OPT_DEBUG)
+ {
+ plist_set_debug(1);
+ }
+
if (!options->in_file || !strcmp(options->in_file, "-"))
{
read_size = 0;