@@ -2346,7 +2346,7 @@ rspamd_controller_store_saved_stats (struct rspamd_controller_worker_ctx *ctx) | |||
ucl_object_emit_full (top, UCL_EMIT_JSON_COMPACT, | |||
ucl_object_emit_fd_funcs (fd)); | |||
ucl_object_emit_fd_funcs (fd), NULL); | |||
rspamd_file_unlock (fd, FALSE); | |||
close (fd); |
@@ -1028,7 +1028,7 @@ rspamd_fuzzy_storage_stat (struct rspamd_main *rspamd_main, | |||
obj = rspamd_fuzzy_stat_to_ucl (ctx, TRUE); | |||
emit_subr = ucl_object_emit_fd_funcs (outfd); | |||
ucl_object_emit_full (obj, UCL_EMIT_JSON_COMPACT, emit_subr); | |||
ucl_object_emit_full (obj, UCL_EMIT_JSON_COMPACT, emit_subr, NULL); | |||
ucl_object_emit_funcs_free (emit_subr); | |||
ucl_object_unref (obj); | |||
/* Rewind output file */ |
@@ -290,7 +290,7 @@ dump_dynamic_config (struct rspamd_config *cfg) | |||
} | |||
if (!ucl_object_emit_full (cfg->current_dynamic_conf, UCL_EMIT_JSON, | |||
ucl_object_emit_fd_funcs (fd))) { | |||
ucl_object_emit_fd_funcs (fd), NULL)) { | |||
msg_err ("cannot emit ucl object: %s", strerror (errno)); | |||
close (fd); | |||
return FALSE; |
@@ -372,7 +372,7 @@ rspamd_roll_history_save (struct roll_history *history, const gchar *filename) | |||
} | |||
emitter_func = ucl_object_emit_fd_funcs (fd); | |||
ucl_object_emit_full (obj, UCL_EMIT_JSON_COMPACT, emitter_func); | |||
ucl_object_emit_full (obj, UCL_EMIT_JSON_COMPACT, emitter_func, NULL); | |||
ucl_object_emit_funcs_free (emitter_func); | |||
ucl_object_unref (obj); | |||
@@ -500,7 +500,7 @@ rspamd_symbols_cache_save_items (struct symbols_cache *cache, const gchar *name) | |||
g_assert (f != NULL); | |||
efunc = ucl_object_emit_file_funcs (f); | |||
ret = ucl_object_emit_full (top, UCL_EMIT_JSON_COMPACT, efunc); | |||
ret = ucl_object_emit_full (top, UCL_EMIT_JSON_COMPACT, efunc, NULL); | |||
ucl_object_emit_funcs_free (efunc); | |||
ucl_object_unref (top); | |||
fclose (f); |
@@ -1511,9 +1511,10 @@ rspamd_gstring_append_double (double val, void *ud) | |||
} | |||
void | |||
rspamd_ucl_emit_gstring (const ucl_object_t *obj, | |||
rspamd_ucl_emit_gstring_comments (const ucl_object_t *obj, | |||
enum ucl_emitter emit_type, | |||
GString *target) | |||
GString *target, | |||
const ucl_object_t *comments) | |||
{ | |||
struct ucl_emitter_functions func = { | |||
.ucl_emitter_append_character = rspamd_gstring_append_character, | |||
@@ -1523,7 +1524,7 @@ rspamd_ucl_emit_gstring (const ucl_object_t *obj, | |||
}; | |||
func.ud = target; | |||
ucl_object_emit_full (obj, emit_type, &func); | |||
ucl_object_emit_full (obj, emit_type, &func, comments); | |||
} | |||
/* | |||
@@ -1579,9 +1580,10 @@ rspamd_fstring_emit_append_double (double val, void *ud) | |||
} | |||
void | |||
rspamd_ucl_emit_fstring (const ucl_object_t *obj, | |||
rspamd_ucl_emit_fstring_comments (const ucl_object_t *obj, | |||
enum ucl_emitter emit_type, | |||
rspamd_fstring_t **buf) | |||
rspamd_fstring_t **buf, | |||
const ucl_object_t *comments) | |||
{ | |||
struct ucl_emitter_functions func = { | |||
.ucl_emitter_append_character = rspamd_fstring_emit_append_character, | |||
@@ -1591,5 +1593,5 @@ rspamd_ucl_emit_fstring (const ucl_object_t *obj, | |||
}; | |||
func.ud = buf; | |||
ucl_object_emit_full (obj, emit_type, &func); | |||
ucl_object_emit_full (obj, emit_type, &func, comments); | |||
} |
@@ -260,24 +260,33 @@ goffset rspamd_substring_search_caseless (const gchar *in, gsize inlen, | |||
*/ | |||
goffset rspamd_string_find_eoh (GString *input); | |||
#define rspamd_ucl_emit_gstring(o, t, target) \ | |||
rspamd_ucl_emit_gstring_comments((o), (t), (target), NULL) | |||
/** | |||
* Emit UCL object to gstring | |||
* @param obj object to emit | |||
* @param emit_type emitter type | |||
* @param comments optional comments object | |||
* @param target target string | |||
*/ | |||
void rspamd_ucl_emit_gstring (const ucl_object_t *obj, | |||
void rspamd_ucl_emit_gstring_comments (const ucl_object_t *obj, | |||
enum ucl_emitter emit_type, | |||
GString *target); | |||
GString *target, | |||
const ucl_object_t *comments); | |||
#define rspamd_ucl_emit_fstring(o, t, target) \ | |||
rspamd_ucl_emit_fstring_comments((o), (t), (target), NULL) | |||
/** | |||
* Emit UCL object to fstring | |||
* @param obj object to emit | |||
* @param emit_type emitter type | |||
* * @param comments optional comments object | |||
* @param target target string | |||
*/ | |||
void rspamd_ucl_emit_fstring (const ucl_object_t *obj, | |||
void rspamd_ucl_emit_fstring_comments (const ucl_object_t *obj, | |||
enum ucl_emitter emit_type, | |||
rspamd_fstring_t **target); | |||
rspamd_fstring_t **target, | |||
const ucl_object_t *comments); | |||
#endif /* SRC_LIBUTIL_STR_UTIL_H_ */ |
@@ -122,7 +122,7 @@ rspamadm_keypair (gint argc, gchar **argv) | |||
if (ucl) { | |||
ucl_out = rspamd_keypair_to_ucl (kp, hex_encode); | |||
ucl_emit_subr = ucl_object_emit_file_funcs (stdout); | |||
ucl_object_emit_full (ucl_out, UCL_EMIT_CONFIG, ucl_emit_subr); | |||
ucl_object_emit_full (ucl_out, UCL_EMIT_CONFIG, ucl_emit_subr, NULL); | |||
ucl_object_emit_funcs_free (ucl_emit_subr); | |||
ucl_object_unref (ucl_out); | |||
} |