mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 12:32:52 +00:00
(libretro-db) Cleanups
This commit is contained in:
parent
139be32aaa
commit
9d34e032b9
@ -1,37 +1,46 @@
|
|||||||
CFLAGS = -g
|
CFLAGS = -g -O2
|
||||||
LIBRETRO_COMMON_DIR := ../libretro-common
|
LIBRETRO_COMMON_DIR := ../libretro-common
|
||||||
INCFLAGS = -I. -I$(LIBRETRO_COMMON_DIR)/include
|
INCFLAGS = -I. -I$(LIBRETRO_COMMON_DIR)/include
|
||||||
|
|
||||||
LUA_CONVERTER_OBJ = rmsgpack.o \
|
LUA_CONVERTER_C = \
|
||||||
rmsgpack_dom.o \
|
rmsgpack.c \
|
||||||
lua_common.o \
|
rmsgpack_dom.c \
|
||||||
libretrodb.o \
|
lua_common.c \
|
||||||
bintree.o \
|
libretrodb.c \
|
||||||
query.o \
|
bintree.c \
|
||||||
lua_converter.o \
|
query.c \
|
||||||
compat_fnmatch.c \
|
lua_converter.c \
|
||||||
$(LIBRETRO_COMMON_DIR)/compat/compat.o
|
$(LIBRETRO_COMMON_DIR)/compat/compat_fnmatch.c \
|
||||||
|
$(LIBRETRO_COMMON_DIR)/compat/compat.c
|
||||||
|
|
||||||
RARCHDB_TOOL_OBJ = rmsgpack.o \
|
LUA_CONVERTER_C_OBJS := $(LUA_CONVERTER_C:.c=.o)
|
||||||
rmsgpack_dom.o \
|
|
||||||
libretrodb_tool.o \
|
|
||||||
bintree.o \
|
|
||||||
query.o \
|
|
||||||
libretrodb.o \
|
|
||||||
compat_fnmatch.c \
|
|
||||||
$(LIBRETRO_COMMON_DIR)/compat/compat.o
|
|
||||||
|
|
||||||
TESTLIB_C = testlib.c \
|
RARCHDB_TOOL_C = \
|
||||||
|
rmsgpack.c \
|
||||||
|
rmsgpack_dom.c \
|
||||||
|
libretrodb_tool.c \
|
||||||
|
bintree.c \
|
||||||
|
query.c \
|
||||||
|
libretrodb.c \
|
||||||
|
$(LIBRETRO_COMMON_DIR)/compat/compat_fnmatch.c \
|
||||||
|
$(LIBRETRO_COMMON_DIR)/compat/compat.c
|
||||||
|
|
||||||
|
RARCHDB_TOOL_OBJS := $(RARCHDB_TOOL_C:.c=.o)
|
||||||
|
|
||||||
|
TESTLIB_C = \
|
||||||
|
testlib.c \
|
||||||
lua_common.c \
|
lua_common.c \
|
||||||
query.c \
|
query.c \
|
||||||
compat_fnmatch.c \
|
|
||||||
libretrodb.c \
|
libretrodb.c \
|
||||||
bintree.c \
|
bintree.c \
|
||||||
rmsgpack.c \
|
rmsgpack.c \
|
||||||
rmsgpack_dom.c \
|
rmsgpack_dom.c \
|
||||||
$(LIBRETRO_COMMON_DIR)/compat/compat.o
|
$(LIBRETRO_COMMON_DIR)/compat/compat_fnmatch.c \
|
||||||
|
$(LIBRETRO_COMMON_DIR)/compat/compat.c
|
||||||
|
|
||||||
LUA_FLAGS = `pkg-config lua --libs`
|
TESTLIB_OBJS := $(TESTLIB_C:.c=.o)
|
||||||
|
|
||||||
|
LUA_FLAGS = `pkg-config lua --libs`
|
||||||
TESTLIB_FLAGS = ${CFLAGS} ${LUA_FLAGS} -shared -fpic
|
TESTLIB_FLAGS = ${CFLAGS} ${LUA_FLAGS} -shared -fpic
|
||||||
|
|
||||||
.PHONY: all clean check
|
.PHONY: all clean check
|
||||||
@ -41,17 +50,17 @@ all: rmsgpack_test libretrodb_tool lua_converter
|
|||||||
%.o: %.c
|
%.o: %.c
|
||||||
${CC} $(INCFLAGS) $< -c ${CFLAGS} -o $@
|
${CC} $(INCFLAGS) $< -c ${CFLAGS} -o $@
|
||||||
|
|
||||||
lua_converter: ${LUA_CONVERTER_OBJ}
|
lua_converter: ${LUA_CONVERTER_C_OBJS}
|
||||||
${CC} $(INCFLAGS) ${LUA_CONVERTER_OBJ} ${LUA_FLAGS} -o $@
|
${CC} $(INCFLAGS) ${LUA_CONVERTER_C_OBJS} ${LUA_FLAGS} -o $@
|
||||||
|
|
||||||
libretrodb_tool: ${RARCHDB_TOOL_OBJ}
|
libretrodb_tool: ${RARCHDB_TOOL_OBJS}
|
||||||
${CC} $(INCFLAGS) ${RARCHDB_TOOL_OBJ} -o $@
|
${CC} $(INCFLAGS) ${RARCHDB_TOOL_OBJS} -o $@
|
||||||
|
|
||||||
rmsgpack_test:
|
rmsgpack_test:
|
||||||
${CC} $(INCFLAGS) rmsgpack.c rmsgpack_test.c -g -o $@
|
${CC} $(INCFLAGS) rmsgpack.c rmsgpack_test.c -g -o $@
|
||||||
|
|
||||||
testlib.so: ${TESTLIB_C}
|
testlib.so: ${TESTLIB_OBJS}
|
||||||
${CC} ${INCFLAGS} ${TESTLIB_FLAGS} ${TESTLIB_C} -o $@
|
${CC} ${INCFLAGS} ${TESTLIB_FLAGS} ${TESTLIB_OBJS} -o $@
|
||||||
|
|
||||||
check: testlib.so tests.lua
|
check: testlib.so tests.lua
|
||||||
lua ./tests.lua
|
lua ./tests.lua
|
||||||
|
@ -1,30 +0,0 @@
|
|||||||
/* Copyright (C) 2010-2015 The RetroArch team
|
|
||||||
*
|
|
||||||
* ---------------------------------------------------------------------------------------
|
|
||||||
* The following license statement only applies to this file (compat_fnmatch.h).
|
|
||||||
* ---------------------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge,
|
|
||||||
* to any person obtaining a copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
|
||||||
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
||||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __LIBRETRO_SDK_COMPAT_FNMATCH_H__
|
|
||||||
#define __LIBRETRO_SDK_COMPAT_FNMATCH_H__
|
|
||||||
|
|
||||||
#define FNM_NOMATCH 1
|
|
||||||
|
|
||||||
int rl_fnmatch(const char *pattern, const char *string, int flags);
|
|
||||||
|
|
||||||
#endif
|
|
@ -1,158 +0,0 @@
|
|||||||
/* Copyright (C) 2010-2015 The RetroArch team
|
|
||||||
*
|
|
||||||
* ---------------------------------------------------------------------------------------
|
|
||||||
* The following license statement only applies to this file (compat_fnmatch.c).
|
|
||||||
* ---------------------------------------------------------------------------------------
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge,
|
|
||||||
* to any person obtaining a copy of this software and associated documentation files (the "Software"),
|
|
||||||
* to deal in the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
|
|
||||||
* and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
||||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
||||||
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#if __TEST_FNMATCH__
|
|
||||||
#include <assert.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <compat/fnmatch.h>
|
|
||||||
|
|
||||||
/* Implemnentation of fnmatch(3) so it can be
|
|
||||||
* distributed to non *nix platforms.
|
|
||||||
*
|
|
||||||
* No flags are implemented ATM.
|
|
||||||
* We don't use them. Add flags as needed. */
|
|
||||||
|
|
||||||
int rl_fnmatch(const char *pattern, const char *string, int flags)
|
|
||||||
{
|
|
||||||
const char *c;
|
|
||||||
int rv;
|
|
||||||
int charmatch = 0;
|
|
||||||
|
|
||||||
for (c = pattern; *c != '\0'; c++)
|
|
||||||
{
|
|
||||||
/* String ended before pattern */
|
|
||||||
if ((*c != '*') && (*string == '\0'))
|
|
||||||
return FNM_NOMATCH;
|
|
||||||
|
|
||||||
switch (*c)
|
|
||||||
{
|
|
||||||
/* Match any number of unknown chars */
|
|
||||||
case '*':
|
|
||||||
/* Find next node in the pattern
|
|
||||||
* ignoring multiple asterixes
|
|
||||||
*/
|
|
||||||
do {
|
|
||||||
c++;
|
|
||||||
if (*c == '\0')
|
|
||||||
return 0;
|
|
||||||
} while (*c == '*');
|
|
||||||
|
|
||||||
/* Match the remaining pattern
|
|
||||||
* ignoring more and more characters. */
|
|
||||||
do {
|
|
||||||
/* We reached the end of the string without a
|
|
||||||
* match. There is a way to optimize this by
|
|
||||||
* calculating the minimum chars needed to
|
|
||||||
* match the remaining pattern but I don't
|
|
||||||
* think it is worth the work ATM.
|
|
||||||
*/
|
|
||||||
if (*string == '\0')
|
|
||||||
return FNM_NOMATCH;
|
|
||||||
|
|
||||||
rv = rl_fnmatch(c, string, flags);
|
|
||||||
string++;
|
|
||||||
} while (rv != 0);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
/* Match char from list */
|
|
||||||
case '[':
|
|
||||||
charmatch = 0;
|
|
||||||
for (c++; *c != ']'; c++)
|
|
||||||
{
|
|
||||||
/* Bad format */
|
|
||||||
if (*c == '\0')
|
|
||||||
return FNM_NOMATCH;
|
|
||||||
|
|
||||||
/* Match already found */
|
|
||||||
if (charmatch)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (*c == *string)
|
|
||||||
charmatch = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* No match in list */
|
|
||||||
if (!charmatch)
|
|
||||||
return FNM_NOMATCH;
|
|
||||||
|
|
||||||
string++;
|
|
||||||
break;
|
|
||||||
/* Has any character */
|
|
||||||
case '?':
|
|
||||||
string++;
|
|
||||||
break;
|
|
||||||
/* Match following character verbatim */
|
|
||||||
case '\\':
|
|
||||||
c++;
|
|
||||||
/* Dangling escape at end of pattern.
|
|
||||||
* FIXME: Was c == '\0' (makes no sense).
|
|
||||||
* Not sure if c == NULL or *c == '\0'
|
|
||||||
* is intended. Assuming *c due to c++ right before. */
|
|
||||||
if (*c == '\0')
|
|
||||||
return FNM_NOMATCH;
|
|
||||||
default:
|
|
||||||
if (*c != *string)
|
|
||||||
return FNM_NOMATCH;
|
|
||||||
string++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* End of string and end of pattend */
|
|
||||||
if (*string == '\0')
|
|
||||||
return 0;
|
|
||||||
return FNM_NOMATCH;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if __TEST_FNMATCH__
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
assert(rl_fnmatch("TEST", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE?T", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE[Ssa]T", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE[Ssda]T", "TEsT", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE[Ssda]T", "TEdT", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE[Ssda]T", "TEaT", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TEST*", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TEST**", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE*ST*", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE**ST*", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE**ST*", "TExST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE**ST", "TEST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE**ST", "TExST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TE\\**ST", "TE*xST", 0) == 0);
|
|
||||||
assert(rl_fnmatch("*.*", "test.jpg", 0) == 0);
|
|
||||||
assert(rl_fnmatch("*.jpg", "test.jpg", 0) == 0);
|
|
||||||
assert(rl_fnmatch("*.[Jj][Pp][Gg]", "test.jPg", 0) == 0);
|
|
||||||
assert(rl_fnmatch("*.[Jj]*[Gg]", "test.jPg", 0) == 0);
|
|
||||||
assert(rl_fnmatch("TEST?", "TEST", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TES[asd", "TEST", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TEST\\", "TEST", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TEST*S", "TEST", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TE**ST", "TExT", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TE\\*T", "TExT", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TES?", "TES", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TE", "TEST", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("TEST!", "TEST", 0) == FNM_NOMATCH);
|
|
||||||
assert(rl_fnmatch("DSAD", "TEST", 0) == FNM_NOMATCH);
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -196,7 +196,7 @@ int main(void)
|
|||||||
state.stack[0] = 0;
|
state.stack[0] = 0;
|
||||||
fd = open("test.msgpack", O_RDONLY);
|
fd = open("test.msgpack", O_RDONLY);
|
||||||
rmsgpack_read(fd, &stub_callbacks, &state);
|
rmsgpack_read(fd, &stub_callbacks, &state);
|
||||||
printf("\n");
|
printf("Test succeeded.\n");
|
||||||
close(fd);
|
close(fd);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user