d7a687c
diff -Nur xarchiver-0.5.2.orig/src/add_dialog.c xarchiver-0.5.2/src/add_dialog.c
d7a687c
--- xarchiver-0.5.2.orig/src/add_dialog.c	2008-11-10 04:41:31.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/add_dialog.c	2009-11-30 13:17:54.983349491 -0600
d7a687c
@@ -209,7 +209,7 @@
d7a687c
 	else
d7a687c
 		gtk_widget_set_size_request (add_dialog->dialog1,530,420);
d7a687c
 
d7a687c
-	if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_LZOP)
d7a687c
+	if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
d7a687c
 		gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),FALSE);
d7a687c
 	else
d7a687c
 		gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),TRUE);
d7a687c
@@ -222,7 +222,7 @@
d7a687c
 	else
d7a687c
 		gtk_widget_set_sensitive(add_dialog->store_path,TRUE);
d7a687c
 	/* 7z doesn't appear to let the user chooses if storing full paths */
d7a687c
-	if (archive->type == XARCHIVETYPE_7ZIP || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA)
d7a687c
+	if (archive->type == XARCHIVETYPE_7ZIP || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ )
d7a687c
  	{
d7a687c
  		flag = FALSE;
d7a687c
 	}
d7a687c
@@ -244,7 +244,7 @@
d7a687c
 		flag = TRUE;
d7a687c
 	gtk_widget_set_sensitive(add_dialog->solid_archive,flag);
d7a687c
 	
d7a687c
-	if (archive->type != XARCHIVETYPE_TAR && archive->type != XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type != XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_TAR_LZOP)
d7a687c
+	if (archive->type != XARCHIVETYPE_TAR && archive->type != XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type != XARCHIVETYPE_TAR_XZ && archive->type != XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_TAR_LZOP)
d7a687c
 	{
d7a687c
 		flag = TRUE;
d7a687c
 		if (archive->type == XARCHIVETYPE_7ZIP)
d7a687c
@@ -306,7 +306,7 @@
d7a687c
 		g_signal_connect (G_OBJECT (add_dialog->compression_value),"value-changed",G_CALLBACK (fix_adjustment_value), NULL);
d7a687c
 	gtk_tooltips_set_tip (add_dialog->option_tooltip,add_dialog->compression_scale, compression_msg, NULL );
d7a687c
 
d7a687c
-	if (archive->type == XARCHIVETYPE_TAR || archive->type == XARCHIVETYPE_TAR_GZ || archive->type == XARCHIVETYPE_TAR_LZMA || archive->type == XARCHIVETYPE_TAR_BZ2 || archive->type == XARCHIVETYPE_TAR_LZOP)
d7a687c
+	if (archive->type == XARCHIVETYPE_TAR || archive->type == XARCHIVETYPE_TAR_GZ || archive->type == XARCHIVETYPE_TAR_LZMA || archive->type == XARCHIVETYPE_TAR_XZ || archive->type == XARCHIVETYPE_TAR_BZ2 || archive->type == XARCHIVETYPE_TAR_LZOP)
d7a687c
 		flag = FALSE;
d7a687c
 	else
d7a687c
 		flag = TRUE;
d7a687c
diff -Nur xarchiver-0.5.2.orig/src/archive.h xarchiver-0.5.2/src/archive.h
d7a687c
--- xarchiver-0.5.2.orig/src/archive.h	2008-11-07 02:49:41.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/archive.h	2009-11-30 13:17:54.984326164 -0600
d7a687c
@@ -30,6 +30,7 @@
d7a687c
 	XARCHIVETYPE_BZIP2,
d7a687c
 	XARCHIVETYPE_GZIP,
d7a687c
 	XARCHIVETYPE_LZMA,
d7a687c
+	XARCHIVETYPE_XZ,
d7a687c
 	XARCHIVETYPE_LZOP,
d7a687c
 	XARCHIVETYPE_RAR,
d7a687c
 	XARCHIVETYPE_RPM,
d7a687c
@@ -37,6 +38,7 @@
d7a687c
 	XARCHIVETYPE_TAR_BZ2,
d7a687c
 	XARCHIVETYPE_TAR_GZ,
d7a687c
 	XARCHIVETYPE_TAR_LZMA,
d7a687c
+	XARCHIVETYPE_TAR_XZ,
d7a687c
 	XARCHIVETYPE_TAR_LZOP,
d7a687c
 	XARCHIVETYPE_ZIP,
d7a687c
 	XARCHIVETYPE_LHA,
d7a687c
diff -Nur xarchiver-0.5.2.orig/src/bzip2.c xarchiver-0.5.2/src/bzip2.c
d7a687c
--- xarchiver-0.5.2.orig/src/bzip2.c	2008-11-10 05:17:48.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/bzip2.c	2009-11-30 13:17:54.984326164 -0600
d7a687c
@@ -54,6 +54,15 @@
d7a687c
 		archive->extract = 	extract[archive->type];
d7a687c
 		xa_open_tar_compressed_file(archive);
d7a687c
 	}
