|
@@ -742,6 +742,22 @@ const char *obs_data_get_json(obs_data_t *data)
|
|
return data->json;
|
|
return data->json;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+const char *obs_data_get_json_pretty(obs_data_t *data)
|
|
|
|
+{
|
|
|
|
+ if (!data)
|
|
|
|
+ return NULL;
|
|
|
|
+
|
|
|
|
+ /* NOTE: don't use libobs bfree for json text */
|
|
|
|
+ free(data->json);
|
|
|
|
+ data->json = NULL;
|
|
|
|
+
|
|
|
|
+ json_t *root = obs_data_to_json(data);
|
|
|
|
+ data->json = json_dumps(root, JSON_PRESERVE_ORDER | JSON_INDENT(4));
|
|
|
|
+ json_decref(root);
|
|
|
|
+
|
|
|
|
+ return data->json;
|
|
|
|
+}
|
|
|
|
+
|
|
const char *obs_data_get_last_json(obs_data_t *data)
|
|
const char *obs_data_get_last_json(obs_data_t *data)
|
|
{
|
|
{
|
|
return data ? data->json : NULL;
|
|
return data ? data->json : NULL;
|
|
@@ -772,6 +788,20 @@ bool obs_data_save_json_safe(obs_data_t *data, const char *file,
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+bool obs_data_save_json_pretty_safe(obs_data_t *data, const char *file,
|
|
|
|
+ const char *temp_ext,
|
|
|
|
+ const char *backup_ext)
|
|
|
|
+{
|
|
|
|
+ const char *json = obs_data_get_json_pretty(data);
|
|
|
|
+
|
|
|
|
+ if (json && *json) {
|
|
|
|
+ return os_quick_write_utf8_file_safe(
|
|
|
|
+ file, json, strlen(json), false, temp_ext, backup_ext);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return false;
|
|
|
|
+}
|
|
|
|
+
|
|
static void get_defaults_array_cb(obs_data_t *data, void *vp)
|
|
static void get_defaults_array_cb(obs_data_t *data, void *vp)
|
|
{
|
|
{
|
|
obs_data_array_t *defs = (obs_data_array_t *)vp;
|
|
obs_data_array_t *defs = (obs_data_array_t *)vp;
|