diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-18 11:12:26 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-10-18 11:12:26 +0100 |
commit | 9b575a25a25d5f2956ec4bf8e37080b17c65cafd (patch) | |
tree | 6214f977218f928bc68e362a3d751c9c2f9cb50a /src | |
parent | 8b5047b8d3b870bfdff476efd53e0397272bdee8 (diff) | |
download | rspamd-9b575a25a25d5f2956ec4bf8e37080b17c65cafd.tar.gz rspamd-9b575a25a25d5f2956ec4bf8e37080b17c65cafd.zip |
Use stdio buffering to save symbols cache.
Diffstat (limited to 'src')
-rw-r--r-- | src/libserver/symbols_cache.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libserver/symbols_cache.c b/src/libserver/symbols_cache.c index 927e84cd5..df1c316a4 100644 --- a/src/libserver/symbols_cache.c +++ b/src/libserver/symbols_cache.c @@ -463,6 +463,7 @@ rspamd_symbols_cache_save_items (struct symbols_cache *cache, const gchar *name) struct ucl_emitter_functions *efunc; gpointer k, v; gint fd; + FILE *f; bool ret; fd = open (name, O_CREAT | O_TRUNC | O_WRONLY, 00644); @@ -503,10 +504,13 @@ rspamd_symbols_cache_save_items (struct symbols_cache *cache, const gchar *name) ucl_object_insert_key (top, elt, k, 0, false); } - efunc = ucl_object_emit_fd_funcs (fd); + f = fdopen (fd, "a"); + g_assert (f != NULL); + + efunc = ucl_object_emit_file_funcs (f); ret = ucl_object_emit_full (top, UCL_EMIT_JSON_COMPACT, efunc); ucl_object_emit_funcs_free (efunc); - close (fd); + fclose (f); return ret; } |