Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1581 - (show annotations) (download)
Mon Nov 28 20:22:05 2011 UTC (12 years, 5 months ago) by niro
File size: 14741 byte(s)
-adding xarchiver patches
1 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: