mirror of
https://github.com/DaveGamble/cJSON.git
synced 2023-08-10 21:13:26 +03:00
simplify and rename cJSON_strcasecmp
Two NULL strings should not be considered equal for the purpose of cJSON.
This commit is contained in:
parent
31400affab
commit
e9803341d5
28
cJSON.c
28
cJSON.c
@ -70,25 +70,19 @@ CJSON_PUBLIC(const char*) cJSON_Version(void)
|
|||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* case insensitive strcmp */
|
/* Case insensitive string comparison, doesn't consider two NULL pointers equal though */
|
||||||
static int cJSON_strcasecmp(const unsigned char *string1, const unsigned char *string2)
|
static int case_insensitive_strcmp(const unsigned char *string1, const unsigned char *string2)
|
||||||
{
|
{
|
||||||
if (string1 == NULL)
|
if ((string1 == NULL) || (string2 == NULL))
|
||||||
{
|
{
|
||||||
if (string2 == NULL)
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (string1 == string2)
|
||||||
{
|
{
|
||||||
/* both NULL */
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string2 == NULL)
|
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++)
|
for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++)
|
||||||
{
|
{
|
||||||
if (*string1 == '\0')
|
if (*string1 == '\0')
|
||||||
@ -97,7 +91,7 @@ static int cJSON_strcasecmp(const unsigned char *string1, const unsigned char *s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return tolower(string1[0]) - tolower(string2[0]);
|
return tolower(*string1) - tolower(*string2);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct internal_hooks
|
typedef struct internal_hooks
|
||||||
@ -1686,7 +1680,7 @@ CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int item)
|
|||||||
CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON *object, const char *string)
|
CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON *object, const char *string)
|
||||||
{
|
{
|
||||||
cJSON *c = object ? object->child : NULL;
|
cJSON *c = object ? object->child : NULL;
|
||||||
while (c && cJSON_strcasecmp((unsigned char*)c->string, (const unsigned char*)string))
|
while (c && !case_insensitive_strcmp((unsigned char*)c->string, (const unsigned char*)string))
|
||||||
{
|
{
|
||||||
c = c->next;
|
c = c->next;
|
||||||
}
|
}
|
||||||
@ -1860,7 +1854,7 @@ CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *stri
|
|||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
cJSON *c = object->child;
|
cJSON *c = object->child;
|
||||||
while (c && cJSON_strcasecmp((unsigned char*)c->string, (const unsigned char*)string))
|
while (c && !case_insensitive_strcmp((unsigned char*)c->string, (const unsigned char*)string))
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
c = c->next;
|
c = c->next;
|
||||||
@ -1948,7 +1942,7 @@ CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object, const char *string,
|
|||||||
{
|
{
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
cJSON *c = object->child;
|
cJSON *c = object->child;
|
||||||
while(c && cJSON_strcasecmp((unsigned char*)c->string, (const unsigned char*)string))
|
while(c && !case_insensitive_strcmp((unsigned char*)c->string, (const unsigned char*)string))
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
c = c->next;
|
c = c->next;
|
||||||
|
Loading…
Reference in New Issue
Block a user