Magellan Linux

Annotation of /trunk/xarchiver/patches/xarchiver-0.5.2-xz-support.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1581 - (hide annotations) (download)
Mon Nov 28 20:22:05 2011 UTC (12 years, 6 months ago) by niro
File size: 14741 byte(s)
-adding xarchiver patches
1 niro 1581 Patch from: http://slackbuilds.org/repository/13.1/system/xarchiver/
2    
3     Not submitted upstream because the upstream author rewrote the code. So, this
4     patch may be dropped when/if upstream releases a new version
5    
6     diff -Nur xarchiver-0.5.2.orig/src/add_dialog.c xarchiver-0.5.2/src/add_dialog.c
7     --- xarchiver-0.5.2.orig/src/add_dialog.c 2008-11-10 04:41:31.000000000 -0600
8     +++ xarchiver-0.5.2/src/add_dialog.c 2009-11-30 13:17:54.983349491 -0600
9     @@ -209,7 +209,7 @@
10     else
11     gtk_widget_set_size_request (add_dialog->dialog1,530,420);
12    
13     - if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_LZOP)
14     + if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
15     gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),FALSE);
16     else
17     gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(add_dialog->filechooserwidget1),TRUE);
18     @@ -222,7 +222,7 @@
19     else
20     gtk_widget_set_sensitive(add_dialog->store_path,TRUE);
21     /* 7z doesn't appear to let the user chooses if storing full paths */
22     - if (archive->type == XARCHIVETYPE_7ZIP || archive->type == XARCHIVETYPE_LZOP || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA)
23     + 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 )
24     {
25     flag = FALSE;
26     }
27     @@ -244,7 +244,7 @@
28     flag = TRUE;
29     gtk_widget_set_sensitive(add_dialog->solid_archive,flag);
30    
31     - 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)
32     + 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)
33     {
34     flag = TRUE;
35     if (archive->type == XARCHIVETYPE_7ZIP)
36     @@ -306,7 +306,7 @@
37     g_signal_connect (G_OBJECT (add_dialog->compression_value),"value-changed",G_CALLBACK (fix_adjustment_value), NULL);
38     gtk_tooltips_set_tip (add_dialog->option_tooltip,add_dialog->compression_scale, compression_msg, NULL );
39    
40     - 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)
41     + 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)
42     flag = FALSE;
43     else
44     flag = TRUE;
45     diff -Nur xarchiver-0.5.2.orig/src/archive.h xarchiver-0.5.2/src/archive.h
46     --- xarchiver-0.5.2.orig/src/archive.h 2008-11-07 02:49:41.000000000 -0600
47     +++ xarchiver-0.5.2/src/archive.h 2009-11-30 13:17:54.984326164 -0600
48     @@ -30,6 +30,7 @@
49     XARCHIVETYPE_BZIP2,
50     XARCHIVETYPE_GZIP,
51     XARCHIVETYPE_LZMA,
52     + XARCHIVETYPE_XZ,
53     XARCHIVETYPE_LZOP,
54     XARCHIVETYPE_RAR,
55     XARCHIVETYPE_RPM,
56     @@ -37,6 +38,7 @@
57     XARCHIVETYPE_TAR_BZ2,
58     XARCHIVETYPE_TAR_GZ,
59     XARCHIVETYPE_TAR_LZMA,
60     + XARCHIVETYPE_TAR_XZ,
61     XARCHIVETYPE_TAR_LZOP,
62     XARCHIVETYPE_ZIP,
63     XARCHIVETYPE_LHA,
64     diff -Nur xarchiver-0.5.2.orig/src/bzip2.c xarchiver-0.5.2/src/bzip2.c
65     --- xarchiver-0.5.2.orig/src/bzip2.c 2008-11-10 05:17:48.000000000 -0600
66     +++ xarchiver-0.5.2/src/bzip2.c 2009-11-30 13:17:54.984326164 -0600
67     @@ -54,6 +54,15 @@
68     archive->extract = extract[archive->type];
69     xa_open_tar_compressed_file(archive);
70     }
71     + else if (g_str_has_suffix(archive->escaped_path,".tar.xz") || g_str_has_suffix (archive->escaped_path,".txz"))
72     + {
73     + archive->type = XARCHIVETYPE_TAR_XZ;
74     + archive->format = "TAR.XZ";
75     + archive->delete = delete[archive->type];
76     + archive->add = add[archive->type];
77     + archive->extract = extract[archive->type];
78     + xa_open_tar_compressed_file(archive);
79     + }
80     else if (g_str_has_suffix(archive->escaped_path,".tar.lzop") ||
81     g_str_has_suffix (archive->escaped_path,".tzo") ||
82     g_str_has_suffix(archive->escaped_path,".tar.lzo"))
83     @@ -85,6 +94,12 @@
84     executable = "lzma ";
85     len = 5;
86     }
87     + else if (archive->type == XARCHIVETYPE_XZ)
88     + {
89     + archive->format = "XZ";
90     + executable = "xz ";
91     + len = 5;
92     + }
93     else if (archive->type == XARCHIVETYPE_LZOP)
94     {
95     archive->format = "LZOP";
96     @@ -163,6 +178,8 @@
97     command = g_strconcat(tar," tfjv ",archive->escaped_path,NULL);
98     else if (archive->type == XARCHIVETYPE_TAR_LZMA)
99     command = g_strconcat(tar," tv --use-compress-program=lzma -f ",archive->escaped_path,NULL);
100     + else if (archive->type == XARCHIVETYPE_TAR_XZ)
101     + command = g_strconcat(tar," tv --use-compress-program=xz -f ",archive->escaped_path,NULL);
102     else if (archive->type == XARCHIVETYPE_TAR_LZOP)
103     command = g_strconcat(tar," tv --use-compress-program=lzop -f ",archive->escaped_path,NULL);
104     /* else fail? */
105     @@ -205,6 +222,11 @@
106     executable = "lzma ";
107     len = 5;
108     }
109     + else if (archive->type == XARCHIVETYPE_XZ)
110     + {
111     + executable = "xz ";
112     + len = 5;
113     + }
114     else if (archive->type == XARCHIVETYPE_LZOP)
115     {
116     executable = "lzop ";
117     diff -Nur xarchiver-0.5.2.orig/src/extract_dialog.c xarchiver-0.5.2/src/extract_dialog.c
118     --- xarchiver-0.5.2.orig/src/extract_dialog.c 2008-11-10 04:28:11.000000000 -0600
119     +++ xarchiver-0.5.2/src/extract_dialog.c 2009-11-30 13:17:54.985326653 -0600
120     @@ -815,6 +815,11 @@
121     archive->type = XARCHIVETYPE_TAR_LZMA;
122     archive->extract = extract[XARCHIVETYPE_TAR_LZMA];
123     }
124     + else if (g_str_has_suffix(archive->escaped_path,".tar.xz")|| g_str_has_suffix (archive->escaped_path,".txz"))
125     + {
126     + archive->type = XARCHIVETYPE_TAR_XZ;
127     + archive->extract = extract[XARCHIVETYPE_TAR_XZ];
128     + }
129     else if (g_str_has_suffix(archive->escaped_path,".tar.lzop") ||
130     g_str_has_suffix (archive->escaped_path,".tzo") ||
131     g_str_has_suffix(archive->escaped_path,".tar.lzo"))
132     diff -Nur xarchiver-0.5.2.orig/src/main.c xarchiver-0.5.2/src/main.c
133     --- xarchiver-0.5.2.orig/src/main.c 2008-11-10 05:21:43.000000000 -0600
134     +++ xarchiver-0.5.2/src/main.c 2009-11-30 13:17:54.986351656 -0600
135     @@ -296,9 +296,10 @@
136     open_archive[XARCHIVETYPE_BZIP2] = &xa_open_bzip2_lzma;
137     open_archive[XARCHIVETYPE_GZIP] = &xa_open_gzip;
138     open_archive[XARCHIVETYPE_LZMA] = &xa_open_bzip2_lzma;
139     + open_archive[XARCHIVETYPE_XZ] = &xa_open_bzip2_lzma;
140     open_archive[XARCHIVETYPE_RAR] = &xa_open_rar;
141     open_archive[XARCHIVETYPE_RPM] = &xa_open_rpm;
142     - 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;
143     + 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;
144     open_archive[XARCHIVETYPE_ZIP] = &xa_open_zip;
145     open_archive[XARCHIVETYPE_LHA] = &xa_open_lha;
146     open_archive[XARCHIVETYPE_LZOP] = &xa_open_bzip2_lzma;
147     @@ -310,6 +311,7 @@
148     delete[XARCHIVETYPE_BZIP2] = 0;
149     delete[XARCHIVETYPE_GZIP] = 0;
150     delete[XARCHIVETYPE_LZMA] = 0;
151     + delete[XARCHIVETYPE_XZ] = 0;
152     delete[XARCHIVETYPE_RAR] = &xa_rar_delete;
153     delete[XARCHIVETYPE_RPM] = 0;
154     delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete;
155     @@ -325,7 +327,7 @@
156     add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = &xa_tar_add;
157     add[XARCHIVETYPE_RAR] = &xa_rar_add;
158     add[XARCHIVETYPE_RPM] = 0;
159     - add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
160     + 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;
161     add[XARCHIVETYPE_ZIP] = &xa_zip_add;
162     add[XARCHIVETYPE_LHA] = &xa_lha_add;
163     add[XARCHIVETYPE_LZOP] = &xa_tar_add;
164     @@ -337,7 +339,7 @@
165     extract[XARCHIVETYPE_BZIP2] = extract[XARCHIVETYPE_GZIP] = extract[XARCHIVETYPE_LZMA] = &xa_tar_extract;
166     extract[XARCHIVETYPE_RAR] = &xa_rar_extract;
167     extract[XARCHIVETYPE_RPM] = &xa_rpm_extract;
168     - extract[XARCHIVETYPE_TAR] = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_LZOP] = &xa_tar_extract;
169     + 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;
170     extract[XARCHIVETYPE_ZIP] = &xa_zip_extract;
171     extract[XARCHIVETYPE_LHA] = &xa_lha_extract;
172     extract[XARCHIVETYPE_LZOP] = &xa_tar_extract;
173     @@ -348,7 +350,7 @@
174     test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = 0;
175     test[XARCHIVETYPE_RAR] = &xa_rar_test;
176     test[XARCHIVETYPE_RPM] = 0;
177     - test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_LZOP] = 0;
178     + test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_XZ] = test[XARCHIVETYPE_TAR_LZOP] = 0;
179     test[XARCHIVETYPE_ZIP] = &xa_zip_test;
180     test[XARCHIVETYPE_LHA] = &xa_lha_test;
181     test[XARCHIVETYPE_LZOP] = 0;
182     @@ -392,6 +394,14 @@
183     g_free (absolute_path);
184     }
185    
186     + absolute_path = g_find_program_in_path("xz");
187     + if ( absolute_path )
188     + {
189     + ArchiveType = g_list_append(ArchiveType, "xz");
190     + ArchiveSuffix = g_list_append(ArchiveSuffix, "*.xz");
191     + g_free (absolute_path);
192     + }
193     +
194     absolute_path = g_find_program_in_path("lzop");
195     if ( absolute_path )
196     {
197     @@ -460,6 +470,11 @@
198     ArchiveType = g_list_append(ArchiveType, "tar.lzma");
199     ArchiveSuffix = g_list_append(ArchiveSuffix, "*.tlz");
200     }
201     + if ( g_list_find ( ArchiveType , "xz") )
202     + {
203     + ArchiveType = g_list_append(ArchiveType, "tar.xz");
204     + ArchiveSuffix = g_list_append(ArchiveSuffix, "*.txz");
205     + }
206     if ( g_list_find ( ArchiveType , "lzo") )
207     {
208     ArchiveType = g_list_append(ArchiveType, "tar.lzo");
209     @@ -528,6 +543,8 @@
210     archive->type = XARCHIVETYPE_TAR_GZ;
211     else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzma") || g_str_has_suffix ( archive->escaped_path , ".tlz") )
212     archive->type = XARCHIVETYPE_TAR_LZMA;
213     + else if ( g_str_has_suffix ( archive->escaped_path , ".tar.xz") || g_str_has_suffix ( archive->escaped_path , ".txz") )
214     + archive->type = XARCHIVETYPE_TAR_XZ;
215     else if ( g_str_has_suffix ( archive->escaped_path , ".tar.lzo") ||
216     g_str_has_suffix ( archive->escaped_path , ".tzo") ||
217     g_str_has_suffix ( archive->escaped_path , ".tar.lzop"))
218     diff -Nur xarchiver-0.5.2.orig/src/new_dialog.c xarchiver-0.5.2/src/new_dialog.c
219     --- xarchiver-0.5.2.orig/src/new_dialog.c 2008-11-11 02:28:46.000000000 -0600
220     +++ xarchiver-0.5.2/src/new_dialog.c 2009-11-30 13:17:54.987349701 -0600
221     @@ -202,6 +202,8 @@
222     type = XARCHIVETYPE_GZIP;
223     else if (strcmp ( ComboArchiveType,"lzma") == 0)
224     type = XARCHIVETYPE_LZMA;
225     + else if (strcmp ( ComboArchiveType,"xz") == 0)
226     + type = XARCHIVETYPE_XZ;
227     else if (strcmp ( ComboArchiveType,"lzo") == 0)
228     type = XARCHIVETYPE_LZOP;
229     else if (strcmp ( ComboArchiveType,"rar") == 0)
230     @@ -214,6 +216,8 @@
231     type = XARCHIVETYPE_TAR_GZ;
232     else if (strcmp ( ComboArchiveType,"tar.lzma") == 0)
233     type = XARCHIVETYPE_TAR_LZMA;
234     + else if (strcmp ( ComboArchiveType,"tar.xz") == 0)
235     + type = XARCHIVETYPE_TAR_XZ;
236     else if (strcmp ( ComboArchiveType,"tar.lzo") == 0)
237     type = XARCHIVETYPE_TAR_LZOP;
238     else if (strcmp ( ComboArchiveType,"jar") == 0 || strcmp ( ComboArchiveType,"zip") == 0 )
239     diff -Nur xarchiver-0.5.2.orig/src/tar.c xarchiver-0.5.2/src/tar.c
240     --- xarchiver-0.5.2.orig/src/tar.c 2008-11-10 04:28:34.000000000 -0600
241     +++ xarchiver-0.5.2/src/tar.c 2009-11-30 13:19:34.037344951 -0600
242     @@ -242,6 +242,17 @@
243     files->str , NULL );
244     break;
245    
246     + case XARCHIVETYPE_TAR_XZ:
247     + if ( g_file_test ( archive->escaped_path , G_FILE_TEST_EXISTS ) )
248     + xa_add_delete_bzip2_gzip_lzma_compressed_tar (files,archive,1);
249     + else
250     + command = g_strconcat (tar, " ",
251     + archive->add_recurse ? "" : "--no-recursion ",
252     + archive->remove_files ? "--remove-files " : "",
253     + "--use-compress-program=xz -cvvf ",archive->escaped_path,
254     + files->str , NULL );
255     + break;
256     +
257     case XARCHIVETYPE_TAR_LZOP:
258     if ( g_file_test ( archive->escaped_path , G_FILE_TEST_EXISTS ) )
259     xa_add_delete_bzip2_gzip_lzma_compressed_tar (files,archive,1);
260     @@ -449,6 +460,10 @@
261     executable = "lzma -f ";
262     filename = "dummy.lzma";
263     break;
264     + case XARCHIVETYPE_TAR_XZ:
265     + executable = "xz -f ";
266     + filename = "dummy.xz";
267     + break;
268     case XARCHIVETYPE_TAR_LZOP:
269     executable = "lzop -f ";
270     filename = "dummy.lzo";
271     diff -Nur xarchiver-0.5.2.orig/src/window.c xarchiver-0.5.2/src/window.c
272     --- xarchiver-0.5.2.orig/src/window.c 2008-11-11 02:31:45.000000000 -0600
273     +++ xarchiver-0.5.2/src/window.c 2009-11-30 13:17:54.990326583 -0600
274     @@ -1125,6 +1125,8 @@
275     xx = XARCHIVETYPE_GZIP;
276     else if (memcmp ( magic,"\x5d\x00\x00\x80",4) == 0)
277     xx = XARCHIVETYPE_LZMA;
278     + else if (memcmp ( magic,"\xFD7zXZ\x00\0x00",3) || memcmp ( magic, "\xFD7zXZ\x00\0x10",3) == 0)
279     + xx = XARCHIVETYPE_XZ;
280     else if (memcmp ( magic,"\211LZO",4) == 0)
281     xx = XARCHIVETYPE_LZOP;
282     else if (memcmp ( magic,"\xed\xab\xee\xdb",4) == 0)
283     @@ -1462,6 +1464,7 @@
284     case XARCHIVETYPE_GZIP:
285     case XARCHIVETYPE_BZIP2:
286     case XARCHIVETYPE_LZMA:
287     + case XARCHIVETYPE_XZ:
288     case XARCHIVETYPE_LZOP:
289     case XARCHIVETYPE_RPM:
290     pos = 3;
291     @@ -1481,6 +1484,7 @@
292     case XARCHIVETYPE_TAR_GZ:
293     case XARCHIVETYPE_TAR_BZ2:
294     case XARCHIVETYPE_TAR_LZMA:
295     + case XARCHIVETYPE_TAR_XZ:
296     case XARCHIVETYPE_TAR_LZOP:
297     case XARCHIVETYPE_TAR:
298     case XARCHIVETYPE_ZIP:
299     @@ -1525,6 +1529,7 @@
300     case XARCHIVETYPE_GZIP:
301     case XARCHIVETYPE_BZIP2:
302     case XARCHIVETYPE_LZMA:
303     + case XARCHIVETYPE_XZ:
304     case XARCHIVETYPE_LZOP:
305     case XARCHIVETYPE_RPM:
306     pos = 3;
307     @@ -1544,6 +1549,7 @@
308     case XARCHIVETYPE_TAR_GZ:
309     case XARCHIVETYPE_TAR_BZ2:
310     case XARCHIVETYPE_TAR_LZMA:
311     + case XARCHIVETYPE_TAR_XZ:
312     case XARCHIVETYPE_TAR_LZOP:
313     case XARCHIVETYPE_TAR:
314     case XARCHIVETYPE_ZIP: