summaryrefslogtreecommitdiff
path: root/ais_json.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2011-05-03 19:59:18 -0400
committerEric S. Raymond <esr@thyrsus.com>2011-05-03 19:59:18 -0400
commit2d2e16ff037714c85ad10787e8b7c164133864ea (patch)
tree3d0fdeb565470e41a32002c453fead3f9ea2d182 /ais_json.c
parentf7dc6dea0197230de501bea890aa13a8b07c356c (diff)
downloadgpsd-2d2e16ff037714c85ad10787e8b7c164133864ea.tar.gz
Fix minor breakage reported by Beat Boolli. All regression tests pass.
Diffstat (limited to 'ais_json.c')
-rw-r--r--ais_json.c170
1 files changed, 87 insertions, 83 deletions
diff --git a/ais_json.c b/ais_json.c
index 2dbf27ed..eb1211d2 100644
--- a/ais_json.c
+++ b/ais_json.c
@@ -109,77 +109,79 @@ int json_ais_read(const char *buf,
}
} else if (strstr(buf, "\"type\":6,") != NULL) {
bool imo = false;
- if (strstr(buf, "\"fid\":12,") != NULL) {
- status = json_read_object(buf, json_ais6_fid12, endptr);
- if (status == 0) {
- ais->type6.dac1fid12.lmonth = AIS_MONTH_NOT_AVAILABLE;
- ais->type6.dac1fid12.lday = AIS_DAY_NOT_AVAILABLE;
- ais->type6.dac1fid12.lhour = AIS_HOUR_NOT_AVAILABLE;
- ais->type6.dac1fid12.lminute = AIS_MINUTE_NOT_AVAILABLE;
- (void)sscanf(departure, "%02u-%02uT%02u:%02uZ",
- &ais->type6.dac1fid12.lmonth,
- &ais->type6.dac1fid12.lday,
- &ais->type6.dac1fid12.lhour,
- &ais->type6.dac1fid12.lminute);
- ais->type6.dac1fid12.nmonth = AIS_MONTH_NOT_AVAILABLE;
- ais->type6.dac1fid12.nday = AIS_DAY_NOT_AVAILABLE;
- ais->type6.dac1fid12.nhour = AIS_HOUR_NOT_AVAILABLE;
- ais->type6.dac1fid12.nminute = AIS_MINUTE_NOT_AVAILABLE;
- (void)sscanf(eta, "%02u-%02uT%02u:%02uZ",
- &ais->type6.dac1fid12.nmonth,
- &ais->type6.dac1fid12.nday,
- &ais->type6.dac1fid12.nhour,
- &ais->type6.dac1fid12.nminute);
+ if (strstr(buf, "\"dac\":1,") != NULL) {
+ if (strstr(buf, "\"fid\":12,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid12, endptr);
+ if (status == 0) {
+ ais->type6.dac1fid12.lmonth = AIS_MONTH_NOT_AVAILABLE;
+ ais->type6.dac1fid12.lday = AIS_DAY_NOT_AVAILABLE;
+ ais->type6.dac1fid12.lhour = AIS_HOUR_NOT_AVAILABLE;
+ ais->type6.dac1fid12.lminute = AIS_MINUTE_NOT_AVAILABLE;
+ (void)sscanf(departure, "%02u-%02uT%02u:%02uZ",
+ &ais->type6.dac1fid12.lmonth,
+ &ais->type6.dac1fid12.lday,
+ &ais->type6.dac1fid12.lhour,
+ &ais->type6.dac1fid12.lminute);
+ ais->type6.dac1fid12.nmonth = AIS_MONTH_NOT_AVAILABLE;
+ ais->type6.dac1fid12.nday = AIS_DAY_NOT_AVAILABLE;
+ ais->type6.dac1fid12.nhour = AIS_HOUR_NOT_AVAILABLE;
+ ais->type6.dac1fid12.nminute = AIS_MINUTE_NOT_AVAILABLE;
+ (void)sscanf(eta, "%02u-%02uT%02u:%02uZ",
+ &ais->type6.dac1fid12.nmonth,
+ &ais->type6.dac1fid12.nday,
+ &ais->type6.dac1fid12.nhour,
+ &ais->type6.dac1fid12.nminute);
+ }
+ imo = true;
}
- imo = true;
- }
- else if (strstr(buf, "\"fid\":15,") != NULL) {
- status = json_read_object(buf, json_ais6_fid15, endptr);
- imo = true;
- }
- else if (strstr(buf, "\"fid\":16,") != NULL) {
- status = json_read_object(buf, json_ais6_fid16, endptr);
- imo = true;
- }
- else if (strstr(buf, "\"fid\":18,") != NULL || strstr(buf, "\"fid\":11,") != NULL) {
- status = json_read_object(buf, json_ais6_fid18, endptr);
- if (status == 0) {
- ais->type6.dac1fid18.day = AIS_DAY_NOT_AVAILABLE;
- ais->type6.dac1fid18.hour = AIS_HOUR_NOT_AVAILABLE;
- ais->type6.dac1fid18.minute = AIS_MINUTE_NOT_AVAILABLE;
- (void)sscanf(arrival, "%02uT%02u:%02uZ",
- &ais->type6.dac1fid18.day,
- &ais->type6.dac1fid18.hour,
- &ais->type6.dac1fid18.minute);
+ else if (strstr(buf, "\"fid\":15,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid15, endptr);
+ imo = true;
}
- imo = true;
- }
- else if (strstr(buf, "\"fid\":20,") != NULL) {
- status = json_read_object(buf, json_ais6_fid20, endptr);
- if (status == 0) {
- ais->type6.dac1fid20.month = AIS_MONTH_NOT_AVAILABLE;
- ais->type6.dac1fid20.day = AIS_DAY_NOT_AVAILABLE;
- ais->type6.dac1fid20.hour = AIS_HOUR_NOT_AVAILABLE;
- ais->type6.dac1fid20.minute = AIS_MINUTE_NOT_AVAILABLE;
- (void)sscanf(arrival, "%02u-%02uT%02u:%02uZ",
- &ais->type6.dac1fid20.month,
- &ais->type6.dac1fid20.day,
- &ais->type6.dac1fid20.hour,
- &ais->type6.dac1fid20.minute);
+ else if (strstr(buf, "\"fid\":16,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid16, endptr);
+ imo = true;
+ }
+ else if (strstr(buf, "\"fid\":18,") != NULL || strstr(buf, "\"fid\":11,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid18, endptr);
+ if (status == 0) {
+ ais->type6.dac1fid18.day = AIS_DAY_NOT_AVAILABLE;
+ ais->type6.dac1fid18.hour = AIS_HOUR_NOT_AVAILABLE;
+ ais->type6.dac1fid18.minute = AIS_MINUTE_NOT_AVAILABLE;
+ (void)sscanf(arrival, "%02uT%02u:%02uZ",
+ &ais->type6.dac1fid18.day,
+ &ais->type6.dac1fid18.hour,
+ &ais->type6.dac1fid18.minute);
+ }
+ imo = true;
+ }
+ else if (strstr(buf, "\"fid\":20,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid20, endptr);
+ if (status == 0) {
+ ais->type6.dac1fid20.month = AIS_MONTH_NOT_AVAILABLE;
+ ais->type6.dac1fid20.day = AIS_DAY_NOT_AVAILABLE;
+ ais->type6.dac1fid20.hour = AIS_HOUR_NOT_AVAILABLE;
+ ais->type6.dac1fid20.minute = AIS_MINUTE_NOT_AVAILABLE;
+ (void)sscanf(arrival, "%02u-%02uT%02u:%02uZ",
+ &ais->type6.dac1fid20.month,
+ &ais->type6.dac1fid20.day,
+ &ais->type6.dac1fid20.hour,
+ &ais->type6.dac1fid20.minute);
+ }
+ imo = true;
+ }
+ else if (strstr(buf, "\"fid\":25,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid25, endptr);
+ imo = true;
+ }
+ else if (strstr(buf, "\"fid\":32,") != NULL || strstr(buf, "\"fid\":14,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid32, endptr);
+ imo = true;
+ }
+ else if (strstr(buf, "\"fid\":30,") != NULL) {
+ status = json_read_object(buf, json_ais6_fid30, endptr);
+ imo = true;
}
- imo = true;
- }
- else if (strstr(buf, "\"fid\":25,") != NULL) {
- status = json_read_object(buf, json_ais6_fid25, endptr);
- imo = true;
- }
- else if (strstr(buf, "\"fid\":32,") != NULL || strstr(buf, "\"fid\":14,") != NULL) {
- status = json_read_object(buf, json_ais6_fid32, endptr);
- imo = true;
- }
- else if (strstr(buf, "\"fid\":30,") != NULL) {
- status = json_read_object(buf, json_ais6_fid30, endptr);
- imo = true;
}
if (!imo) {
status = json_read_object(buf, json_ais6, endptr);
@@ -192,22 +194,24 @@ int json_ais_read(const char *buf,
status = json_read_object(buf, json_ais7, endptr);
} else if (strstr(buf, "\"type\":8,") != NULL) {
bool imo = false;
- if (strstr(buf, "\"fid\":29,") != NULL) {
- status = json_read_object(buf, json_ais8_fid29, endptr);
- imo = true;
- }
- else if (strstr(buf, "\"fid\":31,") != NULL || strstr(buf, "\"fid\":11,") != NULL) {
- status = json_read_object(buf, json_ais8_fid31, endptr);
- if (status == 0) {
- ais->type8.dac1fid31.day = AIS_DAY_NOT_AVAILABLE;
- ais->type8.dac1fid31.hour = AIS_HOUR_NOT_AVAILABLE;
- ais->type8.dac1fid31.minute = AIS_MINUTE_NOT_AVAILABLE;
- (void)sscanf(eta, "%02uT%02u:%02uZ",
- &ais->type8.dac1fid31.day,
- &ais->type8.dac1fid31.hour,
- &ais->type8.dac1fid31.minute);
+ if (strstr(buf, "\"dac\":1,") != NULL) {
+ if (strstr(buf, "\"fid\":29,") != NULL) {
+ status = json_read_object(buf, json_ais8_fid29, endptr);
+ imo = true;
+ }
+ else if (strstr(buf, "\"fid\":31,") != NULL || strstr(buf, "\"fid\":11,") != NULL) {
+ status = json_read_object(buf, json_ais8_fid31, endptr);
+ if (status == 0) {
+ ais->type8.dac1fid31.day = AIS_DAY_NOT_AVAILABLE;
+ ais->type8.dac1fid31.hour = AIS_HOUR_NOT_AVAILABLE;
+ ais->type8.dac1fid31.minute = AIS_MINUTE_NOT_AVAILABLE;
+ (void)sscanf(eta, "%02uT%02u:%02uZ",
+ &ais->type8.dac1fid31.day,
+ &ais->type8.dac1fid31.hour,
+ &ais->type8.dac1fid31.minute);
+ }
+ imo = true;
}
- imo = true;
}
if (!imo) {
status = json_read_object(buf, json_ais8, endptr);