forked from github/server
remove libxml2 from dependencies
remove the converter, that isn't a way we're going.
This commit is contained in:
parent
6b0f75339f
commit
ce37fd1bb7
|
@ -50,8 +50,7 @@ else()
|
||||||
find_package (SQLite3 REQUIRED QUIET)
|
find_package (SQLite3 REQUIRED QUIET)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(EXPAT)
|
find_package(EXPAT REQUIRED)
|
||||||
find_package (LibXml2 REQUIRED)
|
|
||||||
find_package (ToLua REQUIRED)
|
find_package (ToLua REQUIRED)
|
||||||
if (TOLUA_FOUND)
|
if (TOLUA_FOUND)
|
||||||
if (${TOLUA_VERSION_STRING} VERSION_EQUAL "5.2")
|
if (${TOLUA_VERSION_STRING} VERSION_EQUAL "5.2")
|
||||||
|
@ -71,6 +70,7 @@ add_subdirectory (process)
|
||||||
add_subdirectory (src eressea)
|
add_subdirectory (src eressea)
|
||||||
|
|
||||||
install(DIRECTORY etc DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.txt")
|
install(DIRECTORY etc DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.txt")
|
||||||
|
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.po")
|
||||||
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.xml")
|
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.xml")
|
||||||
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.json")
|
install(DIRECTORY res conf DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.json")
|
||||||
install(DIRECTORY scripts DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.lua")
|
install(DIRECTORY scripts DESTINATION ${CMAKE_INSTALL_PREFIX} FILES_MATCHING PATTERN "*.lua")
|
||||||
|
|
|
@ -111,6 +111,7 @@ set (ERESSEA_SRC
|
||||||
report.c
|
report.c
|
||||||
steal.c
|
steal.c
|
||||||
economy.c
|
economy.c
|
||||||
|
exparse.c
|
||||||
give.c
|
give.c
|
||||||
items.c
|
items.c
|
||||||
laws.c
|
laws.c
|
||||||
|
@ -127,7 +128,6 @@ set (ERESSEA_SRC
|
||||||
travelthru.c
|
travelthru.c
|
||||||
monsters.c
|
monsters.c
|
||||||
wormhole.c
|
wormhole.c
|
||||||
xmlreader.c
|
|
||||||
${SPELLS_SRC}
|
${SPELLS_SRC}
|
||||||
${RACES_SRC}
|
${RACES_SRC}
|
||||||
${ITEMS_SRC}
|
${ITEMS_SRC}
|
||||||
|
@ -139,11 +139,6 @@ set (ERESSEA_SRC
|
||||||
${UTIL_SRC}
|
${UTIL_SRC}
|
||||||
)
|
)
|
||||||
|
|
||||||
IF(EXPAT_FOUND)
|
|
||||||
set (ERESSEA_SRC ${ERESSEA_SRC} exparse.c)
|
|
||||||
ENDIF(EXPAT_FOUND)
|
|
||||||
|
|
||||||
|
|
||||||
set(SERVER_SRC
|
set(SERVER_SRC
|
||||||
main.c
|
main.c
|
||||||
console.c
|
console.c
|
||||||
|
@ -187,15 +182,6 @@ target_link_libraries(eressea
|
||||||
${INIPARSER_LIBRARIES}
|
${INIPARSER_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable(convert convert.c)
|
|
||||||
target_link_libraries(convert
|
|
||||||
game
|
|
||||||
${LUA_MATH_LIBRARY}
|
|
||||||
${STORAGE_LIBRARIES}
|
|
||||||
${CLIBS_LIBRARIES}
|
|
||||||
${INIPARSER_LIBRARIES}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(TESTS_SRC
|
set(TESTS_SRC
|
||||||
test_eressea.c
|
test_eressea.c
|
||||||
tests.c
|
tests.c
|
||||||
|
@ -235,7 +221,6 @@ set(TESTS_SRC
|
||||||
volcano.test.c
|
volcano.test.c
|
||||||
vortex.test.c
|
vortex.test.c
|
||||||
wormhole.test.c
|
wormhole.test.c
|
||||||
# xmlreader.test.c
|
|
||||||
spells/flyingship.test.c
|
spells/flyingship.test.c
|
||||||
spells/magicresistance.test.c
|
spells/magicresistance.test.c
|
||||||
triggers/shock.test.c
|
triggers/shock.test.c
|
||||||
|
@ -285,18 +270,15 @@ endif(HAVE_STRDUP)
|
||||||
if (HAVE_LIBBSD)
|
if (HAVE_LIBBSD)
|
||||||
target_link_libraries(test_eressea bsd)
|
target_link_libraries(test_eressea bsd)
|
||||||
target_link_libraries(eressea bsd)
|
target_link_libraries(eressea bsd)
|
||||||
target_link_libraries(convert bsd)
|
|
||||||
endif (HAVE_LIBBSD)
|
endif (HAVE_LIBBSD)
|
||||||
|
|
||||||
if (SQLITE3_FOUND)
|
if (SQLITE3_FOUND)
|
||||||
include_directories (${SQLITE3_INCLUDE_DIR})
|
include_directories (${SQLITE3_INCLUDE_DIR})
|
||||||
target_link_libraries(eressea ${SQLITE3_LIBRARIES})
|
target_link_libraries(eressea ${SQLITE3_LIBRARIES})
|
||||||
target_link_libraries(convert ${SQLITE3_LIBRARIES})
|
|
||||||
target_link_libraries(test_eressea ${SQLITE3_LIBRARIES})
|
target_link_libraries(test_eressea ${SQLITE3_LIBRARIES})
|
||||||
add_definitions(-DUSE_SQLITE)
|
add_definitions(-DUSE_SQLITE)
|
||||||
elseif (DB_FOUND)
|
elseif (DB_FOUND)
|
||||||
include_directories (${DB_INCLUDE_DIR})
|
include_directories (${DB_INCLUDE_DIR})
|
||||||
target_link_libraries(convert ${DB_LIBRARIES})
|
|
||||||
target_link_libraries(eressea ${DB_LIBRARIES})
|
target_link_libraries(eressea ${DB_LIBRARIES})
|
||||||
target_link_libraries(test_eressea ${DB_LIBRARIES})
|
target_link_libraries(test_eressea ${DB_LIBRARIES})
|
||||||
add_definitions(-DUSE_DB)
|
add_definitions(-DUSE_DB)
|
||||||
|
@ -317,14 +299,5 @@ endif(CURSES_FOUND)
|
||||||
if (EXPAT_FOUND)
|
if (EXPAT_FOUND)
|
||||||
include_directories (${EXPAT_INCLUDE_DIRS})
|
include_directories (${EXPAT_INCLUDE_DIRS})
|
||||||
target_link_libraries(eressea ${EXPAT_LIBRARIES})
|
target_link_libraries(eressea ${EXPAT_LIBRARIES})
|
||||||
target_link_libraries(convert ${EXPAT_LIBRARIES})
|
|
||||||
target_link_libraries(test_eressea ${EXPAT_LIBRARIES})
|
target_link_libraries(test_eressea ${EXPAT_LIBRARIES})
|
||||||
add_definitions(-DUSE_EXPAT)
|
|
||||||
endif (EXPAT_FOUND)
|
endif (EXPAT_FOUND)
|
||||||
|
|
||||||
if (LIBXML2_FOUND)
|
|
||||||
include_directories (${LIBXML2_INCLUDE_DIR})
|
|
||||||
target_link_libraries(eressea ${LIBXML2_LIBRARIES})
|
|
||||||
target_link_libraries(convert ${LIBXML2_LIBRARIES})
|
|
||||||
target_link_libraries(test_eressea ${LIBXML2_LIBRARIES})
|
|
||||||
endif (LIBXML2_FOUND)
|
|
||||||
|
|
|
@ -59,7 +59,6 @@
|
||||||
#include <util/nrmessage.h>
|
#include <util/nrmessage.h>
|
||||||
#include <util/rand.h>
|
#include <util/rand.h>
|
||||||
#include <util/rng.h>
|
#include <util/rng.h>
|
||||||
#include <util/xml.h>
|
|
||||||
|
|
||||||
#include <selist.h>
|
#include <selist.h>
|
||||||
#include <storage.h>
|
#include <storage.h>
|
||||||
|
@ -833,33 +832,12 @@ static int tolua_get_spells(lua_State * L)
|
||||||
return tolua_selist_push(L, "spell_list", "spell", spells);
|
return tolua_selist_push(L, "spell_list", "spell", spells);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_data(const char *filename)
|
|
||||||
{
|
|
||||||
int l;
|
|
||||||
l = read_xml(filename);
|
|
||||||
reset_locales();
|
|
||||||
if (l) {
|
|
||||||
return l;
|
|
||||||
}
|
|
||||||
if (turn <= 0) {
|
|
||||||
turn = first_turn();
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int tolua_equip_newunits(lua_State * L) {
|
static int tolua_equip_newunits(lua_State * L) {
|
||||||
unit *u = (unit *)tolua_tousertype(L, 1, 0);
|
unit *u = (unit *)tolua_tousertype(L, 1, 0);
|
||||||
equip_newunits(u);
|
equip_newunits(u);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int tolua_read_xml(lua_State * L)
|
|
||||||
{
|
|
||||||
const char *filename = tolua_tostring(L, 1, "config.xml");
|
|
||||||
lua_pushinteger(L, init_data(filename));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int tolua_report_unit(lua_State * L)
|
static int tolua_report_unit(lua_State * L)
|
||||||
{
|
{
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
|
@ -1029,7 +1007,6 @@ int tolua_bindings_open(lua_State * L, const dictionary *inifile)
|
||||||
tolua_function(L, TOLUA_CAST "set_key", tolua_setkey);
|
tolua_function(L, TOLUA_CAST "set_key", tolua_setkey);
|
||||||
tolua_function(L, TOLUA_CAST "translate", &tolua_translate);
|
tolua_function(L, TOLUA_CAST "translate", &tolua_translate);
|
||||||
tolua_function(L, TOLUA_CAST "spells", tolua_get_spells);
|
tolua_function(L, TOLUA_CAST "spells", tolua_get_spells);
|
||||||
tolua_function(L, TOLUA_CAST "read_xml", tolua_read_xml);
|
|
||||||
tolua_function(L, TOLUA_CAST "equip_newunits", tolua_equip_newunits);
|
tolua_function(L, TOLUA_CAST "equip_newunits", tolua_equip_newunits);
|
||||||
} tolua_endmodule(L);
|
} tolua_endmodule(L);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
#include <platform.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include "xmlreader.h"
|
|
||||||
#include <util/xml.h>
|
|
||||||
#include <kernel/race.h>
|
|
||||||
#include <kernel/rules.h>
|
|
||||||
#include <races/races.h>
|
|
||||||
|
|
||||||
#include <storage.h>
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
static int usage(void) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
|
||||||
const char *mode;
|
|
||||||
|
|
||||||
register_races();
|
|
||||||
register_xmlreader();
|
|
||||||
if (argc < 2) return usage();
|
|
||||||
mode = argv[1];
|
|
||||||
if (strcmp(mode, "rules")==0) {
|
|
||||||
const char *xmlfile;
|
|
||||||
if (argc < 4) return usage();
|
|
||||||
xmlfile = argv[2];
|
|
||||||
read_xml(xmlfile);
|
|
||||||
write_rules("rules.dat");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (strcmp(mode, "po")==0) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return usage();
|
|
||||||
}
|
|
|
@ -33,7 +33,6 @@
|
||||||
#include "spells.h"
|
#include "spells.h"
|
||||||
#include "vortex.h"
|
#include "vortex.h"
|
||||||
#include "wormhole.h"
|
#include "wormhole.h"
|
||||||
#include "xmlreader.h"
|
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -80,7 +79,6 @@ void game_init(void)
|
||||||
|
|
||||||
register_weapons();
|
register_weapons();
|
||||||
register_xerewards();
|
register_xerewards();
|
||||||
register_xmlreader();
|
|
||||||
register_attributes();
|
register_attributes();
|
||||||
register_gmcmd();
|
register_gmcmd();
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,6 @@
|
||||||
#include "listbox.h"
|
#include "listbox.h"
|
||||||
#include "wormhole.h"
|
#include "wormhole.h"
|
||||||
#include "teleport.h"
|
#include "teleport.h"
|
||||||
#include "xmlreader.h"
|
|
||||||
|
|
||||||
#include <storage.h>
|
#include <storage.h>
|
||||||
#include <lua.h>
|
#include <lua.h>
|
||||||
|
|
|
@ -39,7 +39,6 @@ without prior permission by the authors of Eressea.
|
||||||
#include "util/path.h"
|
#include "util/path.h"
|
||||||
#include "util/pofile.h"
|
#include "util/pofile.h"
|
||||||
#include "util/strings.h"
|
#include "util/strings.h"
|
||||||
#include "util/xml.h"
|
|
||||||
|
|
||||||
/* game modules */
|
/* game modules */
|
||||||
#include "direction.h"
|
#include "direction.h"
|
||||||
|
@ -47,9 +46,7 @@ without prior permission by the authors of Eressea.
|
||||||
#include "move.h"
|
#include "move.h"
|
||||||
#include "prefix.h"
|
#include "prefix.h"
|
||||||
#include "skill.h"
|
#include "skill.h"
|
||||||
#ifdef USE_EXPAT
|
|
||||||
#include "exparse.h"
|
#include "exparse.h"
|
||||||
#endif
|
|
||||||
|
|
||||||
/* external libraries */
|
/* external libraries */
|
||||||
#include <cJSON.h>
|
#include <cJSON.h>
|
||||||
|
@ -1017,14 +1014,7 @@ static int include_xml(const char *uri) {
|
||||||
char name[PATH_MAX];
|
char name[PATH_MAX];
|
||||||
const char *filename = uri_to_file(uri, name, sizeof(name));
|
const char *filename = uri_to_file(uri, name, sizeof(name));
|
||||||
int err;
|
int err;
|
||||||
#ifdef USE_EXPAT
|
|
||||||
err = exparse_readfile(filename);
|
err = exparse_readfile(filename);
|
||||||
if (err != 0) {
|
|
||||||
err = read_xml(filename);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
err = read_xml(filename);
|
|
||||||
#endif
|
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
log_error("could not parse XML from %s", uri);
|
log_error("could not parse XML from %s", uri);
|
||||||
}
|
}
|
||||||
|
@ -1058,7 +1048,7 @@ static int include_po(const char *uri) {
|
||||||
if (lang) {
|
if (lang) {
|
||||||
int err = pofile_read(filename, add_po_string, lang);
|
int err = pofile_read(filename, add_po_string, lang);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
log_error("could not parse XML from %s", uri);
|
log_error("could not parse translations from %s", uri);
|
||||||
}
|
}
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,7 +60,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <util/log.h>
|
#include <util/log.h>
|
||||||
#include <util/parser.h>
|
#include <util/parser.h>
|
||||||
#include <util/resolve.h>
|
#include <util/resolve.h>
|
||||||
#include <util/xml.h>
|
|
||||||
|
|
||||||
/* from libc */
|
/* from libc */
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
|
@ -66,16 +66,11 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <util/strings.h>
|
#include <util/strings.h>
|
||||||
#include <util/translation.h>
|
#include <util/translation.h>
|
||||||
#include <util/umlaut.h>
|
#include <util/umlaut.h>
|
||||||
#include <util/xml.h>
|
|
||||||
|
|
||||||
#include "donations.h"
|
#include "donations.h"
|
||||||
#include "guard.h"
|
#include "guard.h"
|
||||||
#include "prefix.h"
|
#include "prefix.h"
|
||||||
|
|
||||||
/* libxml includes */
|
|
||||||
#include <libxml/tree.h>
|
|
||||||
#include <libxml/xpath.h>
|
|
||||||
|
|
||||||
/* external libraries */
|
/* external libraries */
|
||||||
#include <iniparser.h>
|
#include <iniparser.h>
|
||||||
#include <critbit.h>
|
#include <critbit.h>
|
||||||
|
@ -559,7 +554,6 @@ void kernel_done(void)
|
||||||
/* calling this function releases memory assigned to static variables, etc.
|
/* calling this function releases memory assigned to static variables, etc.
|
||||||
* calling it is optional, e.g. a release server will most likely not do it.
|
* calling it is optional, e.g. a release server will most likely not do it.
|
||||||
*/
|
*/
|
||||||
xml_done();
|
|
||||||
attrib_done();
|
attrib_done();
|
||||||
item_done();
|
item_done();
|
||||||
message_done();
|
message_done();
|
||||||
|
|
|
@ -42,7 +42,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
#include <util/log.h>
|
#include <util/log.h>
|
||||||
#include <util/strings.h>
|
#include <util/strings.h>
|
||||||
#include <util/umlaut.h>
|
#include <util/umlaut.h>
|
||||||
#include <util/xml.h>
|
|
||||||
|
|
||||||
#include <storage.h>
|
#include <storage.h>
|
||||||
#include <selist.h>
|
#include <selist.h>
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
#include "randenc.h"
|
#include "randenc.h"
|
||||||
#include "monsters.h"
|
#include "monsters.h"
|
||||||
#include "teleport.h"
|
#include "teleport.h"
|
||||||
#include "xmlreader.h"
|
|
||||||
|
|
||||||
/* triggers includes */
|
/* triggers includes */
|
||||||
#include <triggers/changefaction.h>
|
#include <triggers/changefaction.h>
|
||||||
|
|
|
@ -28,7 +28,6 @@ log.test.c
|
||||||
umlaut.test.c
|
umlaut.test.c
|
||||||
unicode.test.c
|
unicode.test.c
|
||||||
variant.test.c
|
variant.test.c
|
||||||
# xml.test.c
|
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(_FILES
|
SET(_FILES
|
||||||
|
@ -59,7 +58,6 @@ translation.c
|
||||||
umlaut.c
|
umlaut.c
|
||||||
unicode.c
|
unicode.c
|
||||||
variant.c
|
variant.c
|
||||||
xml.c
|
|
||||||
)
|
)
|
||||||
|
|
||||||
FOREACH(_FILE ${_FILES})
|
FOREACH(_FILE ${_FILES})
|
||||||
|
|
131
src/util/xml.c
131
src/util/xml.c
|
@ -1,131 +0,0 @@
|
||||||
/*
|
|
||||||
+-------------------+ Christian Schlittchen <corwin@amber.kn-bremen.de>
|
|
||||||
| | Enno Rehling <enno@eressea.de>
|
|
||||||
| Eressea PBEM host | Katja Zedel <katze@felidae.kn-bremen.de>
|
|
||||||
| (c) 1998 - 2003 | Henning Peters <faroul@beyond.kn-bremen.de>
|
|
||||||
| | Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
|
|
||||||
+-------------------+ Stefan Reich <reich@halbling.de>
|
|
||||||
|
|
||||||
This program may not be used, modified or distributed
|
|
||||||
without prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
#include <platform.h>
|
|
||||||
#include "xml.h"
|
|
||||||
|
|
||||||
/* util includes */
|
|
||||||
#include "log.h"
|
|
||||||
#include "assert.h"
|
|
||||||
|
|
||||||
#include <libxml/catalog.h>
|
|
||||||
#include <libxml/xmlstring.h>
|
|
||||||
|
|
||||||
/* libc includes */
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <ctype.h>
|
|
||||||
|
|
||||||
int xml_ivalue(xmlNodePtr node, const char *name, int dflt)
|
|
||||||
{
|
|
||||||
int i = dflt;
|
|
||||||
xmlChar *propValue = xmlGetProp(node, BAD_CAST name);
|
|
||||||
if (propValue != NULL) {
|
|
||||||
i = atoi((const char *)propValue);
|
|
||||||
xmlFree(propValue);
|
|
||||||
}
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool xml_bvalue(xmlNodePtr node, const char *name, bool dflt)
|
|
||||||
{
|
|
||||||
bool result = dflt;
|
|
||||||
xmlChar *propValue = xmlGetProp(node, BAD_CAST name);
|
|
||||||
if (propValue != NULL) {
|
|
||||||
if (strcmp((const char *)propValue, "no") == 0)
|
|
||||||
result = false;
|
|
||||||
else if (strcmp((const char *)propValue, "yes") == 0)
|
|
||||||
result = true;
|
|
||||||
else if (strcmp((const char *)propValue, "false") == 0)
|
|
||||||
result = false;
|
|
||||||
else if (strcmp((const char *)propValue, "true") == 0)
|
|
||||||
result = true;
|
|
||||||
else if (strcmp((const char *)propValue, "1") == 0) {
|
|
||||||
log_warning("bool value is '1': %s::%s\n", node->name, name);
|
|
||||||
result = true;
|
|
||||||
}
|
|
||||||
else if (strcmp((const char *)propValue, "0") == 0) {
|
|
||||||
log_warning("bool value is '0': %s::%s\n", node->name, name);
|
|
||||||
result = false;
|
|
||||||
}
|
|
||||||
xmlFree(propValue);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
double xml_fvalue(xmlNodePtr node, const char *name, double dflt)
|
|
||||||
{
|
|
||||||
double result = dflt;
|
|
||||||
xmlChar *propValue = xmlGetProp(node, BAD_CAST name);
|
|
||||||
if (propValue != NULL) {
|
|
||||||
result = atof((const char *)propValue);
|
|
||||||
xmlFree(propValue);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* new xml functions */
|
|
||||||
/* libxml includes */
|
|
||||||
#include <libxml/tree.h>
|
|
||||||
#include <libxml/parser.h>
|
|
||||||
|
|
||||||
typedef struct xml_reader {
|
|
||||||
struct xml_reader *next;
|
|
||||||
xml_callback callback;
|
|
||||||
} xml_reader;
|
|
||||||
|
|
||||||
static xml_reader *xmlReaders;
|
|
||||||
|
|
||||||
void xml_done(void) {
|
|
||||||
xml_reader ** xrp = &xmlReaders;
|
|
||||||
while (*xrp) {
|
|
||||||
xml_reader *xr = *xrp;
|
|
||||||
*xrp = xr->next;
|
|
||||||
free(xr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void xml_register_callback(xml_callback callback)
|
|
||||||
{
|
|
||||||
xml_reader *reader = (xml_reader *)malloc(sizeof(xml_reader));
|
|
||||||
xml_reader **insert = &xmlReaders;
|
|
||||||
assert_alloc(reader);
|
|
||||||
reader->callback = callback;
|
|
||||||
reader->next = NULL;
|
|
||||||
|
|
||||||
while (*insert)
|
|
||||||
insert = &(*insert)->next;
|
|
||||||
*insert = reader;
|
|
||||||
}
|
|
||||||
|
|
||||||
int read_xml(const char *filename)
|
|
||||||
{
|
|
||||||
xml_reader *reader = xmlReaders;
|
|
||||||
xmlDocPtr doc;
|
|
||||||
int results = 0;
|
|
||||||
|
|
||||||
doc = xmlReadFile(filename, NULL, XML_PARSE_NONET | XML_PARSE_PEDANTIC | XML_PARSE_COMPACT);
|
|
||||||
if (doc == NULL) {
|
|
||||||
log_error("could not open '%s'\n", filename);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
while (reader != NULL) {
|
|
||||||
int i = reader->callback(doc);
|
|
||||||
if (i < 0) {
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
results += i;
|
|
||||||
reader = reader->next;
|
|
||||||
}
|
|
||||||
xmlFreeDoc(doc);
|
|
||||||
return (results > 0) ? 0 : -1;
|
|
||||||
}
|
|
|
@ -1,39 +0,0 @@
|
||||||
/*
|
|
||||||
+-------------------+ Christian Schlittchen <corwin@amber.kn-bremen.de>
|
|
||||||
| | Enno Rehling <enno@eressea.de>
|
|
||||||
| Eressea PBEM host | Katja Zedel <katze@felidae.kn-bremen.de>
|
|
||||||
| (c) 1998 - 2003 | Henning Peters <faroul@beyond.kn-bremen.de>
|
|
||||||
| | Ingo Wilken <Ingo.Wilken@informatik.uni-oldenburg.de>
|
|
||||||
+-------------------+ Stefan Reich <reich@halbling.de>
|
|
||||||
|
|
||||||
This program may not be used, modified or distributed
|
|
||||||
without prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef H_UTIL_XML
|
|
||||||
#define H_UTIL_XML
|
|
||||||
|
|
||||||
#include <stdbool.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* new xml functions: */
|
|
||||||
#include <libxml/tree.h>
|
|
||||||
|
|
||||||
|
|
||||||
typedef int (*xml_callback) (xmlDocPtr);
|
|
||||||
|
|
||||||
void xml_register_callback(xml_callback callback);
|
|
||||||
double xml_fvalue(xmlNodePtr node, const char *name, double dflt);
|
|
||||||
int xml_ivalue(xmlNodePtr node, const char *name, int dflt);
|
|
||||||
bool xml_bvalue(xmlNodePtr node, const char *name, bool dflt);
|
|
||||||
|
|
||||||
void xml_done(void);
|
|
||||||
int read_xml(const char *filename);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
1361
src/xmlreader.c
1361
src/xmlreader.c
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
+-------------------+
|
|
||||||
| | Enno Rehling <enno@eressea.de>
|
|
||||||
| Eressea PBEM host | Christian Schlittchen <corwin@amber.kn-bremen.de>
|
|
||||||
| (c) 1998 - 2007 | Katja Zedel <katze@felidae.kn-bremen.de>
|
|
||||||
| | Henning Peters <faroul@beyond.kn-bremen.de>
|
|
||||||
+-------------------+
|
|
||||||
|
|
||||||
This program may not be used, modified or distributed
|
|
||||||
without prior permission by the authors of Eressea.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef H_KRNL_XMLREADER_H
|
|
||||||
#define H_KRNL_XMLREADER_H
|
|
||||||
|
|
||||||
struct spell;
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
extern void register_xmlreader(void);
|
|
||||||
|
|
||||||
/* game-specific callbacks */
|
|
||||||
extern void(*set_spelldata_cb) (struct spell * sp);
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif
|
|
Loading…
Reference in New Issue