diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-12-10 17:18:45 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-12-10 17:18:45 +0000 |
commit | 39982e6edb93eb9fc236fc45837d70e1fa2dea96 (patch) | |
tree | c6bd30aa1e4674aa67ef7cc2f761fc022b17ac22 /src/client/rspamc.c | |
parent | 335ab27a5f6c0f393248d5b545c075f60d4cb623 (diff) | |
download | rspamd-39982e6edb93eb9fc236fc45837d70e1fa2dea96.tar.gz rspamd-39982e6edb93eb9fc236fc45837d70e1fa2dea96.zip |
Sort symbols in rspamc output
Diffstat (limited to 'src/client/rspamc.c')
-rw-r--r-- | src/client/rspamc.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/client/rspamc.c b/src/client/rspamc.c index 448bd0795..1968aed34 100644 --- a/src/client/rspamc.c +++ b/src/client/rspamc.c @@ -502,6 +502,14 @@ rspamc_symbol_output (FILE *out, const ucl_object_t *obj) rspamd_fprintf (out, "\n"); } +static gint +rspamc_symbols_sort_func (gconstpointer a, gconstpointer b) +{ + ucl_object_t * const *ua = a, * const *ub = b; + + return strcmp (ucl_object_key (*ua), ucl_object_key (*ub)); +} + static void rspamc_metric_output (FILE *out, const ucl_object_t *obj) { @@ -509,7 +517,10 @@ rspamc_metric_output (FILE *out, const ucl_object_t *obj) const ucl_object_t *cur; gdouble score = 0, required_score = 0; gint got_scores = 0; + GPtrArray *sym_ptr; + guint i; + sym_ptr = g_ptr_array_new (); rspamd_fprintf (out, "[Metric: %s]\n", ucl_object_key (obj)); while ((cur = ucl_iterate_object (obj, &it, true)) != NULL) { @@ -530,7 +541,7 @@ rspamc_metric_output (FILE *out, const ucl_object_t *obj) rspamd_fprintf (out, "Action: %s\n", ucl_object_tostring (cur)); } else if (cur->type == UCL_OBJECT) { - rspamc_symbol_output (out, cur); + g_ptr_array_add (sym_ptr, (void *)cur); } if (got_scores == 2) { rspamd_fprintf (out, @@ -540,6 +551,15 @@ rspamc_metric_output (FILE *out, const ucl_object_t *obj) got_scores = 0; } } + + g_ptr_array_sort (sym_ptr, rspamc_symbols_sort_func); + + for (i = 0; i < sym_ptr->len; i ++) { + cur = (const ucl_object_t *)g_ptr_array_index (sym_ptr, i); + rspamc_symbol_output (out, cur); + } + + g_ptr_array_free (sym_ptr, TRUE); } static void |