diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -39,11 +39,29 @@ #include -/** Stub, writes struct from xml */ -int buildstruct(struct blendjob* blendjob, char *pathtoxml){ - return 1; +/** + utility function for XPath-ish stuff: + */ +xmlNodePtr xml_quickxpath(xmlXPathContextPtr xpathctxt, xmlChar *path) +{ + xmlNodePtr toreturn; + + xmlXPathObjectPtr xmlxpathobjptr; + xmlxpathobjptr = xmlXPathEval(path, xpathctxt); + if(!xmlxpathobjptr->nodesetval->nodeNr) + { + fprintf(stderr, "XPath resolution failed for ``%s'' in ``%s'' (``'')\n", path, xpathctxt->doc->name, xpathctxt->doc->URL); + return (xmlNodePtr)NULL; + } + + toreturn = *(xmlxpathobjptr->nodesetval->nodeTab); + + xmlXPathFreeObject(xmlxpathobjptr); + + return toreturn; } + /** Stub stub stubbiness ugh */ void tell_the_server(char *stuff){ } @@ -356,3 +374,14 @@ void exec_blender(struct blendjob* blend fprintf(stderr,"Blender at least started nicely, who knows if it rendered anything though."); } } + +void xmlinit() +{ + xmlInitParser(); + xmlXPathInit(); +} + +void xmlcleanup() +{ + xmlCleanupParser(); +}