diff -u -ruN control-center-2.10.1.orig/capplets/theme-switcher/gnome-theme-installer.c control-center-2.10.1/capplets/theme-switcher/gnome-theme-installer.c
--- control-center-2.10.1.orig/capplets/theme-switcher/gnome-theme-installer.c	2005-02-08 17:42:10.000000000 -0500
+++ control-center-2.10.1/capplets/theme-switcher/gnome-theme-installer.c	2005-05-26 12:17:39.000000000 -0400
@@ -139,19 +139,30 @@
 transfer_done_targz_idle_cb (gpointer data)
 {
 	int status;
-	gchar *command, *filename;
+	gchar *command, *filename, *gzip, *tar;
 	theme_properties *theme_props = data;
 		
+	if (!(gzip = g_find_program_in_path("gzip"))) {
+		return FALSE;
+	}
+	if (!(tar = g_find_program_in_path("tar"))) {
+		g_free(gzip);
+		return FALSE;
+	}
 	/* this should be something more clever and nonblocking */
 	filename = g_shell_quote(theme_props->filename);
-	command = g_strdup_printf ("sh -c 'cd \"%s\"; /bin/gzip -d -c < \"%s\" | /bin/tar xf - '",
-				    theme_props->target_tmp_dir, filename);
+	command = g_strdup_printf ("sh -c 'cd \"%s\"; %s -d -c < \"%s\" | %s xf - '",
+				    theme_props->target_tmp_dir, gzip, filename, tar);
 	g_free(filename);
 	if (g_spawn_command_line_sync (command, NULL, NULL, &status, NULL) && status == 0) {
 		g_free (command);
+		g_free(gzip);
+		g_free(tar);
 		return TRUE;
 	} else {	
 		g_free (command);
+		g_free(gzip);
+		g_free(tar);
 		return FALSE;
 	}
 }