d7a687c
+	else if (g_str_has_suffix(archive->escaped_path,".tar.xz") || g_str_has_suffix (archive->escaped_path,".txz"))
d7a687c
+	{
d7a687c
+		archive->type = XARCHIVETYPE_TAR_XZ;
d7a687c
+		archive->format = "TAR.XZ";
d7a687c
+		archive->delete =	delete[archive->type];
d7a687c
+		archive->add = 		add[archive->type];
d7a687c
+		archive->extract = 	extract[archive->type];
d7a687c
+		xa_open_tar_compressed_file(archive);
d7a687c
+	}
d7a687c
 	else if (g_str_has_suffix(archive->escaped_path,".tar.lzop") ||
d7a687c
 		g_str_has_suffix (archive->escaped_path,".tzo") ||
d7a687c
 		g_str_has_suffix(archive->escaped_path,".tar.lzo"))
d7a687c
@@ -85,6 +94,12 @@
d7a687c
 			executable = "lzma ";
d7a687c
 			len = 5;
d7a687c
 		}
d7a687c
+		else if (archive->type == XARCHIVETYPE_XZ)
d7a687c
+		{
d7a687c
+			archive->format = "XZ";
d7a687c
+			executable = "xz ";
d7a687c
+			len = 5;
d7a687c
+		}
d7a687c
 		else if (archive->type == XARCHIVETYPE_LZOP)
d7a687c
 		{
d7a687c
 			archive->format = "LZOP";
d7a687c
@@ -163,6 +178,8 @@
d7a687c
 		command = g_strconcat(tar," tfjv ",archive->escaped_path,NULL);
d7a687c
 	else if (archive->type == XARCHIVETYPE_TAR_LZMA)
d7a687c
 		command = g_strconcat(tar," tv --use-compress-program=lzma -f ",archive->escaped_path,NULL);
d7a687c
+	else if (archive->type == XARCHIVETYPE_TAR_XZ)
d7a687c
+		command = g_strconcat(tar," tv --use-compress-program=xz -f ",archive->escaped_path,NULL);
d7a687c
 	else if (archive->type == XARCHIVETYPE_TAR_LZOP)
d7a687c
 		command = g_strconcat(tar," tv --use-compress-program=lzop -f ",archive->escaped_path,NULL);
d7a687c
 	/* else fail? */
d7a687c
@@ -205,6 +222,11 @@
d7a687c
 		executable = "lzma ";
d7a687c
 		len = 5;
d7a687c
 	}
d7a687c
+	else if (archive->type == XARCHIVETYPE_XZ)
d7a687c
+	{
d7a687c
+		executable = "xz ";
d7a687c
+		len = 5;
d7a687c
+	}
d7a687c
 	else if (archive->type == XARCHIVETYPE_LZOP)
