aboutsummaryrefslogtreecommitdiffstats
path: root/epan/ftypes/ftype-time.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/ftypes/ftype-time.c')
-rw-r--r--epan/ftypes/ftype-time.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/epan/ftypes/ftype-time.c b/epan/ftypes/ftype-time.c
new file mode 100644
index 0000000000..6eb2a3d4cb
--- /dev/null
+++ b/epan/ftypes/ftype-time.c
@@ -0,0 +1,78 @@
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <ftypes-int.h>
+
+static void
+ftype_from_tvbuff(field_info *fi, tvbuff_t *tvb, int start, int length,
+ gboolean little_endian)
+{
+ /* XXX */
+ g_assert_not_reached();
+}
+
+
+static void
+time_fvalue_new(fvalue_t *fv)
+{
+ fv->value.time.tv_sec = 0;
+ fv->value.time.tv_usec = 0;
+}
+
+static void
+time_fvalue_set(fvalue_t *fv, gpointer value, gboolean already_copied)
+{
+ g_assert(!already_copied);
+ memcpy(&(fv->value.time), value, sizeof(struct timeval));
+}
+
+static gpointer
+value_get(fvalue_t *fv)
+{
+ return &(fv->value.time);
+}
+
+void
+ftype_register_time(void)
+{
+
+ static ftype_t abstime_type = {
+ "FT_ABSOLUTE_TIME",
+ "date/time",
+ 0,
+ time_fvalue_new,
+ NULL,
+ ftype_from_tvbuff,
+ NULL,
+
+ time_fvalue_set,
+ NULL,
+ NULL,
+
+ value_get,
+ NULL,
+ NULL
+ };
+ static ftype_t reltime_type = {
+ "FT_RELATIVE_TIME",
+ "time offset",
+ 0,
+ time_fvalue_new,
+ NULL,
+ ftype_from_tvbuff,
+ NULL,
+
+ time_fvalue_set,
+ NULL,
+ NULL,
+
+ value_get,
+ NULL,
+ NULL
+ };
+
+ ftype_register(FT_ABSOLUTE_TIME, &abstime_type);
+ ftype_register(FT_RELATIVE_TIME, &reltime_type);
+}