diff --git a/src/server/slavefuncs.c b/src/server/slavefuncs.c --- a/src/server/slavefuncs.c +++ b/src/server/slavefuncs.c @@ -167,17 +167,17 @@ int login_user(char *username) return 1; // success } -/** Replaces !username with a username in the slave's conf file */ -int conf_replace(char *username){ +/** Replaces wordtoreplace with replacewith in conffile (relative to SYSCONFDIR) */ +int conf_replace(char *conffile, char *wordtoreplace, char *replacewith){ int maxlinelen = 120; - char *fileOrig = SYSCONFDIR "/distrenslave.conf"; - char *fileRepl = SYSCONFDIR "/distrenslave.conf.edited"; - char *text2find = "!username"; - char *text2repl = username; + char *fileOrig; + char *fileRepl; + _distren_asprintf(&fileOrig, "&s&s", SYSCONFDIR, conffile); + _distren_asprintf(&fileRepl, "&s&s.edited", SYSCONFDIR, conffile); char buffer[maxlinelen+2]; char *buff_ptr, *find_ptr; FILE *fp1, *fp2; - size_t find_len = strlen(text2find); + size_t find_len = strlen(wordtoreplace); fp1 = fopen(fileOrig,"r"); fp2 = fopen(fileRepl,"w"); if (fp1 ==NULL){ @@ -192,11 +192,11 @@ int conf_replace(char *username){ while(fgets(buffer,maxlinelen+2,fp1)) { buff_ptr = buffer; - while ((find_ptr = strstr(buff_ptr,text2find))) + while ((find_ptr = strstr(buff_ptr,wordtoreplace))) { while(buff_ptr < find_ptr) fputc((int)*buff_ptr++,fp2); - fputs(text2repl,fp2); + fputs(replacewith,fp2); buff_ptr += find_len; } fputs(buff_ptr,fp2); @@ -219,8 +219,8 @@ int exec_blender(char *input, char *outp int ret; char *frame_str; - char *command = "blender"; // @TODO: append .exe if win32? Do we expect this to be in the PATH? - char *cmd[] = { command, "-b", "-o", output, input, "-f", frame_str, (char *)NULL }; + char *command = "blender"; // @TODO: We currently expect this to be in PATH + char *cmd[] = { command, "-b", "-o", output, input, "-f", frame_str, (char *)NULL }; // arguments for blender char buf[10]; struct execio *testrem; @@ -228,6 +228,7 @@ int exec_blender(char *input, char *outp _distren_asprintf(&frame_str, "%i", frame); + fprintf(stderr,"Executing: %s\n", frame_str); ret = execio_open(&testrem, command, cmd); buf[9] = '\0'; while(!execio_read(testrem, buf, 9, &readlen))