d7a687c
 	{
d7a687c
 		executable = "lzop ";
d7a687c
diff -Nur xarchiver-0.5.2.orig/src/extract_dialog.c xarchiver-0.5.2/src/extract_dialog.c
d7a687c
--- xarchiver-0.5.2.orig/src/extract_dialog.c	2008-11-10 04:28:11.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/extract_dialog.c	2009-11-30 13:17:54.985326653 -0600
d7a687c
@@ -815,6 +815,11 @@
d7a687c
 		archive->type = XARCHIVETYPE_TAR_LZMA;
d7a687c
 		archive->extract = 	extract[XARCHIVETYPE_TAR_LZMA];
d7a687c
 	}
d7a687c
+	else if (g_str_has_suffix(archive->escaped_path,".tar.xz")|| g_str_has_suffix (archive->escaped_path,".txz"))
d7a687c
+	{
d7a687c
+		archive->type = XARCHIVETYPE_TAR_XZ;
d7a687c
+		archive->extract = 	extract[XARCHIVETYPE_TAR_XZ];
d7a687c
+	}
d7a687c
 	else if (g_str_has_suffix(archive->escaped_path,".tar.lzop") ||
d7a687c
 			g_str_has_suffix (archive->escaped_path,".tzo") ||
d7a687c
 			g_str_has_suffix(archive->escaped_path,".tar.lzo"))
d7a687c
diff -Nur xarchiver-0.5.2.orig/src/main.c xarchiver-0.5.2/src/main.c
d7a687c
--- xarchiver-0.5.2.orig/src/main.c	2008-11-10 05:21:43.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/main.c	2009-11-30 13:17:54.986351656 -0600
d7a687c
@@ -296,9 +296,10 @@
d7a687c
 	open_archive[XARCHIVETYPE_BZIP2]  = &xa_open_bzip2_lzma;
d7a687c
 	open_archive[XARCHIVETYPE_GZIP]  = &xa_open_gzip;
d7a687c
 	open_archive[XARCHIVETYPE_LZMA]  = &xa_open_bzip2_lzma;
d7a687c
+	open_archive[XARCHIVETYPE_XZ]  = &xa_open_bzip2_lzma;
d7a687c
 	open_archive[XARCHIVETYPE_RAR]  = &xa_open_rar;
d7a687c
 	open_archive[XARCHIVETYPE_RPM]  = &xa_open_rpm;
d7a687c
-	open_archive[XARCHIVETYPE_TAR]  = open_archive[XARCHIVETYPE_TAR_BZ2] = open_archive[XARCHIVETYPE_TAR_GZ] = open_archive[XARCHIVETYPE_TAR_LZMA] = open_archive[XARCHIVETYPE_TAR_LZOP] = &xa_open_tar;
d7a687c
+	open_archive[XARCHIVETYPE_TAR]  = open_archive[XARCHIVETYPE_TAR_BZ2] = open_archive[XARCHIVETYPE_TAR_GZ] = open_archive[XARCHIVETYPE_TAR_LZMA] = open_archive[XARCHIVETYPE_TAR_XZ] = open_archive[XARCHIVETYPE_TAR_LZOP] = &xa_open_tar;
d7a687c
 	open_archive[XARCHIVETYPE_ZIP] = &xa_open_zip;
d7a687c
 	open_archive[XARCHIVETYPE_LHA] = &xa_open_lha;
d7a687c
 	open_archive[XARCHIVETYPE_LZOP] = &xa_open_bzip2_lzma;
d7a687c
@@ -310,6 +311,7 @@
d7a687c
 	delete[XARCHIVETYPE_BZIP2]  = 0;
d7a687c
 	delete[XARCHIVETYPE_GZIP]  = 0;
d7a687c
 	delete[XARCHIVETYPE_LZMA]  = 0;
d7a687c
+	delete[XARCHIVETYPE_XZ]  = 0;
d7a687c
 	delete[XARCHIVETYPE_RAR]  = &xa_rar_delete;
d7a687c
 	delete[XARCHIVETYPE_RPM]  = 0;
d7a687c
 	delete[XARCHIVETYPE_TAR]  = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete;
