# HG changeset patch # User ethanzonca # Date 2009-10-10 16:35:07 # Node ID 7041fc952a3d83d49ac6f6e1bee13e6b47cfa165 # Parent dbcd59c49d54d28cca3bcbf145b5e330fc063dad Added rendering engine update checker prototype, some edits to slave rendering and transfer code diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -66,9 +66,10 @@ for(counter=0; counter + /** 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) diff --git a/src/server/slavefuncs.h b/src/server/slavefuncs.h --- a/src/server/slavefuncs.h +++ b/src/server/slavefuncs.h @@ -26,6 +26,7 @@ #include xmlNodePtr xml_quickxpath(xmlXPathContextPtr xpathctxt, xmlChar *path); +int software_updatecheck(); void tell_the_server(int stuff); int delete_jobdata(int jobnum, char *datadir); size_t curl_writetodisk(void *ptr, size_t size, size_t nmemb, FILE *stream);