summaryrefslogtreecommitdiffstats
path: root/src/protocol.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2014-01-28 16:22:17 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2014-01-28 16:22:17 +0000
commit149fad4a73a71ef670be9a01741a52efd76e35e6 (patch)
treed0dff47a6eec7b0193a26252135280f0426b9bcd /src/protocol.c
parent26ede9ee72ced3e2b40123ab50bd0a518a8a6288 (diff)
downloadrspamd-149fad4a73a71ef670be9a01741a52efd76e35e6.tar.gz
rspamd-149fad4a73a71ef670be9a01741a52efd76e35e6.zip
Make gstring emitting generic.
Diffstat (limited to 'src/protocol.c')
-rw-r--r--src/protocol.c72
1 files changed, 2 insertions, 70 deletions
diff --git a/src/protocol.c b/src/protocol.c
index 2b7f03b5b..345723fb9 100644
--- a/src/protocol.c
+++ b/src/protocol.c
@@ -650,68 +650,6 @@ rspamd_metric_result_ucl (struct worker_task *task, struct metric_result *mres,
return obj;
}
-/*
- * GString ucl emitting functions
- */
-static int
-rspamd_gstring_append_character (unsigned char c, size_t len, void *ud)
-{
- GString *buf = ud;
-
- if (len == 1) {
- g_string_append_c (buf, c);
- }
- else {
- if (buf->allocated_len - buf->len <= len) {
- g_string_set_size (buf, buf->len + len + 1);
- }
- memset (&buf->str[buf->len], c, len);
- buf->len += len;
- buf->str[buf->len] = '\0';
- }
-
- return 0;
-}
-
-static int
-rspamd_gstring_append_len (const unsigned char *str, size_t len, void *ud)
-{
- GString *buf = ud;
-
- g_string_append_len (buf, str, len);
-
- return 0;
-}
-
-static int
-rspamd_gstring_append_int (int64_t val, void *ud)
-{
- GString *buf = ud;
-
- rspamd_printf_gstring (buf, "%L", (intmax_t)val);
- return 0;
-}
-
-static int
-rspamd_gstring_append_double (double val, void *ud)
-{
- GString *buf = ud;
- const double delta = 0.0000001;
-
- if (val == (double)(int)val) {
- rspamd_printf_gstring (buf, "%.1f", val);
- }
- else if (fabs (val - (double)(int)val) < delta) {
- /* Write at maximum precision */
- rspamd_printf_gstring (buf, "%.*g", DBL_DIG, val);
- }
- else {
- rspamd_printf_gstring (buf, "%f", val);
- }
-
- return 0;
-}
-
static void
write_check_reply (struct rspamd_http_message *msg, struct worker_task *task)
{
@@ -720,12 +658,6 @@ write_check_reply (struct rspamd_http_message *msg, struct worker_task *task)
GHashTableIter hiter;
gpointer h, v;
ucl_object_t *top = NULL, *obj;
- struct ucl_emitter_functions func = {
- .ucl_emitter_append_character = rspamd_gstring_append_character,
- .ucl_emitter_append_len = rspamd_gstring_append_len,
- .ucl_emitter_append_int = rspamd_gstring_append_int,
- .ucl_emitter_append_double = rspamd_gstring_append_double
- };
/* Output the first line - check status */
logbuf = g_string_sized_new (BUFSIZ);
@@ -762,8 +694,8 @@ write_check_reply (struct rspamd_http_message *msg, struct worker_task *task)
g_string_free (logbuf, TRUE);
msg->body = g_string_sized_new (BUFSIZ);
- func.ud = msg->body;
- ucl_object_emit_full (top, UCL_EMIT_JSON_COMPACT, &func);
+
+ rspamd_ucl_emit_gstring (top, UCL_EMIT_JSON_COMPACT, msg->body);
ucl_object_unref (top);
/* Increase counters */