diff -u -r xqf-1.0.5/src/game.c xqf-1.0.5-patch/src/game.c
--- xqf-1.0.5/src/game.c	2006-06-18 15:15:18.000000000 +0200
+++ xqf-1.0.5-patch/src/game.c	2007-05-20 10:59:32.000000000 +0200
@@ -189,6 +189,45 @@
 	{ NULL, UNKNOWN_SERVER }
 };
 
+/* space name in executable fix */
+gchar ** space_fix_strsplit( const gchar *string,
+														 const gchar *delimiter,
+														 gint max_tokens )
+{
+	int i,k,len,
+			hit = 0;
+	gchar * localstring = NULL;
+	gchar **   retvalue = NULL;
+	 	
+	/* make a local copy of string to manipulate it
+	we'll free the region just before leaving the main if */
+	len = strlen(string);
+	localstring = (char *) malloc(len+1);
+	if ( localstring ) {
+		strcpy(localstring, string);
+		i=0;
+		while ( i<len-2-hit) {
+			if ( (localstring[i] == '\\') && (localstring[i+1] == ' ') ) {
+				localstring[i] = '\254'; 			
+				for ( k=i+1; k<=len-1; k++)
+					localstring[k]=localstring[k+1];
+				hit += 1;
+			}
+			i += 1;
+		}
+		retvalue = g_strsplit( localstring, delimiter, max_tokens);
+		if (retvalue)
+			if (retvalue[0]) {
+				len = strlen(retvalue[0]);
+				for ( i=0; i<len-1; i++)
+					if ( retvalue[0][i] == '\254' ) 
+						retvalue[0][i] = ' ';
+			}
+	free(localstring);
+	}
+	return retvalue;
+}
+
 void init_games()
 {
   unsigned i, j;
@@ -2331,10 +2370,10 @@
   enable_console      = str2bool(game_get_attribute(g->type,"enable_console"));
   pass_memory_options = str2bool(game_get_attribute(g->type,"pass_memory_options"));
 
-  cmdtokens = g_strsplit(g->cmd," ",0);
+  cmdtokens = space_fix_strsplit(g->cmd," ",0);
 
   if(cmdtokens && *cmdtokens[cmdi])
-    cmd=cmdtokens[cmdi++];
+			cmd=cmdtokens[cmdi++];
 
   /*
     Figure out what protocal the server is running so we can try to connect
diff -u -r xqf-1.0.5/src/launch.c xqf-1.0.5-patch/src/launch.c
--- xqf-1.0.5/src/launch.c	2005-10-07 14:55:15.000000000 +0200
+++ xqf-1.0.5-patch/src/launch.c	2007-05-20 08:16:52.000000000 +0200
@@ -285,9 +285,10 @@
 
       execvp (argv[0], argv);
   
-      g_snprintf (msg, CLIENT_ERROR_BUFFER, "%sexec(%s) failed: %s", 
+      g_snprintf (msg, CLIENT_ERROR_BUFFER, "%sexec(\"%s\") failed: %s", 
                           CLIENT_ERROR_MSG_HEAD, argv[0], g_strerror (errno));
 
+
 error_out:
       write (pipefds[1], msg, strlen (msg) + 1);
       close (pipefds[1]);
