From ea49c6589c358d5da0d46628d8f95715659f99a4 Mon Sep 17 00:00:00 2001
From: Zbigniew Chyla <zbigniew.chyla@nsn.com>
Date: Fri, 16 Jan 2015 15:46:59 +0100
Subject: [PATCH 03/10] Use str_starts_with instead of local macro.

This change doesn't affect generated binary code.
---
 libgps_json.c | 29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/libgps_json.c b/libgps_json.c
index d7d0c67..c479f29 100644
--- a/libgps_json.c
+++ b/libgps_json.c
@@ -20,6 +20,7 @@ PERMISSIONS
 #include <stddef.h>
 
 #include "gpsd.h"
+#include "strfuncs.h"
 #ifdef SOCKET_EXPORT_ENABLE
 #include "gps_json.h"
 
@@ -395,8 +396,7 @@ int libgps_json_unpack(const char *buf,
 
     if (classtag == NULL)
 	return -1;
-#define STARTSWITH(str, prefix)	strncmp(str, prefix, strlen(prefix))==0
-    if (STARTSWITH(classtag, "\"class\":\"TPV\"")) {
+    if (str_starts_with(classtag, "\"class\":\"TPV\"")) {
 	status = json_tpv_read(buf, gpsdata, end);
 	gpsdata->status = STATUS_FIX;
 	gpsdata->set = STATUS_SET;
@@ -429,45 +429,45 @@ int libgps_json_unpack(const char *buf,
 	if (gpsdata->fix.mode != MODE_NOT_SEEN)
 	    gpsdata->set |= MODE_SET;
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"GST\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"GST\"")) {
 	status = json_noise_read(buf, gpsdata, end);
 	if (status == 0) {
 	    gpsdata->set &= ~UNION_SET;
 	    gpsdata->set |= GST_SET;
 	}
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"SKY\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"SKY\"")) {
 	status = json_sky_read(buf, gpsdata, end);
 	if (status == 0)
 	    gpsdata->set |= SATELLITE_SET;
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"ATT\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"ATT\"")) {
 	status = json_att_read(buf, gpsdata, end);
 	if (status == 0) {
 	    gpsdata->set &= ~UNION_SET;
 	    gpsdata->set |= ATTITUDE_SET;
 	}
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"DEVICES\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"DEVICES\"")) {
 	status = json_devicelist_read(buf, gpsdata, end);
 	if (status == 0) {
 	    gpsdata->set &= ~UNION_SET;
 	    gpsdata->set |= DEVICELIST_SET;
 	}
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"DEVICE\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"DEVICE\"")) {
 	status = json_device_read(buf, &gpsdata->dev, end);
 	if (status == 0)
 	    gpsdata->set |= DEVICE_SET;
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"WATCH\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"WATCH\"")) {
 	status = json_watch_read(buf, &gpsdata->policy, end);
 	if (status == 0) {
 	    gpsdata->set &= ~UNION_SET;
 	    gpsdata->set |= POLICY_SET;
 	}
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"VERSION\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"VERSION\"")) {
 	status = json_version_read(buf, gpsdata, end);
 	if (status ==  0) {
 	    gpsdata->set &= ~UNION_SET;
@@ -475,7 +475,7 @@ int libgps_json_unpack(const char *buf,
 	}
 	return status;
 #ifdef RTCM104V2_ENABLE
-    } else if (STARTSWITH(classtag, "\"class\":\"RTCM2\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"RTCM2\"")) {
 	status = json_rtcm2_read(buf,
 				 gpsdata->dev.path, sizeof(gpsdata->dev.path),
 				 &gpsdata->rtcm2, end);
@@ -486,7 +486,7 @@ int libgps_json_unpack(const char *buf,
 	return status;
 #endif /* RTCM104V2_ENABLE */
 #ifdef RTCM104V3_ENABLE
-    } else if (STARTSWITH(classtag, "\"class\":\"RTCM3\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"RTCM3\"")) {
 	status = json_rtcm3_read(buf,
 				 gpsdata->dev.path, sizeof(gpsdata->dev.path),
 				 &gpsdata->rtcm3, end);
@@ -497,7 +497,7 @@ int libgps_json_unpack(const char *buf,
 	return status;
 #endif /* RTCM104V3_ENABLE */
 #ifdef AIVDM_ENABLE
-    } else if (STARTSWITH(classtag, "\"class\":\"AIS\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"AIS\"")) {
 	status = json_ais_read(buf,
 			       gpsdata->dev.path, sizeof(gpsdata->dev.path),
 			       &gpsdata->ais, end);
@@ -507,14 +507,14 @@ int libgps_json_unpack(const char *buf,
 	}
 	return status;
 #endif /* AIVDM_ENABLE */
-    } else if (STARTSWITH(classtag, "\"class\":\"ERROR\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"ERROR\"")) {
 	status = json_error_read(buf, gpsdata, end);
 	if (status == 0) {
 	    gpsdata->set &= ~UNION_SET;
 	    gpsdata->set |= ERROR_SET;
 	}
 	return status;
-    } else if (STARTSWITH(classtag, "\"class\":\"PPS\"")) {
+    } else if (str_starts_with(classtag, "\"class\":\"PPS\"")) {
 	status = json_pps_read(buf, gpsdata, end);
 	if (status == 0) {
 	    gpsdata->set &= ~UNION_SET;
@@ -523,7 +523,6 @@ int libgps_json_unpack(const char *buf,
 	return status;
     } else
 	return -1;
-#undef STARTSWITH
 }
 
 /*@+compdef@*/
-- 
2.1.4

