--- xarchiver-0.5.2/src/7zip.c.orig	2011-09-23 14:33:55.607380826 +1000
+++ xarchiver-0.5.2/src/7zip.c	2011-09-23 14:36:06.034053598 +1000
@@ -231,11 +231,16 @@ void xa_7zip_add (XArchive *archive,GStr
 
 gboolean xa_7zip_extract(XArchive *archive,GSList *files)
 {
-	gchar *command,*e_filename = NULL;
+	gchar *command,*e_filename = NULL, *exe;
 	GSList *list = NULL,*_files = NULL;
 	GString *names = g_string_new("");
 	gboolean result = FALSE;
 
+	if (sevenzr)
+		exe = "7zr ";
+	if (sevenza)
+		exe = "7za ";
+
 	_files = files;
 	while (_files)
 	{
@@ -248,13 +253,13 @@ gboolean xa_7zip_extract(XArchive *archi
 	g_slist_free(_files);
 
 	if (archive->passwd != NULL)
-		command = g_strconcat ("7za " , archive->full_path ? "x" : "e",
+		command = g_strconcat (exe , archive->full_path ? "x" : "e",
 								" -p",archive->passwd,
 								archive->overwrite ? " -aoa" : " -aos",
 								" -bd ",
 								archive->escaped_path,names->str , " -o",archive->extraction_path,NULL);
 	else
-		command = g_strconcat ( "7za " , archive->full_path ? "x" : "e",
+		command = g_strconcat ( exe , archive->full_path ? "x" : "e",
 								archive->overwrite ? " -aoa" : " -aos",
 								" -bd ",
 								archive->escaped_path,names->str , " -o",archive->extraction_path,NULL);
@@ -267,14 +272,19 @@ gboolean xa_7zip_extract(XArchive *archi
 
 void xa_7zip_test (XArchive *archive)
 {
-	gchar *command = NULL;
+	gchar *command = NULL, *exe;
 	GSList *list = NULL;
 
+	if (sevenzr)
+		exe = "7zr ";
+	if (sevenza)
+		exe = "7za ";
+
 	archive->status = XA_ARCHIVESTATUS_TEST;
 	if (archive->passwd != NULL)
-		command = g_strconcat ( "7za t -p" , archive->passwd , " " , archive->escaped_path, NULL);
+		command = g_strconcat ( exe, " t -p" , archive->passwd , " " , archive->escaped_path, NULL);
 	else
-		command = g_strconcat ("7za t " , archive->escaped_path, NULL);
+		command = g_strconcat ( exe, " t " , archive->escaped_path, NULL);
 
 	list = g_slist_append(list,command);
 	xa_run_command (archive,list);
