diff -Naur evilwm-0.99.25/evilwm.h evilwm-0.99.25.new/evilwm.h
--- evilwm-0.99.25/evilwm.h	2006-04-26 20:53:10.000000000 +0200
+++ evilwm-0.99.25.new/evilwm.h	2006-08-08 15:15:23.000000000 +0200
@@ -185,7 +185,7 @@
 extern unsigned int     grabmask1;
 extern unsigned int     grabmask2;
 extern unsigned int     altmask;
-extern const char       *opt_term[3];
+extern const char       *opt_term;
 extern int              opt_bw;
 #ifdef SNAP
 extern int              opt_snap;
@@ -225,7 +225,7 @@
 extern int need_client_tidy;
 extern int ignore_xerror;
 int handle_xerror(Display *dsply, XErrorEvent *e);
-void spawn(const char *const cmd[]);
+void spawn(const char *const cmd);
 void handle_signal(int signo);
 
 /* new.c */
diff -Naur evilwm-0.99.25/main.c evilwm-0.99.25.new/main.c
--- evilwm-0.99.25/main.c	2006-04-26 20:53:10.000000000 +0200
+++ evilwm-0.99.25.new/main.c	2006-08-08 15:09:27.000000000 +0200
@@ -47,7 +47,7 @@
 unsigned int grabmask1 = ControlMask|Mod1Mask;
 unsigned int grabmask2 = Mod1Mask;
 unsigned int altmask = ShiftMask;
-const char   *opt_term[3] = { DEF_TERM, DEF_TERM, NULL };
+const char   *opt_term = DEF_TERM;
 int          opt_bw = DEF_BW;
 #ifdef SNAP
 int          opt_snap = 0;
@@ -87,8 +87,7 @@
 		else if (!strcmp(argv[i], "-bw") && i+1<argc)
 			opt_bw = atoi(argv[++i]);
 		else if (!strcmp(argv[i], "-term") && i+1<argc) {
-			opt_term[0] = argv[++i];
-			opt_term[1] = opt_term[0];
+			opt_term = argv[++i];
 #ifdef SNAP
 		} else if (!strcmp(argv[i], "-snap") && i+1<argc) {
 			opt_snap = atoi(argv[++i]);
diff -Naur evilwm-0.99.25/misc.c evilwm-0.99.25.new/misc.c
--- evilwm-0.99.25/misc.c	2006-04-26 14:02:03.000000000 +0200
+++ evilwm-0.99.25.new/misc.c	2006-08-08 15:22:31.000000000 +0200
@@ -8,6 +8,7 @@
 #include <signal.h>
 #include <sys/wait.h>
 #include <unistd.h>
+#include <string.h>
 #include "evilwm.h"
 #include "log.h"
 
@@ -15,10 +16,12 @@
 int ignore_xerror = 0;
 
 /* Now do this by fork()ing twice so we don't have to worry about SIGCHLDs */
-void spawn(const char *const cmd[]) {
+void spawn(const char *const cmd) {
 	ScreenInfo *current_screen = find_current_screen();
 	pid_t pid;
+	char *exec_command = NULL;
 
+	exec_command = strdup("exec ");
 	if (current_screen && current_screen->display)
 		putenv(current_screen->display);
 	if (!(pid = fork())) {
@@ -29,12 +32,13 @@
 			 * been "const char *const argv[]", but the committee
 			 * favored legacy code over modern code, and modern
 			 * compilers bark at our extra const. (LD) */
-			case 0: execvp(cmd[0], cmd+1);
+			case 0: system(strcat(exec_command, cmd));
 			default: _exit(0);
 		}
 	}
 	if (pid > 0)
 		wait(NULL);
+	free(exec_command);
 }
 
 void handle_signal(int signo) {
