--- 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);