JSONLiteralType json_reader_literal(JSONParser *p) {
const char *l = p->reader_token.content;
- if(!strcmp(l, "true")) {
+ size_t token_len = p->reader_token.length;
+ if(token_len == 4 && !memcmp(l, "true", 4)) {
return JSON_TRUE;
- } else if(!strcmp(l, "false")) {
+ } else if(token_len == 5 && !memcmp(l, "false", 5)) {
return JSON_FALSE;
}
return JSON_NULL;
}
free(value);
}
+
+int json_strcmp(JSONValue *jsstr, const char *str) {
+ return json_strncmp(jsstr, str, strlen(str));
+}
+
+int json_strncmp(JSONValue *jsstr, const char *str, size_t slen) {
+ if(jsstr->type != JSON_STRING) {
+ return -1;
+ }
+ size_t jsstrlen = jsstr->value.string.length;
+
+ if(jsstrlen != slen) {
+ return jsstrlen > slen ? 1 : -1;
+ }
+
+ return memcmp(jsstr->value.string.string, str, slen);
+}