Turn string_is_equal_noncase into self-contained function

This commit is contained in:
twinaphex 2017-04-21 14:17:47 +02:00
parent 76788d3890
commit 607ae71259
4 changed files with 31 additions and 8 deletions

View File

@ -745,13 +745,13 @@ bool config_get_bool(config_file_t *conf, const char *key, bool *in)
if (entry)
{
if (strcasecmp(entry->value, "true") == 0)
if (string_is_equal_noncase(entry->value, "true"))
*in = true;
else if (strcasecmp(entry->value, "1") == 0)
else if (string_is_equal_noncase(entry->value, "1"))
*in = true;
else if (strcasecmp(entry->value, "false") == 0)
else if (string_is_equal_noncase(entry->value, "false"))
*in = false;
else if (strcasecmp(entry->value, "0") == 0)
else if (string_is_equal_noncase(entry->value, "0"))
*in = false;
else
return false;

View File

@ -25,6 +25,7 @@
#include <stdlib.h>
#include <stddef.h>
#include <ctype.h>
#include <string.h>
#include <boolean.h>
@ -49,7 +50,27 @@ static INLINE bool string_is_equal(const char *a, const char *b)
static INLINE bool string_is_equal_noncase(const char *a, const char *b)
{
return (a && b) ? (strcasecmp(a, b) == 0) : false;
bool ret;
int i;
char *cp1, *cp2;
if (!a || !b)
return false;
cp1 = (char*)malloc(strlen(a) + 1);
cp2 = (char*)malloc(strlen(b) + 1);
for (i = 0; i < strlen(a) + 1; i++)
cp1[i] = tolower((int) (unsigned char) a[i]);
for (i = 0; i < strlen(b) + 1; i++)
cp2[i] = tolower((int) (unsigned char) b[i]);
ret = string_is_equal(cp1, cp2);
free(cp1);
free(cp2);
return ret;
}
char *string_to_upper(char *s);

View File

@ -27,6 +27,7 @@
#include <retro_assert.h>
#include <retro_common.h>
#include <lists/file_list.h>
#include <string/stdstring.h>
#include <compat/strcasestr.h>
/**

View File

@ -28,6 +28,7 @@
#include <retro_assert.h>
#include <compat/strl.h>
#include <compat/posix_string.h>
#include <string/stdstring.h>
/**
* string_list_free
@ -268,7 +269,7 @@ int string_list_find_elem(const struct string_list *list, const char *elem)
for (i = 0; i < list->size; i++)
{
if (strcasecmp(list->elems[i].data, elem) == 0)
if (string_is_equal_noncase(list->elems[i].data, elem))
return (int)(i + 1);
}
@ -302,8 +303,8 @@ bool string_list_find_elem_prefix(const struct string_list *list,
for (i = 0; i < list->size; i++)
{
if (strcasecmp(list->elems[i].data, elem) == 0 ||
strcasecmp(list->elems[i].data, prefixed) == 0)
if (string_is_equal_noncase(list->elems[i].data, elem) ||
string_is_equal_noncase(list->elems[i].data, prefixed) == 0)
return true;
}