Changeset - 601295e9ca42
[Not reviewed]
default
0 2 0
ethanzonca - 16 years ago 2009-08-01 00:17:17

Trying out someone's int_to_str() function, we'll see how it goes... but it used xmalloc, which isn't in every build env. I changed it to malloc, we'll see... :D
2 files changed with 33 insertions and 2 deletions:
0 comments (0 inline, 0 general)
src/server/slavefuncs.c
Show inline comments
 
@@ -24,24 +24,54 @@
 

	
 
#include "slavefuncs.h"
 
#include "blendjob.h"
 
#include "execio.h"
 

	
 
#include <stdio.h>
 
#include <string.h>
 
#include <unistd.h>
 
#include <stdlib.h> /*< malloc(), free() */
 
#include <sys/stat.h>
 
#include <fcntl.h>
 

	
 
/** Converts an integer to a string, thanks to Dom_ (http://www.signalsondisplay.com/) */
 
char *int_to_str(int nbr)
 
{
 
  int   div;
 
  int   len;
 
  int   i;
 
  char  *res;
 

	
 
  res = malloc(4 * sizeof(*res)); // Was xmalloc, hopefully it still works :D
 
  i = 0;
 
  while (i < 3)
 
    res[i++] = '\0';
 
  res[3] = '\0';
 
  i = 0;
 
  div = 1;
 
  len = 1;
 
  while (nbr / div >= 10)
 
    {
 
      div *= 10;
 
      len++;
 
    }
 
  while (len)
 
    {
 
      res[i++] = '0' + (nbr / div);
 
      len--;
 
      nbr %= div;
 
      div /= 10;
 
    }
 
  return (res);
 
}
 
/** Generates a SSH key with ssh-keygen */
 
int ssh_keygen(){
 
	// distren.id_rsa and distren.id_rsa.pub are now generated in SYSCONFDIR (etc)
 

	
 
	// Checks to see if the keys are already present.
 
	int status;
 
	struct stat buffer;
 
	status = stat(SYSCONFDIR "/distren.id_rsa", &buffer);
 
	if(status != -1){
 
		fprintf(stderr, "Please delete etc/distren.id_rsa and etc/distren.id_rsa.pub to register.\n");
 
		return 0;
 
	}
 
@@ -244,26 +274,26 @@ return 1;
 
}
 

	
 

	
 
/* Executors */
 

	
 
/*
 
  It seems that the client will need to know the job number. fixme.
 
*/
 

	
 
/** Executor function for Blender operations */
 
void exec_blender(struct blendjob* blendjob, char *input, char *output, int frame)
 
{
 
  char *frame_str;
 
  asprintf(frame,frame_str); // Converts the int frame to a string, so it can be in the cmd array. GNU/*nix compatible only, fix before releasing win32, although dll for windows for asprintf exists!
 

	
 
	char *frame_str = int_to_str(frame); // Converts the int frame to a string, so it can be in the cmd array. GNU/*nix compatible only, fix before releasing win32, although dll for windows for asprintf exists!
 

	
 
  /* start execio code */
 
  	char *command = "blender"; // @TODO: append .exe if win32?
 
  	int ret;
 
    char *cmd[] = { command, "-b", "-o", output, input, "-f", frame_str, (char *)NULL };
 

	
 
  	char buf[10];
 
  	struct execio *testrem;
 
  	size_t readlen;
 
  	ret = execio_open(&testrem, command, cmd); // This path will be absolute for testing, should be relative to install on production
 
  	buf[9] = '\0'; // null-terminating the array...
 
  	while(!execio_read(testrem, buf, 9, &readlen))
src/server/slavefuncs.h
Show inline comments
 
@@ -12,20 +12,21 @@
 
  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
  GNU Affero General Public License for more details.
 

	
 
  You should have received a copy of the GNU Affero General Public License
 
  along with DistRen.  If not, see <http://www.gnu.org/licenses/>.
 
*/
 

	
 
#ifndef _DISTREN_SLAVEFUNCS_H
 
#define _DISTREN_SLAVEFUNCS_H
 
#include "blendjob.h"
 

	
 
char *int_to_str(int nbr);
 
int ssh_keygen();
 
int register_user(char *username, char *email);
 
int login_user(char *username);
 
int conf_replace(char *username);
 
void exec_blender(struct blendjob* blendjob, char *input, char *output, int frame);
 

	
 

	
 
#endif
0 comments (0 inline, 0 general)