d7a687c
@@ -325,7 +327,7 @@
d7a687c
 	add[XARCHIVETYPE_BZIP2]  = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = &xa_tar_add;
d7a687c
 	add[XARCHIVETYPE_RAR]  = &xa_rar_add;
d7a687c
 	add[XARCHIVETYPE_RPM]  = 0;
d7a687c
-	add[XARCHIVETYPE_TAR]  = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
d7a687c
+	add[XARCHIVETYPE_TAR]  = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_XZ] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
d7a687c
 	add[XARCHIVETYPE_ZIP] = &xa_zip_add;
d7a687c
 	add[XARCHIVETYPE_LHA] = &xa_lha_add;
d7a687c
 	add[XARCHIVETYPE_LZOP] = &xa_tar_add;
d7a687c
@@ -337,7 +339,7 @@
d7a687c
 	extract[XARCHIVETYPE_BZIP2]  = extract[XARCHIVETYPE_GZIP] = extract[XARCHIVETYPE_LZMA] = &xa_tar_extract;
d7a687c
 	extract[XARCHIVETYPE_RAR]  = &xa_rar_extract;
d7a687c
 	extract[XARCHIVETYPE_RPM]  = &xa_rpm_extract;
d7a687c
-	extract[XARCHIVETYPE_TAR]  = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_LZOP] = &xa_tar_extract;
d7a687c
+	extract[XARCHIVETYPE_TAR]  = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_XZ] = extract[XARCHIVETYPE_TAR_LZOP] = &xa_tar_extract;
d7a687c
 	extract[XARCHIVETYPE_ZIP] = &xa_zip_extract;
d7a687c
 	extract[XARCHIVETYPE_LHA] = &xa_lha_extract;
d7a687c
 	extract[XARCHIVETYPE_LZOP] = &xa_tar_extract;
d7a687c
@@ -348,7 +350,7 @@
d7a687c
 	test[XARCHIVETYPE_DEB]  = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = 0;
d7a687c
 	test[XARCHIVETYPE_RAR]  = &xa_rar_test;
d7a687c
 	test[XARCHIVETYPE_RPM]  = 0;
d7a687c
-	test[XARCHIVETYPE_TAR]  = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_LZOP] = 0;
d7a687c
+	test[XARCHIVETYPE_TAR]  = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_XZ] = test[XARCHIVETYPE_TAR_LZOP] = 0;
d7a687c
 	test[XARCHIVETYPE_ZIP] = &xa_zip_test;
d7a687c
 	test[XARCHIVETYPE_LHA] = &xa_lha_test;
d7a687c
 	test[XARCHIVETYPE_LZOP] = 0;
d7a687c
@@ -392,6 +394,14 @@
d7a687c
 		g_free (absolute_path);
d7a687c
 	}
d7a687c
 
d7a687c
+	absolute_path = g_find_program_in_path("xz");
d7a687c
+	if ( absolute_path )
d7a687c
+	{
d7a687c
+		ArchiveType = g_list_append(ArchiveType, "xz");
d7a687c
+		ArchiveSuffix = g_list_append(ArchiveSuffix, "*.xz");
d7a687c
+		g_free (absolute_path);
d7a687c
+	}
d7a687c
+
d7a687c
 	absolute_path = g_find_program_in_path("lzop");
d7a687c
 	if ( absolute_path )
d7a687c
 	{
d7a687c
@@ -460,6 +470,11 @@
d7a687c
 			ArchiveType = g_list_append(ArchiveType, "tar.lzma");
d7a687c
 			ArchiveSuffix = g_list_append(ArchiveSuffix, "*.tlz");
d7a687c
 		}
d7a687c
+		if ( g_list_find ( ArchiveType , "xz") )
d7a687c
+		{
d7a687c
+			ArchiveType = g_list_append(ArchiveType, "tar.xz");
d7a687c
+			ArchiveSuffix = g_list_append(ArchiveSuffix, "*.txz");
d7a687c
+		}
d7a687c
 		if ( g_list_find ( ArchiveType , "lzo") )
