target = (GList **)(((gchar *)pd->user_struct) + pd->offset);
- if (obj->type != UCL_ARRAY) {
- g_set_error (err,
- CFG_RCL_ERROR,
- EINVAL,
- "an array of strings is expected");
- return FALSE;
+ if (obj->type == UCL_STRING) {
+ /* Just a single string */
+ val = rspamd_mempool_strdup (cfg->cfg_pool,
+ ucl_copy_value_trash (obj));
+ *target = g_list_prepend (*target, val);
}
-
- while ((cur = ucl_iterate_object (obj, &iter, true)) != NULL) {
- switch (cur->type) {
- case UCL_STRING:
- val =
- rspamd_mempool_strdup (cfg->cfg_pool,
- ucl_copy_value_trash (cur));
- break;
- case UCL_INT:
- val = rspamd_mempool_alloc (cfg->cfg_pool, num_str_len);
- rspamd_snprintf (val, num_str_len, "%L", cur->value.iv);
- break;
- case UCL_FLOAT:
- val = rspamd_mempool_alloc (cfg->cfg_pool, num_str_len);
- rspamd_snprintf (val, num_str_len, "%f", cur->value.dv);
- break;
- case UCL_BOOLEAN:
- val = rspamd_mempool_alloc (cfg->cfg_pool, num_str_len);
- rspamd_snprintf (val, num_str_len, "%b", (gboolean)cur->value.iv);
- break;
- default:
- g_set_error (err,
+ else if (obj->type == UCL_ARRAY) {
+
+ while ((cur = ucl_iterate_object (obj, &iter, true)) != NULL) {
+ switch (cur->type) {
+ case UCL_STRING:
+ val =
+ rspamd_mempool_strdup (cfg->cfg_pool,
+ ucl_copy_value_trash (cur));
+ break;
+ case UCL_INT:
+ val = rspamd_mempool_alloc (cfg->cfg_pool, num_str_len);
+ rspamd_snprintf (val, num_str_len, "%L", cur->value.iv);
+ break;
+ case UCL_FLOAT:
+ val = rspamd_mempool_alloc (cfg->cfg_pool, num_str_len);
+ rspamd_snprintf (val, num_str_len, "%f", cur->value.dv);
+ break;
+ case UCL_BOOLEAN:
+ val = rspamd_mempool_alloc (cfg->cfg_pool, num_str_len);
+ rspamd_snprintf (val, num_str_len, "%b", (gboolean)cur->value.iv);
+ break;
+ default:
+ g_set_error (err,
+ CFG_RCL_ERROR,
+ EINVAL,
+ "cannot convert an object or array to string");
+ return FALSE;
+ }
+ *target = g_list_prepend (*target, val);
+ }
+ }
+ else {
+ g_set_error (err,
CFG_RCL_ERROR,
EINVAL,
- "cannot convert an object or array to string");
- return FALSE;
- }
- *target = g_list_prepend (*target, val);
+ "an array of strings is expected");
+ return FALSE;
}
/* Add a destructor */