summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2019-12-22 21:45:49 +0900
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2019-12-22 21:45:49 +0900
commit61a8f2c46ddd10d86e568dd8fe2f533ae31a6c81 (patch)
tree54d7a5166dac61d6f4a41c8a390833fb73ef67a4
parentec13689ff06c08d7ac9b94bf27065e94f36581af (diff)
parentfddbcfc58514509e00b4b7f72d97f344233fde51 (diff)
Merge branch 'master' of ssh://gnunet.org/gnunet
-rw-r--r--src/json/json_helper.c44
1 files changed, 10 insertions, 34 deletions
diff --git a/src/json/json_helper.c b/src/json/json_helper.c
index e7711a03e..a405b8c3b 100644
--- a/src/json/json_helper.c
+++ b/src/json/json_helper.c
@@ -564,7 +564,7 @@ parse_abs_time (void *cls,
json_t *json_t_ms;
unsigned long long int tval;
- if (!json_is_object (root))
+ if (! json_is_object (root))
{
GNUNET_break_op (0);
return GNUNET_SYSERR;
@@ -638,41 +638,17 @@ parse_abs_time_nbo (void *cls,
struct GNUNET_JSON_Specification *spec)
{
struct GNUNET_TIME_AbsoluteNBO *abs = spec->ptr;
- const char *val;
- unsigned long long int tval;
struct GNUNET_TIME_Absolute a;
+ struct GNUNET_JSON_Specification ispec;
- val = json_string_value (root);
- if (NULL == val)
- {
- GNUNET_break_op (0);
- return GNUNET_SYSERR;
- }
- if ((0 == strcasecmp (val,
- "/forever/")) ||
- (0 == strcasecmp (val,
- "/end of time/")) ||
- (0 == strcasecmp (val,
- "/never/")))
- {
- *abs = GNUNET_TIME_absolute_hton (GNUNET_TIME_UNIT_FOREVER_ABS);
- return GNUNET_OK;
- }
- if (1 != sscanf (val,
- "/Date(%llu)/",
- &tval))
- {
- GNUNET_break_op (0);
- return GNUNET_SYSERR;
- }
- /* Time is in seconds in JSON, but in microseconds in GNUNET_TIME_Absolute */
- a.abs_value_us = tval * 1000LL * 1000LL;
- if ((a.abs_value_us) / 1000LL / 1000LL != tval)
- {
- /* Integer overflow */
- GNUNET_break_op (0);
+ ispec = *spec;
+ ispec.parser = &parse_abs_time;
+ ispec.ptr = &a;
+ if (GNUNET_OK !=
+ parse_abs_time (NULL,
+ root,
+ &ispec))
return GNUNET_SYSERR;
- }
*abs = GNUNET_TIME_absolute_hton (a);
return GNUNET_OK;
}
@@ -719,7 +695,7 @@ parse_rel_time (void *cls,
json_t *json_d_ms;
unsigned long long int tval;
- if (!json_is_object (root))
+ if (! json_is_object (root))
{
GNUNET_break_op (0);
return GNUNET_SYSERR;