d7a687c
 		{
d7a687c
 			ArchiveType = g_list_append(ArchiveType, "tar.lzo");
d7a687c
@@ -528,6 +543,8 @@
d7a687c
 		archive->type = XARCHIVETYPE_TAR_GZ;
d7a687c
 	else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzma") || g_str_has_suffix ( archive->escaped_path , ".tlz") )
d7a687c
 		archive->type = XARCHIVETYPE_TAR_LZMA;
d7a687c
+	else if ( g_str_has_suffix ( archive->escaped_path , ".tar.xz") || g_str_has_suffix ( archive->escaped_path , ".txz") )
d7a687c
+		archive->type = XARCHIVETYPE_TAR_XZ;
d7a687c
 	else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzo") ||
d7a687c
 		g_str_has_suffix ( archive->escaped_path , ".tzo") ||
d7a687c
 		g_str_has_suffix ( archive->escaped_path , ".tar.lzop"))
d7a687c
diff -Nur xarchiver-0.5.2.orig/src/new_dialog.c xarchiver-0.5.2/src/new_dialog.c
d7a687c
--- xarchiver-0.5.2.orig/src/new_dialog.c	2008-11-11 02:28:46.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/new_dialog.c	2009-11-30 13:17:54.987349701 -0600
d7a687c
@@ -202,6 +202,8 @@
d7a687c
 			type = XARCHIVETYPE_GZIP;
d7a687c
 		else if (strcmp ( ComboArchiveType,"lzma") == 0)
d7a687c
 			type = XARCHIVETYPE_LZMA;
d7a687c
+		else if (strcmp ( ComboArchiveType,"xz") == 0)
d7a687c
+			type = XARCHIVETYPE_XZ;
d7a687c
 		else if (strcmp ( ComboArchiveType,"lzo") == 0)
d7a687c
 			type = XARCHIVETYPE_LZOP;
d7a687c
 		else if (strcmp ( ComboArchiveType,"rar") == 0)
d7a687c
@@ -214,6 +216,8 @@
d7a687c
 			type = XARCHIVETYPE_TAR_GZ;
d7a687c
 		else if (strcmp ( ComboArchiveType,"tar.lzma") == 0)
d7a687c
 			type = XARCHIVETYPE_TAR_LZMA;
d7a687c
+		else if (strcmp ( ComboArchiveType,"tar.xz") == 0)
d7a687c
+			type = XARCHIVETYPE_TAR_XZ;
d7a687c
 		else if (strcmp ( ComboArchiveType,"tar.lzo") == 0)
d7a687c
 			type = XARCHIVETYPE_TAR_LZOP;
d7a687c
 		else if (strcmp ( ComboArchiveType,"jar") == 0 || strcmp ( ComboArchiveType,"zip") == 0 )
d7a687c
diff -Nur xarchiver-0.5.2.orig/src/tar.c xarchiver-0.5.2/src/tar.c
d7a687c
--- xarchiver-0.5.2.orig/src/tar.c	2008-11-10 04:28:34.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/tar.c	2009-11-30 13:19:34.037344951 -0600
d7a687c
@@ -242,6 +242,17 @@
d7a687c
 									files->str , NULL );
d7a687c
 		break;
d7a687c
 		
d7a687c
+		case XARCHIVETYPE_TAR_XZ:
d7a687c
+		if ( g_file_test ( archive->escaped_path , G_FILE_TEST_EXISTS ) )
d7a687c
+			xa_add_delete_bzip2_gzip_lzma_compressed_tar (files,archive,1);
d7a687c
+		else
d7a687c
+			command = g_strconcat (tar, " ",
d7a687c
+									archive->add_recurse ? "" : "--no-recursion ",
d7a687c
+									archive->remove_files ? "--remove-files " : "",
d7a687c
+									"--use-compress-program=xz -cvvf ",archive->escaped_path,
d7a687c
+									files->str , NULL );
d7a687c
+		break;
d7a687c
+		
d7a687c
 		case XARCHIVETYPE_TAR_LZOP:
