summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/utils.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/utils.c b/src/utils.c
index 4218758..af8fc78 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -252,6 +252,31 @@ void buffer_write_to_filename(const char *filename, const char *buffer, uint64_t
252 } 252 }
253} 253}
254 254
255int plist_read_from_filename(plist_t *plist, const char *filename)
256{
257 char *buffer = NULL;
258 uint64_t length;
259
260 if (!filename)
261 return 0;
262
263 buffer_read_from_filename(filename, &buffer, &length);
264
265 if (!buffer) {
266 return 0;
267 }
268
269 if ((length > 8) && (memcmp(buffer, "bplist00", 8) == 0)) {
270 plist_from_bin(buffer, length, plist);
271 } else {
272 plist_from_xml(buffer, length, plist);
273 }
274
275 free(buffer);
276
277 return 1;
278}
279
255int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format) 280int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format)
256{ 281{
257 char *buffer = NULL; 282 char *buffer = NULL;