@@ -171,18 +182,29 @@
 transfer_done_tarbz2_idle_cb (gpointer data)
 {
 	int status;
-	gchar *command, *filename;
+	gchar *command, *filename, *bzip2, *tar;
 	theme_properties *theme_props = data;
 	
+	if (!(bzip2 = g_find_program_in_path("bzip2"))) {
+		return FALSE;
+	}
+	if (!(tar = g_find_program_in_path("tar"))) {
+		g_free(bzip2);
+		return FALSE;
+	}
 	filename = g_shell_quote(theme_props->filename);
 	/* this should be something more clever and nonblocking */
-	command = g_strdup_printf ("sh -c 'cd \"%s\"; /usr/bin/bzip2 -d -c < \"%s\" | /bin/tar xf - '",
-				   theme_props->target_tmp_dir, filename);
+	command = g_strdup_printf ("sh -c 'cd \"%s\"; %s -d -c < \"%s\" | %s xf - '",
+				   theme_props->target_tmp_dir, bzip2, filename, tar);
 	g_free (filename);
 	if (g_spawn_command_line_sync (command, NULL, NULL, &status, NULL) && status == 0) {
+		g_free(bzip2);
+		g_free(tar);
 		g_free (command);
 		return TRUE;
 	} else {
+		g_free(bzip2);
+		g_free(tar);
 		g_free (command);
 		return FALSE;
 	}
@@ -193,7 +215,7 @@
 {
 	GtkWidget *dialog;
 	int len = strlen (path);
-	gchar *command,**dir, *first_line, *filename;
+	gchar *command,**dir, *first_line, *filename, *gzip, *bzip2, *tar;
 	int status,theme_type;
 	theme_properties *theme_props;
 	GnomeVFSURI *theme_source_dir, *theme_dest_dir;
@@ -206,17 +228,20 @@
 				 			g_get_home_dir(), 
 							g_random_int());
 		
+	gzip = g_find_program_in_path("gzip");
+	bzip2 = g_find_program_in_path("bzip2");
+	tar = g_find_program_in_path("tar");
 	
-	if (path && len > 7 && ( (!strcmp (path + len - 7, ".tar.gz")) || (!strcmp (path + len - 4, ".tgz")) )) {
+	if (tar && gzip && path && len > 7 && ( (!strcmp (path + len - 7, ".tar.gz")) || (!strcmp (path + len - 4, ".tgz")) )) {
 		filename = g_shell_quote (path);
-		command = g_strdup_printf ("sh -c '/bin/gzip -d -c < \"%s\" | /bin/tar ft -  | head -1'",
-					    filename);
+		command = g_strdup_printf ("sh -c '%s -d -c < \"%s\" | %s ft -  | head -1'",
+					    gzip, filename, tar);
 		theme_props->filetype=TARGZ;
 		g_free (filename);
-	} else if (path && len > 8 && !strcmp (path + len - 8, ".tar.bz2")) {
+	} else if (tar && bzip2 && path && len > 8 && !strcmp (path + len - 8, ".tar.bz2")) {
 		filename = g_shell_quote (path);
-		command = g_strdup_printf ("sh -c '/usr/bin/bzip2 -d -c < \"%s\" | /bin/tar ft - | head -1'",
-					    filename);
+		command = g_strdup_printf ("sh -c '%s -d -c < \"%s\" | %s ft - | head -1'",
+					    bzip2, filename, tar);
 		theme_props->filetype=TARBZ;
 		g_free (filename);
 	} else {
@@ -230,6 +255,9 @@
 		gnome_vfs_unlink(path);		
 		g_free (theme_props->target_tmp_dir);
 		g_free (theme_props);
+		g_free(gzip);
+		g_free(bzip2);
+		g_free(tar);
 		return;	
 	}
 	
@@ -247,6 +275,9 @@
 		g_free (command);
 		g_free (theme_props->target_tmp_dir);
 		g_free (theme_props);
+		g_free(gzip);
+		g_free(bzip2);
+		g_free(tar);
 		return;	
 	}
 	
@@ -254,7 +285,7 @@
 	theme_props->filename=g_strdup(path);
 	
 	if (theme_props->filetype == TARBZ ) {
-		if (!g_file_test ("/usr/bin/bzip2", G_FILE_TEST_EXISTS)) {
+		if (!bzip2) {
 			GtkWidget *dialog;
 				
 			dialog = gtk_message_dialog_new (NULL,
@@ -269,6 +300,9 @@
 			g_free (theme_props->target_tmp_dir);
 			g_free (theme_props->filename);
 			g_free (theme_props);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		}
 		
@@ -287,12 +321,15 @@
 			g_free (theme_props->filename);
 			g_free (theme_props);
 			g_free (command);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		}
 	}
 	
 	if (theme_props->filetype == TARGZ ) {
-		if (!g_file_test ("/bin/gzip", G_FILE_TEST_EXISTS)) {
+		if (!gzip) {
 			GtkWidget *dialog;
 
 			dialog = gtk_message_dialog_new (NULL,
@@ -307,6 +344,9 @@
 			g_free (theme_props->target_tmp_dir);
 			g_free (theme_props->filename);
 			g_free (theme_props);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		}
 		if (!transfer_done_targz_idle_cb(theme_props)) {
@@ -324,6 +364,9 @@
 			g_free (theme_props->filename);
 			g_free (theme_props);
 			g_free (command);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		}	
 	}
@@ -363,6 +406,9 @@
 			g_free (theme_props->theme_tmp_dir);
 			g_free (theme_props);
 			g_free (command);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		} else {
 			GtkWidget *dialog;
@@ -379,6 +425,9 @@
                         g_free (theme_props->theme_tmp_dir);
                         g_free (theme_props);
 			g_free (command);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		}
 		/* Move the Dir to the target dir */
@@ -407,6 +456,9 @@
 			g_free (theme_props->user_message);
                         g_free (theme_props);
 			g_free (command);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		} else {
 			GtkWidget *dialog;
@@ -426,6 +478,9 @@
 			g_free (theme_props->user_message);
                         g_free (theme_props);
 			g_free (command);
+			g_free(gzip);
+			g_free(bzip2);
+			g_free(tar);
 			return;	
 		}
 		
@@ -434,6 +489,9 @@
 	g_free (theme_props->target_tmp_dir);
 	g_free (theme_props->filename);
 	g_free (theme_props);
+	g_free(gzip);
+	g_free(bzip2);
+	g_free(tar);
 }
 
 static void
