]> source.dussan.org Git - rspamd.git/commitdiff
Add the parser of double fields.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 29 Aug 2013 14:39:35 +0000 (15:39 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 29 Aug 2013 14:39:35 +0000 (15:39 +0100)
src/cfg_rcl.c
src/cfg_rcl.h

index b59524cfbd2f22eb857f710cb1ca6cec1295e492..942c944a6e55ac3a4a732830009e8651a75a8baa 100644 (file)
@@ -342,3 +342,19 @@ rspamd_rcl_parse_struct_integer (struct config_file *cfg, rspamd_cl_object_t *ob
 
        return TRUE;
 }
+
+gboolean
+rspamd_rcl_parse_struct_double (struct config_file *cfg, rspamd_cl_object_t *obj,
+               gpointer ud, struct rspamd_rcl_section *section, GError **err)
+{
+       struct rspamd_rcl_struct_parser *pd = ud;
+       gdouble *target;
+
+       target = (gdouble *)(((gchar *)pd->user_struct) + pd->offset);
+
+       if (!rspamd_cl_obj_todouble_safe (obj, target)) {
+               g_set_error (err, CFG_RCL_ERROR, EINVAL, "cannot convert param to double");
+       }
+
+       return TRUE;
+}
index 7ee2a4fbbac04961b9a8442b34ea37d0d7e45577..93b9bba7d54aafd9ebbfcae9575a003f9eeec61c 100644 (file)
@@ -92,6 +92,11 @@ struct rspamd_rcl_struct_parser {
        gpointer user_struct;
        goffset offset;
        gsize size;
+#define RSPAMD_CL_FLAG_TIME_FLOAT 0x1 << 0
+#define RSPAMD_CL_FLAG_TIME_TIMEVAL 0x1 << 1
+#define RSPAMD_CL_FLAG_TIME_TIMESPEC 0x1 << 2
+#define RSPAMD_CL_FLAG_TIME_INTEGER 0x1 << 3
+       gint flags;
 };
 
 /**
@@ -119,4 +124,16 @@ gboolean rspamd_rcl_parse_struct_integer (struct config_file *cfg, rspamd_cl_obj
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 
+/**
+ * Parse a float field of a structure
+ * @param cfg config pointer
+ * @param obj object to parse
+ * @param ud struct_parser structure
+ * @param section the current section
+ * @param err error pointer
+ * @return TRUE if a value has been successfully parsed
+ */
+gboolean rspamd_rcl_parse_struct_double (struct config_file *cfg, rspamd_cl_object_t *obj,
+               gpointer ud, struct rspamd_rcl_section *section, GError **err);
+
 #endif /* CFG_RCL_H_ */