# HG changeset patch # User normaldotcom # Date 2010-03-14 13:15:12 # Node ID 4ec01e2efee7c534bae6add02c6aa97f50524b1d # Parent f76e2b988e5407d755fda9a70eee8a356326d514 Path fixes diff --git a/src/server/simpleslave.c b/src/server/simpleslave.c --- a/src/server/simpleslave.c +++ b/src/server/simpleslave.c @@ -50,10 +50,6 @@ int main(int argc, char *argv[]) struct options_common *commonopts; - // struct distrenjob *myjob; /* Structure to hold data gathered from the XML file */ - - // struct remoteio *comm_slave; - /** initializations */ @@ -97,25 +93,15 @@ int main(int argc, char *argv[]) /* Get conf data */ options_init(argc, argv, &my_cfg, myopts, "slave", &commonopts); - /* Notifies the user if there no username in .conf */ if(checkUsername(username)) return 1; - if(!password) + if(!strncmp(password, "!password",10)) { fprintf(stderr, "You haven't specified a password. Please edit your distrenslave.conf file appropriately\n"); return 1; } - /* - fprintf(stderr, "Connecting to server...\n"); - if(remoteio_open(&comm_slave, commonopts->remoteio, server)) - { - fprintf(stderr, "Error connecting to server; exiting\n"); - return 1; - } -*/ - // Variables needed for main loop int jobnum = 0; int framenum = 0; @@ -127,6 +113,7 @@ int main(int argc, char *argv[]) char *urltoOutput; /* Full URL where output is posted */ char *pathtoOutput; /* Full path to the output (rendered) file */ + char *pathtoJob; /* Path to job data folder */ char *pathtoJobfile; /* Full path to the job's main file */ char *outputExt = "jpg"; /* Output Extension (e.g., JPG) */ @@ -152,7 +139,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "Preparing to render frame %d in job %d\n", framenum, jobnum); - prepareJobPaths(jobnum, framenum, outputExt, datadir, &urltoTar, &pathtoTar, &pathtoJobfile, &urltoOutput, &pathtoOutput); + prepareJobPaths(jobnum, framenum, outputExt, datadir, &urltoTar, &pathtoTar, &pathtoJob, &pathtoJobfile, &urltoOutput, &pathtoOutput); // free(outputExt); int dlret = downloadTar(urltoTar, pathtoTar); if(dlret == 0) @@ -160,12 +147,17 @@ int main(int argc, char *argv[]) else if(dlret == 3) return 0; // ouput dir doesn't exist else - fprintf(stderr,"Using existing tarball...\n"); + fprintf(stderr,"Using existing tarball %s...\n", pathtoTar); - unpackJob(datadir, pathtoTar); + unpackJob(pathtoJob, pathtoTar); /* Execute blender */ fprintf(stderr,"Executing blender on file %s", pathtoJobfile); + + /* ignore return because directory may exist already */ + mkdir(pathtoOutput, 0700); + + _web_startframe(slavekey, password, jobnum, framenum); if(exec_blender(pathtoJobfile, pathtoOutput, framenum)) { fprintf(stderr,"Error running Blender. Check your installation and/or your PATH.\n"); diff --git a/src/server/slave.c b/src/server/slave.c --- a/src/server/slave.c +++ b/src/server/slave.c @@ -119,6 +119,7 @@ int main(int argc, char *argv[]) char *urltoOutput; /* Full URL where output is posted */ char *pathtoOutput; /* Full path to the output (rendered) file */ + char *pathtoJob; /* Full path to job data folder */ char *pathtoJobfile; /* Full path to the job's main file */ char *outputExt; /* Output Extension (e.g., JPG) */ @@ -144,7 +145,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "Preparing to render frame %d in job %d\n", framenum, jobnum); - prepareJobPaths(jobnum, framenum, outputExt, datadir, &urltoTar, &pathtoTar, &pathtoJobfile, &urltoOutput, &pathtoOutput); + prepareJobPaths(jobnum, framenum, outputExt, datadir, &urltoTar, &pathtoTar, &pathtoJob, &pathtoJobfile, &urltoOutput, &pathtoOutput); free(outputExt); if(downloadTar(urltoTar, pathtoTar)) diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -477,16 +477,17 @@ int unpackJob(char *outdir, char *pathto } -void prepareJobPaths(int jobnum, int framenum, char *outputExt, char *datadir, char **urltoTar,char **pathtoTar,char **pathtoJobfile,char **urltoOutput,char **pathtoOutput) +void prepareJobPaths(int jobnum, int framenum, char *outputExt, char *datadir, char **urltoTar,char **pathtoTar,char **pathtoJob, char **pathtoJobfile,char **urltoOutput,char **pathtoOutput) { // Variable Preparation char *jobdatapath; _distren_asprintf(&jobdatapath, "job%d", jobnum); - _distren_asprintf(urltoTar, "http://data.distren.org/job%d/job%d.tar.gz", jobnum); // Prepares URL to download from - _distren_asprintf(pathtoTar, "%s/stor/jobdata/job%d.tar.gz", datadir, jobnum); // Prepares destination to save to + _distren_asprintf(urltoTar, "http://data.distren.org/job%d/job%d.tar.gz", jobnum, jobnum); // Prepares URL to download from + _distren_asprintf(pathtoTar, "%s/%s/job%d.tar.gz", datadir, jobdatapath, jobnum); // Prepares destination to save to + _distren_asprintf(pathtoJob, "%s/%s/", datadir, jobdatapath); _distren_asprintf(pathtoJobfile, "%s/%s/job.blend", datadir, jobdatapath ); // Prepares the path to the jobfile _distren_asprintf(urltoOutput, "http://distren.org/slaveUpload.php"); // Prepares the URL where output is posted - _distren_asprintf(pathtoOutput, "%s/job%d/output/job%d-frame%d.%s", datadir, jobnum, jobnum, framenum, outputExt ); + _distren_asprintf(pathtoOutput, "%s/%s/output/job%d-frame%d.%s", datadir, jobdatapath, jobnum, framenum, outputExt ); free(jobdatapath); } @@ -643,6 +644,8 @@ struct _web_memorystruct _web_getrequest /* we're done with libcurl, so clean it up */ curl_global_cleanup(); + if(!strncmp(chunk.memory, "ERROR", 5)) + fprintf(stderr, "Web request returned error!\n"); return chunk; // 0 is OK, 1 is 404 or other error } @@ -659,8 +662,14 @@ void _web_finishframe(int slavekey, char } void _web_startframe(int slavekey, char *slavepass, int jobnum, int framenum){ + char *url; + _distren_asprintf(&url,"http://dev.distren.org/slave/act.php?mode=startframe&slavekey=%d&slavepass=%s&jobnum=%d&framenum=%d", slavekey, slavepass, jobnum, framenum); + struct _web_memorystruct data = _web_getrequest(url); + free(url); - + fprintf(stderr,"Got data: %s\n", data.memory); + if(data.memory) + free(data.memory); } int _web_getwork(int slavekey, char *slavepass, int *jobnum, int *framenum){ diff --git a/src/server/slavefuncs.h b/src/server/slavefuncs.h --- a/src/server/slavefuncs.h +++ b/src/server/slavefuncs.h @@ -49,7 +49,7 @@ int job_build_path(char *filename, unsig int downloadTar(char *url, char *destinationPath); int uploadOutput(char *pathtoOutput, char *urltoOutput, int jobnum, int framenum, int slavekey); int unpackJob(char *outdir, char *pathtoTar); -void prepareJobPaths(int jobnum, int framenum, char *outputExt, char *datadir, char **urltoTar,char **pathtoTar,char **pathtoJobfile,char **urltoOutput,char **pathtoOutput); +void prepareJobPaths(int jobnum, int framenum, char *outputExt, char *datadir, char **urltoTar,char **pathtoTar,char **pathtoJob, char **pathtoJobfile,char **urltoOutput,char **pathtoOutput); int checkUsername(char *username); void slaveTest();