diff -r -u xarchiver-0.5.2.orig/src/add_dialog.c xarchiver-0.5.2/src/add_dialog.c --- xarchiver-0.5.2.orig/src/add_dialog.c 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/add_dialog.c 2009-01-06 05:18:03 -0600 @@ -209,7 +209,7 @@ else gtk_widget_set_size_request (add_dialog->dialog1,530,420); - if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_LZOP) + if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_LZIP) gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),FALSE); else gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),TRUE); @@ -222,7 +222,7 @@ else gtk_widget_set_sensitive(add_dialog->store_path,TRUE); /* 7z doesn't appear to let the user chooses if storing full paths */ - if (archive->type == XARCHIVETYPE_7ZIP || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA) + if (archive->type == XARCHIVETYPE_7ZIP || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_LZIP || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA) { flag = FALSE; } @@ -244,7 +244,7 @@ flag = TRUE; gtk_widget_set_sensitive(add_dialog->solid_archive,flag); - 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) + 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 && archive->type != XARCHIVETYPE_TAR_LZIP) { flag = TRUE; if (archive->type == XARCHIVETYPE_7ZIP) @@ -306,7 +306,7 @@ g_signal_connect (G_OBJECT (add_dialog->compression_value),"value-changed",G_CALLBACK (fix_adjustment_value), NULL); gtk_tooltips_set_tip (add_dialog->option_tooltip,add_dialog->compression_scale, compression_msg, NULL ); - 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) + 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 || archive->type == XARCHIVETYPE_TAR_LZIP) flag = FALSE; else flag = TRUE; diff -r -u xarchiver-0.5.2.orig/src/archive.h xarchiver-0.5.2/src/archive.h --- xarchiver-0.5.2.orig/src/archive.h 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/archive.h 2009-01-06 05:18:03 -0600 @@ -31,6 +31,7 @@ XARCHIVETYPE_GZIP, XARCHIVETYPE_LZMA, XARCHIVETYPE_LZOP, + XARCHIVETYPE_LZIP, XARCHIVETYPE_RAR, XARCHIVETYPE_RPM, XARCHIVETYPE_TAR, @@ -38,6 +39,7 @@ XARCHIVETYPE_TAR_GZ, XARCHIVETYPE_TAR_LZMA, XARCHIVETYPE_TAR_LZOP, + XARCHIVETYPE_TAR_LZIP, XARCHIVETYPE_ZIP, XARCHIVETYPE_LHA, XARCHIVETYPE_COUNT diff -r -u xarchiver-0.5.2.orig/src/bzip2.c xarchiver-0.5.2/src/bzip2.c --- xarchiver-0.5.2.orig/src/bzip2.c 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/bzip2.c 2009-01-06 05:22:42 -0600 @@ -45,7 +45,7 @@ archive->extract = extract[archive->type]; xa_open_tar_compressed_file(archive); } - else if (g_str_has_suffix(archive->escaped_path,".tar.lzma") || g_str_has_suffix (archive->escaped_path,".tlz")) + else if (g_str_has_suffix(archive->escaped_path,".tar.lzma") || (g_str_has_suffix (archive->escaped_path,".tlz") && archive->type != XARCHIVETYPE_LZIP)) { archive->type = XARCHIVETYPE_TAR_LZMA; archive->format = "TAR.LZMA"; @@ -65,6 +65,16 @@ archive->extract = extract[archive->type]; xa_open_tar_compressed_file(archive); } + else if (g_str_has_suffix(archive->escaped_path,".tar.lz") || + g_str_has_suffix (archive->escaped_path,".tlz")) + { + archive->type = XARCHIVETYPE_TAR_LZIP; + archive->format = "TAR.LZIP"; + archive->delete = delete[archive->type]; + archive->add = add[archive->type]; + archive->extract = extract[archive->type]; + xa_open_tar_compressed_file(archive); + } else { struct stat my_stat; @@ -90,6 +100,12 @@ archive->format = "LZOP"; executable = "lzop "; len = 4; + } + else if (archive->type == XARCHIVETYPE_LZIP) + { + archive->format = "LZIP"; + executable = "lzip "; + len = 4; } /* else fail? */ archive->can_add = archive->has_test = archive->has_sfx = FALSE; archive->has_properties = archive->can_extract = TRUE; @@ -165,6 +181,8 @@ command = g_strconcat(tar," tv --use-compress-program=lzma -f ",archive->escaped_path,NULL); else if (archive->type == XARCHIVETYPE_TAR_LZOP) command = g_strconcat(tar," tv --use-compress-program=lzop -f ",archive->escaped_path,NULL); + else if (archive->type == XARCHIVETYPE_TAR_LZIP) + command = g_strconcat(tar," tv --use-compress-program=lzip -f ",archive->escaped_path,NULL); /* else fail? */ archive->has_properties = archive->can_add = archive->can_extract = TRUE; @@ -210,6 +228,11 @@ executable = "lzop "; len = 5; } + else if (archive->type == XARCHIVETYPE_LZIP) + { + executable = "lzip "; + len = 5; + } /* else fail? */ filename = xa_remove_path_from_archive_name(archive->escaped_path); dot = strrchr(filename,'.'); diff -r -u xarchiver-0.5.2.orig/src/extract_dialog.c xarchiver-0.5.2/src/extract_dialog.c --- xarchiver-0.5.2.orig/src/extract_dialog.c 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/extract_dialog.c 2009-01-06 05:26:50 -0600 @@ -223,7 +223,7 @@ else gtk_widget_set_size_request (dialog_data->dialog1,-1,370); - if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_LZOP) + if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_LZIP) gtk_window_set_title (GTK_WINDOW (dialog_data->dialog1),_("Decompress file")); else gtk_window_set_title (GTK_WINDOW (dialog_data->dialog1),_("Extract files")); @@ -244,11 +244,11 @@ else gtk_widget_set_sensitive (dialog_data->selected_radio,FALSE); - if ( (xa_main_window == NULL && is_tar_compressed(archive->type)) || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_RPM || archive->type == XARCHIVETYPE_LZOP) + if ( (xa_main_window == NULL && is_tar_compressed(archive->type)) || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_RPM || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_LZIP) flag = FALSE; gtk_widget_set_sensitive (dialog_data->extract_full,flag); - if (archive->type != XARCHIVETYPE_TAR && archive->type != XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type != XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_DEB && archive->type != XARCHIVETYPE_TAR_LZOP) + if (archive->type != XARCHIVETYPE_TAR && archive->type != XARCHIVETYPE_TAR_GZ && archive->type != XARCHIVETYPE_TAR_LZMA && archive->type != XARCHIVETYPE_TAR_BZ2 && archive->type != XARCHIVETYPE_DEB && archive->type != XARCHIVETYPE_TAR_LZOP && archive->type != XARCHIVETYPE_TAR_LZIP) flag = FALSE; else flag = TRUE; @@ -303,7 +303,7 @@ case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_DELETE_EVENT: done = TRUE; - if (xa_main_window && (archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_LZOP)) + if (xa_main_window && (archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_LZIP)) { gtk_widget_set_sensitive (Stop_button,FALSE); xa_set_button_state (1,1,GTK_WIDGET_IS_SENSITIVE(save1),GTK_WIDGET_IS_SENSITIVE(close1),0,0,0,0,0,0,0); @@ -810,7 +810,7 @@ archive->type = XARCHIVETYPE_TAR_BZ2; archive->extract = extract[XARCHIVETYPE_TAR_BZ2]; } - else if (g_str_has_suffix(archive->escaped_path,".tar.lzma")|| g_str_has_suffix (archive->escaped_path,".tlz")) + else if (g_str_has_suffix(archive->escaped_path,".tar.lzma")|| (g_str_has_suffix (archive->escaped_path,".tlz") && archive->type != XARCHIVETYPE_LZIP)) { archive->type = XARCHIVETYPE_TAR_LZMA; archive->extract = extract[XARCHIVETYPE_TAR_LZMA]; @@ -822,6 +822,12 @@ archive->type = XARCHIVETYPE_TAR_LZOP; archive->extract = extract[XARCHIVETYPE_TAR_LZOP]; } + else if (g_str_has_suffix(archive->escaped_path,".tar.lz") || + g_str_has_suffix (archive->escaped_path,".tlz")) + { + archive->type = XARCHIVETYPE_TAR_LZIP; + archive->extract = extract[XARCHIVETYPE_TAR_LZIP]; + } (*archive->extract)(archive,NULL); xa_clean_archive_structure(archive); return NULL; diff -r -u xarchiver-0.5.2.orig/src/main.c xarchiver-0.5.2/src/main.c --- xarchiver-0.5.2.orig/src/main.c 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/main.c 2009-01-06 05:27:57 -0600 @@ -298,10 +298,11 @@ open_archive[XARCHIVETYPE_LZMA] = &xa_open_bzip2_lzma; open_archive[XARCHIVETYPE_RAR] = &xa_open_rar; open_archive[XARCHIVETYPE_RPM] = &xa_open_rpm; - 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; + open_archive[XARCHIVETYPE_TAR] = open_archive[XARCHIVETYPE_TAR_BZ2] = open_archive[XARCHIVETYPE_TAR_GZ] = open_archive[XARCHIVETYPE_TAR_LZMA] = open_archive[XARCHIVETYPE_TAR_LZOP] = open_archive[XARCHIVETYPE_TAR_LZIP] = &xa_open_tar; open_archive[XARCHIVETYPE_ZIP] = &xa_open_zip; open_archive[XARCHIVETYPE_LHA] = &xa_open_lha; open_archive[XARCHIVETYPE_LZOP] = &xa_open_bzip2_lzma; + open_archive[XARCHIVETYPE_LZIP] = &xa_open_bzip2_lzma; delete[0] = 0; delete[XARCHIVETYPE_7ZIP] = &xa_7zip_delete; @@ -312,10 +313,11 @@ delete[XARCHIVETYPE_LZMA] = 0; delete[XARCHIVETYPE_RAR] = &xa_rar_delete; delete[XARCHIVETYPE_RPM] = 0; - delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete; + delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_LZOP] = delete[XARCHIVETYPE_TAR_LZIP] = &xa_tar_delete; delete[XARCHIVETYPE_ZIP] = &xa_zip_delete; delete[XARCHIVETYPE_LHA] = &xa_lha_delete; delete[XARCHIVETYPE_LZOP] = 0; + delete[XARCHIVETYPE_LZIP] = 0; add[0] = 0; @@ -325,10 +327,11 @@ add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = &xa_tar_add; add[XARCHIVETYPE_RAR] = &xa_rar_add; add[XARCHIVETYPE_RPM] = 0; - add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add; + add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_LZOP] = add[XARCHIVETYPE_TAR_LZIP] = &xa_tar_add; add[XARCHIVETYPE_ZIP] = &xa_zip_add; add[XARCHIVETYPE_LHA] = &xa_lha_add; add[XARCHIVETYPE_LZOP] = &xa_tar_add; + add[XARCHIVETYPE_LZIP] = &xa_tar_add; extract[0] = 0; extract[XARCHIVETYPE_7ZIP] = &xa_7zip_extract; @@ -337,10 +340,11 @@ extract[XARCHIVETYPE_BZIP2] = extract[XARCHIVETYPE_GZIP] = extract[XARCHIVETYPE_LZMA] = &xa_tar_extract; extract[XARCHIVETYPE_RAR] = &xa_rar_extract; extract[XARCHIVETYPE_RPM] = &xa_rpm_extract; - extract[XARCHIVETYPE_TAR] = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_LZOP] = &xa_tar_extract; + extract[XARCHIVETYPE_TAR] = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_LZOP] = extract[XARCHIVETYPE_TAR_LZIP] = &xa_tar_extract; extract[XARCHIVETYPE_ZIP] = &xa_zip_extract; extract[XARCHIVETYPE_LHA] = &xa_lha_extract; extract[XARCHIVETYPE_LZOP] = &xa_tar_extract; + extract[XARCHIVETYPE_LZIP] = &xa_tar_extract; test[0] = 0; test[XARCHIVETYPE_7ZIP] = &xa_7zip_test; @@ -348,10 +352,11 @@ test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = 0; test[XARCHIVETYPE_RAR] = &xa_rar_test; test[XARCHIVETYPE_RPM] = 0; - test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_LZOP] = 0; + test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_LZOP] = test[XARCHIVETYPE_TAR_LZIP] = 0; test[XARCHIVETYPE_ZIP] = &xa_zip_test; test[XARCHIVETYPE_LHA] = &xa_lha_test; test[XARCHIVETYPE_LZOP] = 0; + test[XARCHIVETYPE_LZIP] = 0; absolute_path = g_find_program_in_path("arj"); if ( absolute_path ) @@ -400,6 +405,14 @@ g_free (absolute_path); } + absolute_path = g_find_program_in_path("lzip"); + if ( absolute_path ) + { + ArchiveType = g_list_append(ArchiveType, "lzip"); + ArchiveSuffix = g_list_append(ArchiveSuffix, "*.lz"); + g_free (absolute_path); + } + absolute_path = g_find_program_in_path("lha"); if (absolute_path) { @@ -465,6 +478,11 @@ ArchiveType = g_list_append(ArchiveType, "tar.lzo"); ArchiveSuffix = g_list_append(ArchiveSuffix, "*.tzo"); } + if ( g_list_find ( ArchiveType , "lzip") ) + { + ArchiveType = g_list_append(ArchiveType, "tar.lz"); + ArchiveSuffix = g_list_append(ArchiveSuffix, "*.lz"); + } } else tar = "gtar"; @@ -526,12 +544,15 @@ archive->type = XARCHIVETYPE_TAR_BZ2; else if ( g_str_has_suffix ( archive->escaped_path , ".tar.gz") || g_str_has_suffix ( archive->escaped_path , ".tgz") ) archive->type = XARCHIVETYPE_TAR_GZ; - else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzma") || g_str_has_suffix ( archive->escaped_path , ".tlz") ) + else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzma") || (g_str_has_suffix ( archive->escaped_path , ".tlz") && archive->type != XARCHIVETYPE_LZIP) ) archive->type = XARCHIVETYPE_TAR_LZMA; else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzo") || g_str_has_suffix ( archive->escaped_path , ".tzo") || g_str_has_suffix ( archive->escaped_path , ".tar.lzop")) archive->type = XARCHIVETYPE_TAR_LZOP; + else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lz") || + g_str_has_suffix ( archive->escaped_path , ".tlz")) + archive->type = XARCHIVETYPE_TAR_LZIP; return (archive); } diff -r -u xarchiver-0.5.2.orig/src/new_dialog.c xarchiver-0.5.2/src/new_dialog.c --- xarchiver-0.5.2.orig/src/new_dialog.c 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/new_dialog.c 2009-01-06 05:18:03 -0600 @@ -204,6 +204,8 @@ type = XARCHIVETYPE_LZMA; else if (strcmp ( ComboArchiveType,"lzo") == 0) type = XARCHIVETYPE_LZOP; + else if (strcmp ( ComboArchiveType,"lzip") == 0) + type = XARCHIVETYPE_LZIP; else if (strcmp ( ComboArchiveType,"rar") == 0) type = XARCHIVETYPE_RAR; else if (strcmp ( ComboArchiveType,"tar") == 0) @@ -216,6 +218,8 @@ type = XARCHIVETYPE_TAR_LZMA; else if (strcmp ( ComboArchiveType,"tar.lzo") == 0) type = XARCHIVETYPE_TAR_LZOP; + else if (strcmp ( ComboArchiveType,"tar.lz") == 0) + type = XARCHIVETYPE_TAR_LZIP; else if (strcmp ( ComboArchiveType,"jar") == 0 || strcmp ( ComboArchiveType,"zip") == 0 ) type = XARCHIVETYPE_ZIP; else if (strcmp ( ComboArchiveType,"rpm") == 0) diff -r -u xarchiver-0.5.2.orig/src/tar.c xarchiver-0.5.2/src/tar.c --- xarchiver-0.5.2.orig/src/tar.c 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/tar.c 2009-01-06 05:18:03 -0600 @@ -253,6 +253,17 @@ files->str , NULL ); break; + case XARCHIVETYPE_TAR_LZIP: + if ( g_file_test ( archive->escaped_path , G_FILE_TEST_EXISTS ) ) + xa_add_delete_bzip2_gzip_lzma_compressed_tar (files,archive,1); + else + command = g_strconcat (tar, " ", + archive->add_recurse ? "" : "--no-recursion ", + archive->remove_files ? "--remove-files " : "", + "--use-compress-program=lzip -cvvf ",archive->escaped_path, + files->str , NULL ); + break; + case XARCHIVETYPE_BZIP2: command = g_strconcat("sh -c \"bzip2 -c ",files->str,"> ",archive->escaped_path,"\"",NULL); break; @@ -269,6 +280,10 @@ command = g_strconcat("sh -c \"lzop -c ",files->str,"> ",archive->escaped_path,"\"",NULL); break; + case XARCHIVETYPE_LZIP: + command = g_strconcat("sh -c \"lzip -c ",files->str,"> ",archive->escaped_path,"\"",NULL); + break; + default: command = NULL; } @@ -397,6 +412,26 @@ } break; + case XARCHIVETYPE_TAR_LZIP: + if (archive->full_path == 1) + { + command = g_strconcat (tar, " --use-compress-program=lzip -xvf " , archive->escaped_path, + #ifdef __FreeBSD__ + archive->overwrite ? " " : " -k", + #else + archive->overwrite ? " --overwrite" : " --keep-old-files", + #endif + archive->tar_touch ? " --touch" : "", + " -C ",archive->extraction_path," ",names->str,NULL); + } + else + { + result = xa_extract_tar_without_directories ( "tar --use-compress-program=lzip -xvf ",archive,names->str); + command = NULL; + } + break; + + case XARCHIVETYPE_LZMA: result = lzma_bzip2_extract(archive,NULL); command = NULL; @@ -407,6 +442,11 @@ command = NULL; break; + case XARCHIVETYPE_LZIP: + result = lzma_bzip2_extract(archive,NULL); + command = NULL; + break; + case XARCHIVETYPE_BZIP2: result = lzma_bzip2_extract(archive,NULL); command = NULL; @@ -453,6 +493,10 @@ executable = "lzop -f "; filename = "dummy.lzo"; break; + case XARCHIVETYPE_TAR_LZIP: + executable = "lzip -f "; + filename = "dummy.lz"; + break; default: break; diff -r -u xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c --- xarchiver-0.5.2.orig/src/window.c 2009-01-05 12:14:57 -0600 +++ xarchiver-0.5.2/src/window.c 2009-01-06 05:18:03 -0600 @@ -1127,6 +1127,8 @@ xx = XARCHIVETYPE_LZMA; else if (memcmp ( magic,"\211LZO",4) == 0) xx = XARCHIVETYPE_LZOP; + else if (memcmp ( magic,"LZIP",4) == 0) + xx = XARCHIVETYPE_LZIP; else if (memcmp ( magic,"\xed\xab\xee\xdb",4) == 0) xx = XARCHIVETYPE_RPM; else if (memcmp ( magic,"\x37\x7a\xbc\xaf\x27\x1c",6) == 0) @@ -1463,6 +1465,7 @@ case XARCHIVETYPE_BZIP2: case XARCHIVETYPE_LZMA: case XARCHIVETYPE_LZOP: + case XARCHIVETYPE_LZIP: case XARCHIVETYPE_RPM: pos = 3; break; @@ -1482,6 +1485,7 @@ case XARCHIVETYPE_TAR_BZ2: case XARCHIVETYPE_TAR_LZMA: case XARCHIVETYPE_TAR_LZOP: + case XARCHIVETYPE_TAR_LZIP: case XARCHIVETYPE_TAR: case XARCHIVETYPE_ZIP: pos = 5; @@ -1526,6 +1530,7 @@ case XARCHIVETYPE_BZIP2: case XARCHIVETYPE_LZMA: case XARCHIVETYPE_LZOP: + case XARCHIVETYPE_LZIP: case XARCHIVETYPE_RPM: pos = 3; break; @@ -1545,6 +1550,7 @@ case XARCHIVETYPE_TAR_BZ2: case XARCHIVETYPE_TAR_LZMA: case XARCHIVETYPE_TAR_LZOP: + case XARCHIVETYPE_TAR_LZIP: case XARCHIVETYPE_TAR: case XARCHIVETYPE_ZIP: pos = 5;