Magellan Linux

Annotation of /trunk/busybox/patches/busybox-1.20.2-tar-seamless-xz.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1837 - (hide annotations) (download)
Fri Jul 13 09:44:25 2012 UTC (11 years, 10 months ago) by niro
File size: 7705 byte(s)
-rediffed against busybox-1.20.2
1 niro 1837 diff -Naur busybox-1.20.2/archival/libarchive/filter_accept_list_reassign.c busybox-1.20.2-magellan/archival/libarchive/filter_accept_list_reassign.c
2     --- busybox-1.20.2/archival/libarchive/filter_accept_list_reassign.c 2012-06-26 15:35:45.000000000 +0200
3     +++ busybox-1.20.2-magellan/archival/libarchive/filter_accept_list_reassign.c 2012-07-13 12:15:10.649986771 +0200
4     @@ -46,6 +46,12 @@
5     archive_handle->dpkg__action_data_subarchive = get_header_tar_lzma;
6     return EXIT_SUCCESS;
7     }
8     + if (ENABLE_FEATURE_SEAMLESS_XZ
9     + && strcmp(name_ptr, "xz") == 0
10     + ) {
11     + archive_handle->dpkg__action_data_subarchive = get_header_tar_xz;
12     + return EXIT_SUCCESS;
13     + }
14     }
15     return EXIT_FAILURE;
16     }
17     diff -Naur busybox-1.20.2/archival/libarchive/get_header_tar_xz.c busybox-1.20.2-magellan/archival/libarchive/get_header_tar_xz.c
18     --- busybox-1.20.2/archival/libarchive/get_header_tar_xz.c 1970-01-01 01:00:00.000000000 +0100
19     +++ busybox-1.20.2-magellan/archival/libarchive/get_header_tar_xz.c 2012-07-13 12:13:24.191983102 +0200
20     @@ -0,0 +1,39 @@
21     +/* vi: set sw=4 ts=4: */
22     +/*
23     + * Small xz deflate implementation.
24     + * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org>
25     + * Copyright (C) 2012 Niels Rogalla <niro@magellan-linux.de>
26     + *
27     + * Licensed under GPLv2, see file LICENSE in this source tree.
28     + */
29     +
30     +#include "libbb.h"
31     +#include "bb_archive.h"
32     +
33     +char FAST_FUNC get_header_tar_xz(archive_handle_t *archive_handle)
34     +{
35     + uint16_t magic;
36     +
37     + /* check magic for LZMA or XZ */
38     + xread(archive_handle->src_fd, &magic, 2);
39     + xlseek(archive_handle->src_fd, -2, SEEK_CUR);
40     +
41     + /* Can't lseek over pipes */
42     + archive_handle->seek = seek_by_read;
43     +
44     + if (magic == LZMA_DEFAULT_MAGIC) {
45     + open_transformer_with_sig(archive_handle->src_fd, unpack_lzma_stream, "unlzma");
46     + archive_handle->offset = 0;
47     + while (get_header_tar(archive_handle) == EXIT_SUCCESS)
48     + continue;
49     + } else {
50     + xlseek(archive_handle->src_fd, +6, SEEK_CUR);
51     + open_transformer_with_sig(archive_handle->src_fd, unpack_xz_stream, "unxz");
52     + archive_handle->offset = 0;
53     + while (get_header_tar(archive_handle) == EXIT_SUCCESS)
54     + continue;
55     + }
56     +
57     + /* Can only do one file at a time */
58     + return EXIT_FAILURE;
59     +}
60     diff -Naur busybox-1.20.2/archival/libarchive/Kbuild.src busybox-1.20.2-magellan/archival/libarchive/Kbuild.src
61     --- busybox-1.20.2/archival/libarchive/Kbuild.src 2012-06-26 15:35:45.000000000 +0200
62     +++ busybox-1.20.2-magellan/archival/libarchive/Kbuild.src 2012-07-13 12:15:47.140983876 +0200
63     @@ -59,7 +59,7 @@
64     lib-$(CONFIG_FEATURE_SEAMLESS_GZ) += open_transformer.o decompress_gunzip.o
65     lib-$(CONFIG_FEATURE_SEAMLESS_BZ2) += open_transformer.o decompress_bunzip2.o
66     lib-$(CONFIG_FEATURE_SEAMLESS_LZMA) += open_transformer.o decompress_unlzma.o
67     -lib-$(CONFIG_FEATURE_SEAMLESS_XZ) += open_transformer.o decompress_unxz.o
68     +lib-$(CONFIG_FEATURE_SEAMLESS_XZ) += open_transformer.o decompress_unxz.o get_header_tar_xz.o
69     lib-$(CONFIG_FEATURE_COMPRESS_USAGE) += open_transformer.o decompress_bunzip2.o
70     lib-$(CONFIG_FEATURE_COMPRESS_BBCONFIG) += decompress_bunzip2.o
71     lib-$(CONFIG_FEATURE_TAR_TO_COMMAND) += data_extract_to_command.o
72     diff -Naur busybox-1.20.2/archival/tar.c busybox-1.20.2-magellan/archival/tar.c
73     --- busybox-1.20.2/archival/tar.c 2012-07-02 16:08:25.000000000 +0200
74     +++ busybox-1.20.2-magellan/archival/tar.c 2012-07-13 12:27:19.799982146 +0200
75     @@ -696,6 +696,7 @@
76     //usage: IF_FEATURE_SEAMLESS_GZ("z")
77     //usage: IF_FEATURE_SEAMLESS_BZ2("j")
78     //usage: IF_FEATURE_SEAMLESS_LZMA("a")
79     +//usage: IF_FEATURE_SEAMLESS_XZ("J")
80     //usage: IF_FEATURE_TAR_CREATE("h")
81     //usage: IF_FEATURE_TAR_NOPRESERVE_TIME("m")
82     //usage: "vO] "
83     @@ -726,6 +727,9 @@
84     //usage: IF_FEATURE_SEAMLESS_LZMA(
85     //usage: "\n a (De)compress using lzma"
86     //usage: )
87     +//usage: IF_FEATURE_SEAMLESS_XZ(
88     +//usage: "\n J (De)compress using xz"
89     +//usage: )
90     //usage: "\n O Extract to stdout"
91     //usage: IF_FEATURE_TAR_CREATE(
92     //usage: "\n h Follow symlinks"
93     @@ -762,6 +766,7 @@
94     IF_FEATURE_TAR_CREATE( OPTBIT_DEREFERENCE ,)
95     IF_FEATURE_SEAMLESS_BZ2( OPTBIT_BZIP2 ,)
96     IF_FEATURE_SEAMLESS_LZMA(OPTBIT_LZMA ,)
97     + IF_FEATURE_SEAMLESS_XZ(OPTBIT_XZ ,)
98     IF_FEATURE_TAR_FROM( OPTBIT_INCLUDE_FROM,)
99     IF_FEATURE_TAR_FROM( OPTBIT_EXCLUDE_FROM,)
100     IF_FEATURE_SEAMLESS_GZ( OPTBIT_GZIP ,)
101     @@ -786,6 +791,7 @@
102     OPT_DEREFERENCE = IF_FEATURE_TAR_CREATE( (1 << OPTBIT_DEREFERENCE )) + 0, // h
103     OPT_BZIP2 = IF_FEATURE_SEAMLESS_BZ2( (1 << OPTBIT_BZIP2 )) + 0, // j
104     OPT_LZMA = IF_FEATURE_SEAMLESS_LZMA((1 << OPTBIT_LZMA )) + 0, // a
105     + OPT_XZ = IF_FEATURE_SEAMLESS_XZ( (1 << OPTBIT_XZ )) + 0, // J
106     OPT_INCLUDE_FROM = IF_FEATURE_TAR_FROM( (1 << OPTBIT_INCLUDE_FROM)) + 0, // T
107     OPT_EXCLUDE_FROM = IF_FEATURE_TAR_FROM( (1 << OPTBIT_EXCLUDE_FROM)) + 0, // X
108     OPT_GZIP = IF_FEATURE_SEAMLESS_GZ( (1 << OPTBIT_GZIP )) + 0, // z
109     @@ -796,7 +802,7 @@
110     OPT_NOPRESERVE_PERM = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_NOPRESERVE_PERM)) + 0, // no-same-permissions
111     OPT_OVERWRITE = IF_FEATURE_TAR_LONG_OPTIONS((1 << OPTBIT_OVERWRITE )) + 0, // overwrite
112    
113     - OPT_ANY_COMPRESS = (OPT_BZIP2 | OPT_LZMA | OPT_GZIP | OPT_COMPRESS),
114     + OPT_ANY_COMPRESS = (OPT_BZIP2 | OPT_LZMA | OPT_XZ | OPT_GZIP | OPT_COMPRESS),
115     };
116     #if ENABLE_FEATURE_TAR_LONG_OPTIONS
117     static const char tar_longopts[] ALIGN1 =
118     @@ -822,6 +828,9 @@
119     # if ENABLE_FEATURE_SEAMLESS_LZMA
120     "lzma\0" No_argument "a"
121     # endif
122     +# if ENABLE_FEATURE_SEAMLESS_XZ
123     + "xz\0" No_argument "J"
124     +# endif
125     # if ENABLE_FEATURE_TAR_FROM
126     "files-from\0" Required_argument "T"
127     "exclude-from\0" Required_argument "X"
128     @@ -919,6 +928,7 @@
129     IF_FEATURE_TAR_CREATE( "ch" )
130     IF_FEATURE_SEAMLESS_BZ2( "j" )
131     IF_FEATURE_SEAMLESS_LZMA("a" )
132     + IF_FEATURE_SEAMLESS_XZ( "J" )
133     IF_FEATURE_TAR_FROM( "T:X:")
134     IF_FEATURE_SEAMLESS_GZ( "z" )
135     IF_FEATURE_SEAMLESS_Z( "Z" )
136     @@ -1071,6 +1081,9 @@
137     if (opt & OPT_LZMA)
138     USE_FOR_MMU(xformer = unpack_lzma_stream;)
139     USE_FOR_NOMMU(xformer_prog = "unlzma";)
140     + if (opt & OPT_XZ)
141     + USE_FOR_MMU(xformer = unpack_xz_stream;)
142     + USE_FOR_NOMMU(xformer_prog = "unxz";)
143    
144     open_transformer_with_sig(tar_handle->src_fd, xformer, xformer_prog);
145     /* Can't lseek over pipes */
146     diff -Naur busybox-1.20.2/include/bb_archive.h busybox-1.20.2-magellan/include/bb_archive.h
147     --- busybox-1.20.2/include/bb_archive.h 2012-07-02 16:08:25.000000000 +0200
148     +++ busybox-1.20.2-magellan/include/bb_archive.h 2012-07-13 12:29:25.386980771 +0200
149     @@ -9,6 +9,8 @@
150     COMPRESS_MAGIC = 0x1f9d,
151     GZIP_MAGIC = 0x1f8b,
152     BZIP2_MAGIC = 256 * 'B' + 'Z',
153     + /* lzma default options: lc=3 lp=0 pb=2, historic % 256 == 0 */
154     + LZMA_DEFAULT_MAGIC = 0x5d00,
155     /* .xz signature: 0xfd, '7', 'z', 'X', 'Z', 0x00 */
156     /* More info at: http://tukaani.org/xz/xz-file-format.txt */
157     XZ_MAGIC1 = 256 * 0xfd + '7',
158     @@ -21,6 +23,8 @@
159     COMPRESS_MAGIC = 0x9d1f,
160     GZIP_MAGIC = 0x8b1f,
161     BZIP2_MAGIC = 'B' + 'Z' * 256,
162     + /* lzma default options: lc=3 lp=0 pb=2, historic % 256 == 0 */
163     + LZMA_DEFAULT_MAGIC = 0x5d,
164     XZ_MAGIC1 = 0xfd + '7' * 256,
165     XZ_MAGIC2 = 'z' + ('X' + ('Z' + 0 * 256) * 256) * 256,
166     XZ_MAGIC1a = 0xfd + ('7' + ('z' + 'X' * 256) * 256) * 256,
167     @@ -180,6 +184,7 @@
168     char get_header_tar_gz(archive_handle_t *archive_handle) FAST_FUNC;
169     char get_header_tar_bz2(archive_handle_t *archive_handle) FAST_FUNC;
170     char get_header_tar_lzma(archive_handle_t *archive_handle) FAST_FUNC;
171     +char get_header_tar_xz(archive_handle_t *archive_handle) FAST_FUNC;
172    
173     void seek_by_jump(int fd, off_t amount) FAST_FUNC;
174     void seek_by_read(int fd, off_t amount) FAST_FUNC;