waypoints and config dumps are prettyfied

This commit is contained in:
Jan-Piet Mens
2015-10-22 14:57:38 +02:00
parent f00612df77
commit 77e3f4cd84

View File

@@ -327,19 +327,28 @@ static void putrec(struct udata *ud, time_t now, UT_string *reltopic, UT_string
* via cmd `dump' to the device. Store it "pretty".
*/
void config_dump(struct udata *ud, UT_string *username, UT_string *device, char *payloadstring)
static char *prettyfy(char *payloadstring)
{
JsonNode *json;
static UT_string *ts = NULL;
char *pretty_js;
if ((json = json_decode(payloadstring)) == NULL) {
olog(LOG_ERR, "Cannot decode JSON from %s", payloadstring);
return;
return (NULL);
}
pretty_js = json_stringify(json, "\t");
json_delete(json);
return (pretty_js);
}
void config_dump(struct udata *ud, UT_string *username, UT_string *device, char *payloadstring)
{
static UT_string *ts = NULL;
char *pretty_js;
pretty_js = prettyfy(payloadstring);
utstring_renew(ts);
utstring_printf(ts, "%s/%s/%s/%s",
@@ -349,6 +358,7 @@ void config_dump(struct udata *ud, UT_string *username, UT_string *device, char
UB(device));
if (mkpath(UB(ts)) < 0) {
olog(LOG_ERR, "Cannot mkdir %s: %m", UB(ts));
if (pretty_js) free(pretty_js);
return;
}
@@ -356,8 +366,8 @@ void config_dump(struct udata *ud, UT_string *username, UT_string *device, char
if (ud->verbose) {
printf("Received configuration dump, storing at %s\n", UB(ts));
}
safewrite(UB(ts), pretty_js);
free(pretty_js);
safewrite(UB(ts), (pretty_js) ? pretty_js : payloadstring);
if (pretty_js) free(pretty_js);
}
/*
@@ -368,6 +378,9 @@ void config_dump(struct udata *ud, UT_string *username, UT_string *device, char
void waypoints_dump(struct udata *ud, UT_string *username, UT_string *device, char *payloadstring)
{
static UT_string *ts = NULL;
char *pretty_js;
pretty_js = prettyfy(payloadstring);
utstring_renew(ts);
@@ -378,6 +391,7 @@ void waypoints_dump(struct udata *ud, UT_string *username, UT_string *device, ch
UB(device));
if (mkpath(UB(ts)) < 0) {
olog(LOG_ERR, "Cannot mkdir %s: %m", UB(ts));
if (pretty_js) free(pretty_js);
return;
}
@@ -385,7 +399,8 @@ void waypoints_dump(struct udata *ud, UT_string *username, UT_string *device, ch
if (ud->verbose) {
printf("Received waypoints dump, storing at %s\n", UB(ts));
}
safewrite(UB(ts), payloadstring);
safewrite(UB(ts), (pretty_js) ? pretty_js : payloadstring);
if (pretty_js) free(pretty_js);
}
#ifdef WITH_RONLY