summaryrefslogtreecommitdiff
path: root/shared_json.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-03-24 07:19:29 -0400
committerEric S. Raymond <esr@thyrsus.com>2011-03-24 07:19:29 -0400
commitc22f945bab851e460443989d04f60b81a0573f0c (patch)
treec9989f9f703a8410dc810bf3420d40904caa4d27 /shared_json.c
parent59a7492ebc2452a50cd9655c03818a53ff2372ef (diff)
downloadgpsd-c22f945bab851e460443989d04f60b81a0573f0c.tar.gz
DEVICE::activated becomes an ISO8601 timestamp.
Diffstat (limited to 'shared_json.c')
-rw-r--r--shared_json.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/shared_json.c b/shared_json.c
index b20a184e..b685b8cc 100644
--- a/shared_json.c
+++ b/shared_json.c
@@ -25,6 +25,7 @@ int json_device_read(const char *buf,
/*@out@*/ struct devconfig_t *dev,
/*@null@*/ const char **endptr)
{
+ char tbuf[JSON_DATE_MAX+1];
/*@ -fullinitblock @*/
/* *INDENT-OFF* */
const struct json_attr_t json_attrs_device[] = {
@@ -32,6 +33,8 @@ int json_device_read(const char *buf,
{"path", t_string, .addr.string = dev->path,
.len = sizeof(dev->path)},
+ {"activated", t_string, .addr.string = tbuf,
+ .len = sizeof(tbuf)},
{"activated", t_real, .addr.real = &dev->activated},
{"flags", t_integer, .addr.integer = &dev->flags},
{"driver", t_string, .addr.string = dev->driver,
@@ -60,6 +63,15 @@ int json_device_read(const char *buf,
if (status != 0)
return status;
+ /*@-usedef@*/
+ if (isnan(dev->activated)!=0) {
+ if (tbuf[0] == '\0')
+ dev->activated = NAN;
+ else
+ dev->activated = iso8601_to_unix(tbuf);
+ }
+ /*@+usedef@*/
+
return 0;
}