d7a687c
 		if ( g_file_test ( archive->escaped_path , G_FILE_TEST_EXISTS ) )
d7a687c
 			xa_add_delete_bzip2_gzip_lzma_compressed_tar (files,archive,1);
d7a687c
@@ -449,6 +460,10 @@
d7a687c
 			executable = "lzma -f ";
d7a687c
 			filename = "dummy.lzma";
d7a687c
 		break;
d7a687c
+		case XARCHIVETYPE_TAR_XZ:
d7a687c
+			executable = "xz -f ";
d7a687c
+			filename = "dummy.xz";
d7a687c
+		break;
d7a687c
 		case XARCHIVETYPE_TAR_LZOP:
d7a687c
 			executable = "lzop -f ";
d7a687c
 			filename = "dummy.lzo";
d7a687c
diff -Nur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
d7a687c
--- xarchiver-0.5.2.orig/src/window.c	2008-11-11 02:31:45.000000000 -0600
d7a687c
+++ xarchiver-0.5.2/src/window.c	2009-11-30 13:17:54.990326583 -0600
d7a687c
@@ -1125,6 +1125,8 @@
d7a687c
 		xx = XARCHIVETYPE_GZIP;
d7a687c
 	else if (memcmp ( magic,"\x5d\x00\x00\x80",4) == 0)
d7a687c
 		xx = XARCHIVETYPE_LZMA;
d7a687c
+	else if (memcmp ( magic,"\xFD7zXZ\x00\0x00",3) || memcmp ( magic, "\xFD7zXZ\x00\0x10",3) == 0)
d7a687c
+		xx = XARCHIVETYPE_XZ;
d7a687c
 	else if (memcmp ( magic,"\211LZO",4) == 0)
d7a687c
 		xx = XARCHIVETYPE_LZOP;
d7a687c
 	else if (memcmp ( magic,"\xed\xab\xee\xdb",4) == 0)
d7a687c
@@ -1462,6 +1464,7 @@
d7a687c
 		case XARCHIVETYPE_GZIP:
d7a687c
 		case XARCHIVETYPE_BZIP2:
d7a687c
 		case XARCHIVETYPE_LZMA:
d7a687c
+		case XARCHIVETYPE_XZ:
d7a687c
 		case XARCHIVETYPE_LZOP:
d7a687c
 		case XARCHIVETYPE_RPM:
d7a687c
 		pos = 3;
d7a687c
@@ -1481,6 +1484,7 @@
d7a687c
 		case XARCHIVETYPE_TAR_GZ:
d7a687c
 		case XARCHIVETYPE_TAR_BZ2:
d7a687c
 		case XARCHIVETYPE_TAR_LZMA:
d7a687c
+		case XARCHIVETYPE_TAR_XZ:
d7a687c
 		case XARCHIVETYPE_TAR_LZOP:
d7a687c
 		case XARCHIVETYPE_TAR:
d7a687c
 		case XARCHIVETYPE_ZIP:
d7a687c
@@ -1525,6 +1529,7 @@
d7a687c
 		case XARCHIVETYPE_GZIP:
d7a687c
 		case XARCHIVETYPE_BZIP2:
d7a687c
 		case XARCHIVETYPE_LZMA:
d7a687c
+		case XARCHIVETYPE_XZ:
d7a687c
 		case XARCHIVETYPE_LZOP:
d7a687c
 		case XARCHIVETYPE_RPM:
d7a687c
 		pos = 3;
d7a687c
@@ -1544,6 +1549,7 @@
d7a687c
 		case XARCHIVETYPE_TAR_GZ:
d7a687c
 		case XARCHIVETYPE_TAR_BZ2:
d7a687c
 		case XARCHIVETYPE_TAR_LZMA:
d7a687c
+		case XARCHIVETYPE_TAR_XZ:
d7a687c
 		case XARCHIVETYPE_TAR_LZOP:
d7a687c
 		case XARCHIVETYPE_TAR:
d7a687c
 		case XARCHIVETYPE_ZIP: