diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-08-28 21:15:24 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-08-28 21:15:24 +0200 |
commit | e6c483ec303adf153efa875b0b356bb47370fc56 (patch) | |
tree | 1331b92316d3d0089720c1650103a43669ce69fa | |
parent | 0a130d510dc5272dc2fc7bc5a116f0694c8bd2a9 (diff) | |
download | busybox-w32-e6c483ec303adf153efa875b0b356bb47370fc56.tar.gz busybox-w32-e6c483ec303adf153efa875b0b356bb47370fc56.tar.bz2 busybox-w32-e6c483ec303adf153efa875b0b356bb47370fc56.zip |
rpm2cpio: code shrink
function old new delta
skip_header 94 92 -2
rpm2cpio_main 177 174 -3
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-5) Total: -5 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | archival/rpm2cpio.c | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/archival/rpm2cpio.c b/archival/rpm2cpio.c index 30ec80e22..5403aee02 100644 --- a/archival/rpm2cpio.c +++ b/archival/rpm2cpio.c | |||
@@ -23,7 +23,7 @@ struct rpm_lead { | |||
23 | char reserved[16]; | 23 | char reserved[16]; |
24 | }; | 24 | }; |
25 | 25 | ||
26 | #define RPM_HEADER_VERnMAGIC 0x8eade801 | 26 | #define RPM_HEADER_MAGICnVER 0x8eade801 |
27 | #define RPM_HEADER_MAGIC_STR "\216\255\350" | 27 | #define RPM_HEADER_MAGIC_STR "\216\255\350" |
28 | 28 | ||
29 | struct rpm_header { | 29 | struct rpm_header { |
@@ -33,7 +33,9 @@ struct rpm_header { | |||
33 | uint32_t size; /* Size of store (4 bytes) */ | 33 | uint32_t size; /* Size of store (4 bytes) */ |
34 | }; | 34 | }; |
35 | 35 | ||
36 | static unsigned skip_header(int rpm_fd) | 36 | enum { rpm_fd = STDIN_FILENO }; |
37 | |||
38 | static unsigned skip_header(void) | ||
37 | { | 39 | { |
38 | struct rpm_header header; | 40 | struct rpm_header header; |
39 | unsigned len; | 41 | unsigned len; |
@@ -45,9 +47,9 @@ static unsigned skip_header(int rpm_fd) | |||
45 | // if (header.version != 1) { | 47 | // if (header.version != 1) { |
46 | // bb_error_msg_and_die("unsupported RPM header version"); | 48 | // bb_error_msg_and_die("unsupported RPM header version"); |
47 | // } | 49 | // } |
48 | if (header.magic_and_ver != htonl(RPM_HEADER_VERnMAGIC)) { | 50 | if (header.magic_and_ver != htonl(RPM_HEADER_MAGICnVER)) { |
49 | bb_error_msg_and_die("invalid RPM header magic or unsupported version"); | 51 | bb_error_msg_and_die("invalid RPM header magic or unsupported version"); |
50 | // ": %x != %x", header.magic_and_ver, htonl(RPM_HEADER_VERnMAGIC)); | 52 | // ": %x != %x", header.magic_and_ver, htonl(RPM_HEADER_MAGICnVER)); |
51 | } | 53 | } |
52 | 54 | ||
53 | /* Seek past index entries, and past store */ | 55 | /* Seek past index entries, and past store */ |
@@ -62,15 +64,12 @@ int rpm2cpio_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | |||
62 | int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) | 64 | int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) |
63 | { | 65 | { |
64 | struct rpm_lead lead; | 66 | struct rpm_lead lead; |
65 | int rpm_fd; | ||
66 | unsigned pos; | 67 | unsigned pos; |
67 | unsigned char magic[2]; | 68 | unsigned char magic[2]; |
68 | IF_DESKTOP(long long) int FAST_FUNC (*unpack)(int src_fd, int dst_fd); | 69 | IF_DESKTOP(long long) int FAST_FUNC (*unpack)(int src_fd, int dst_fd); |
69 | 70 | ||
70 | if (!argv[1]) { | 71 | if (argv[1]) { |
71 | rpm_fd = STDIN_FILENO; | 72 | xmove_fd(xopen(argv[1], O_RDONLY), rpm_fd); |
72 | } else { | ||
73 | rpm_fd = xopen(argv[1], O_RDONLY); | ||
74 | } | 73 | } |
75 | xread(rpm_fd, &lead, sizeof(lead)); | 74 | xread(rpm_fd, &lead, sizeof(lead)); |
76 | 75 | ||
@@ -80,11 +79,11 @@ int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) | |||
80 | } | 79 | } |
81 | 80 | ||
82 | /* Skip the signature header, align to 8 bytes */ | 81 | /* Skip the signature header, align to 8 bytes */ |
83 | pos = skip_header(rpm_fd); | 82 | pos = skip_header(); |
84 | seek_by_jump(rpm_fd, (8 - pos) & 7); | 83 | seek_by_jump(rpm_fd, (8 - pos) & 7); |
85 | 84 | ||
86 | /* Skip the main header */ | 85 | /* Skip the main header */ |
87 | skip_header(rpm_fd); | 86 | skip_header(); |
88 | 87 | ||
89 | xread(rpm_fd, &magic, 2); | 88 | xread(rpm_fd, &magic, 2); |
90 | unpack = unpack_gz_stream; | 89 | unpack = unpack_gz_stream; |