diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -39,6 +39,7 @@ #include + /** utility function for XPath-ish stuff: */ @@ -62,6 +63,47 @@ xmlNodePtr xml_quickxpath(xmlXPathContex return toreturn; } +/** Ensures that rendering engines on the computer are up-to-date */ +int software_updatecheck(){ + curlget("http://protofusion.org/srv/version.info", SYSCONFDIR "/serverEngineVersion.info"); + struct stat buffer; + char serverVersion[5]; // Version numbers are nice and short + char localVersion[5]; // Version numbers are nice and short + + + // Read server version + { + FILE * serverVersionFile; + serverVersionFile = fopen(SYSCONFDIR "/serverEngineVersion.info","r"); + fscanf(serverVersionFile, "%s",serverVersion); + fclose(serverVersionFile); + } + + // Read local version + { + FILE * localVersionFile; + localVersionFile = fopen(SYSCONFDIR "/engines/blender/version.info","r"); + fscanf(localVersionFile, "%s",localVersion); + fclose(localVersionFile); + } + + + // If a rendering engine was never downloaded + if( stat(SYSCONFDIR "/engines/blender", &buffer) == -1){ + fprintf(stderr,"You don't have the blender engine. Preparing to download..."); + curlget("http://protofusion.org/distren/srv/blender-lin32-dist.tgz", SYSCONFDIR "/engines/blender.tgz"); // Add calls for operating system info + // untar(SYSCONFDIR "/engines/blender.tgz"); + } + + // If a rendering engine is out-of-date + else if( serverVersion != localVersion){ + fprintf(stderr,"You don't have the latest blender engine. Preparing to download..."); + curlget("http://protofusion.org/distren/srv/blender-lin32-dist.tgz", SYSCONFDIR "/engines/blender.tgz"); // Add calls for operating system info + // untar(SYSCONFDIR "/engines/blender.tgz"); + } + + return 0; +} /** Stub for deleting job data from the disk. @TODO: unstubify me! */ int delete_jobdata(int jobnum, char *datadir)