diff --git a/libretro-db/Makefile b/libretro-db/Makefile index 4b681c936c..a6d138ae2f 100644 --- a/libretro-db/Makefile +++ b/libretro-db/Makefile @@ -1,37 +1,46 @@ -CFLAGS = -g +CFLAGS = -g -O2 LIBRETRO_COMMON_DIR := ../libretro-common -INCFLAGS = -I. -I$(LIBRETRO_COMMON_DIR)/include +INCFLAGS = -I. -I$(LIBRETRO_COMMON_DIR)/include -LUA_CONVERTER_OBJ = rmsgpack.o \ - rmsgpack_dom.o \ - lua_common.o \ - libretrodb.o \ - bintree.o \ - query.o \ - lua_converter.o \ - compat_fnmatch.c \ - $(LIBRETRO_COMMON_DIR)/compat/compat.o +LUA_CONVERTER_C = \ + rmsgpack.c \ + rmsgpack_dom.c \ + lua_common.c \ + libretrodb.c \ + bintree.c \ + query.c \ + lua_converter.c \ + $(LIBRETRO_COMMON_DIR)/compat/compat_fnmatch.c \ + $(LIBRETRO_COMMON_DIR)/compat/compat.c -RARCHDB_TOOL_OBJ = rmsgpack.o \ - rmsgpack_dom.o \ - libretrodb_tool.o \ - bintree.o \ - query.o \ - libretrodb.o \ - compat_fnmatch.c \ - $(LIBRETRO_COMMON_DIR)/compat/compat.o +LUA_CONVERTER_C_OBJS := $(LUA_CONVERTER_C:.c=.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 \ query.c \ - compat_fnmatch.c \ libretrodb.c \ bintree.c \ rmsgpack.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 .PHONY: all clean check @@ -41,17 +50,17 @@ all: rmsgpack_test libretrodb_tool lua_converter %.o: %.c ${CC} $(INCFLAGS) $< -c ${CFLAGS} -o $@ -lua_converter: ${LUA_CONVERTER_OBJ} - ${CC} $(INCFLAGS) ${LUA_CONVERTER_OBJ} ${LUA_FLAGS} -o $@ +lua_converter: ${LUA_CONVERTER_C_OBJS} + ${CC} $(INCFLAGS) ${LUA_CONVERTER_C_OBJS} ${LUA_FLAGS} -o $@ -libretrodb_tool: ${RARCHDB_TOOL_OBJ} - ${CC} $(INCFLAGS) ${RARCHDB_TOOL_OBJ} -o $@ +libretrodb_tool: ${RARCHDB_TOOL_OBJS} + ${CC} $(INCFLAGS) ${RARCHDB_TOOL_OBJS} -o $@ rmsgpack_test: ${CC} $(INCFLAGS) rmsgpack.c rmsgpack_test.c -g -o $@ -testlib.so: ${TESTLIB_C} - ${CC} ${INCFLAGS} ${TESTLIB_FLAGS} ${TESTLIB_C} -o $@ +testlib.so: ${TESTLIB_OBJS} + ${CC} ${INCFLAGS} ${TESTLIB_FLAGS} ${TESTLIB_OBJS} -o $@ check: testlib.so tests.lua lua ./tests.lua diff --git a/libretro-db/compat/fnmatch.h b/libretro-db/compat/fnmatch.h deleted file mode 100644 index 99a6ae9b4a..0000000000 --- a/libretro-db/compat/fnmatch.h +++ /dev/null @@ -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 diff --git a/libretro-db/compat_fnmatch.c b/libretro-db/compat_fnmatch.c deleted file mode 100644 index 6c39b9b11b..0000000000 --- a/libretro-db/compat_fnmatch.c +++ /dev/null @@ -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 -#endif - -#include - -/* 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 diff --git a/libretro-db/rmsgpack_test.c b/libretro-db/rmsgpack_test.c index 822bf87b3d..aaee93034d 100644 --- a/libretro-db/rmsgpack_test.c +++ b/libretro-db/rmsgpack_test.c @@ -196,7 +196,7 @@ int main(void) state.stack[0] = 0; fd = open("test.msgpack", O_RDONLY); rmsgpack_read(fd, &stub_callbacks, &state); - printf("\n"); + printf("Test succeeded.\n"); close(fd); return 0;