diff options
Diffstat (limited to 'archival/rpm2cpio.c')
-rw-r--r-- | archival/rpm2cpio.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/archival/rpm2cpio.c b/archival/rpm2cpio.c index 1c67dcc6e..5bc50b88f 100644 --- a/archival/rpm2cpio.c +++ b/archival/rpm2cpio.c | |||
@@ -75,7 +75,7 @@ int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) | |||
75 | } magic; | 75 | } magic; |
76 | IF_DESKTOP(long long) int FAST_FUNC (*unpack)(int src_fd, int dst_fd); | 76 | IF_DESKTOP(long long) int FAST_FUNC (*unpack)(int src_fd, int dst_fd); |
77 | 77 | ||
78 | xread(rpm_fd, magic.b16, sizeof(magic.b16)); | 78 | xread(rpm_fd, magic.b16, sizeof(magic.b16[0])); |
79 | if (magic.b16[0] == GZIP_MAGIC) { | 79 | if (magic.b16[0] == GZIP_MAGIC) { |
80 | unpack = unpack_gz_stream; | 80 | unpack = unpack_gz_stream; |
81 | } else | 81 | } else |
@@ -87,13 +87,11 @@ int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) | |||
87 | if (ENABLE_FEATURE_SEAMLESS_XZ | 87 | if (ENABLE_FEATURE_SEAMLESS_XZ |
88 | && magic.b16[0] == XZ_MAGIC1 | 88 | && magic.b16[0] == XZ_MAGIC1 |
89 | ) { | 89 | ) { |
90 | /* .xz signature: 0xfd, '7', 'z', 'X', 'Z', 0x00 */ | 90 | xread(rpm_fd, magic.b32, sizeof(magic.b32[0])); |
91 | /* More info at: http://tukaani.org/xz/xz-file-format.txt */ | ||
92 | xread(rpm_fd, magic.b32, sizeof(magic.b32)); | ||
93 | if (magic.b32[0] != XZ_MAGIC2) | 91 | if (magic.b32[0] != XZ_MAGIC2) |
94 | goto no_magic; | 92 | goto no_magic; |
95 | /* unpack_xz_stream wants fd at position 0 */ | 93 | /* unpack_xz_stream wants fd at position 6, no need to seek */ |
96 | xlseek(rpm_fd, -6, SEEK_CUR); | 94 | //xlseek(rpm_fd, -6, SEEK_CUR); |
97 | unpack = unpack_xz_stream; | 95 | unpack = unpack_xz_stream; |
98 | } else { | 96 | } else { |
99 | no_magic: | 97 | no_magic: |