Rename transformer_aux_data_t -> transformer_state_t
No code changes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
476654cdbe
commit
e7800f351a
@ -39,7 +39,7 @@ char* FAST_FUNC append_ext(char *filename, const char *expected_ext)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int FAST_FUNC bbunpack(char **argv,
|
int FAST_FUNC bbunpack(char **argv,
|
||||||
IF_DESKTOP(long long) int FAST_FUNC (*unpacker)(transformer_aux_data_t *aux),
|
IF_DESKTOP(long long) int FAST_FUNC (*unpacker)(transformer_state_t *xstate),
|
||||||
char* FAST_FUNC (*make_new_name)(char *filename, const char *expected_ext),
|
char* FAST_FUNC (*make_new_name)(char *filename, const char *expected_ext),
|
||||||
const char *expected_ext
|
const char *expected_ext
|
||||||
)
|
)
|
||||||
@ -48,7 +48,7 @@ int FAST_FUNC bbunpack(char **argv,
|
|||||||
IF_DESKTOP(long long) int status = 0;
|
IF_DESKTOP(long long) int status = 0;
|
||||||
char *filename, *new_name;
|
char *filename, *new_name;
|
||||||
smallint exitcode = 0;
|
smallint exitcode = 0;
|
||||||
transformer_aux_data_t aux;
|
transformer_state_t xstate;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
/* NB: new_name is *maybe* malloc'ed! */
|
/* NB: new_name is *maybe* malloc'ed! */
|
||||||
@ -120,9 +120,9 @@ int FAST_FUNC bbunpack(char **argv,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!(option_mask32 & SEAMLESS_MAGIC)) {
|
if (!(option_mask32 & SEAMLESS_MAGIC)) {
|
||||||
init_transformer_aux_data(&aux);
|
init_transformer_state(&xstate);
|
||||||
aux.check_signature = 1;
|
xstate.check_signature = 1;
|
||||||
status = unpacker(&aux);
|
status = unpacker(&xstate);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
exitcode = 1;
|
exitcode = 1;
|
||||||
} else {
|
} else {
|
||||||
@ -141,10 +141,10 @@ int FAST_FUNC bbunpack(char **argv,
|
|||||||
unsigned new_name_len;
|
unsigned new_name_len;
|
||||||
|
|
||||||
/* TODO: restore other things? */
|
/* TODO: restore other things? */
|
||||||
if (aux.mtime != 0) {
|
if (xstate.mtime != 0) {
|
||||||
struct timeval times[2];
|
struct timeval times[2];
|
||||||
|
|
||||||
times[1].tv_sec = times[0].tv_sec = aux.mtime;
|
times[1].tv_sec = times[0].tv_sec = xstate.mtime;
|
||||||
times[1].tv_usec = times[0].tv_usec = 0;
|
times[1].tv_usec = times[0].tv_usec = 0;
|
||||||
/* Note: we closed it first.
|
/* Note: we closed it first.
|
||||||
* On some systems calling utimes
|
* On some systems calling utimes
|
||||||
@ -227,9 +227,9 @@ char* FAST_FUNC make_new_name_generic(char *filename, const char *expected_ext)
|
|||||||
//kbuild:lib-$(CONFIG_UNCOMPRESS) += bbunzip.o
|
//kbuild:lib-$(CONFIG_UNCOMPRESS) += bbunzip.o
|
||||||
#if ENABLE_UNCOMPRESS
|
#if ENABLE_UNCOMPRESS
|
||||||
static
|
static
|
||||||
IF_DESKTOP(long long) int FAST_FUNC unpack_uncompress(transformer_aux_data_t *aux)
|
IF_DESKTOP(long long) int FAST_FUNC unpack_uncompress(transformer_state_t *xstate)
|
||||||
{
|
{
|
||||||
return unpack_Z_stream(aux, STDIN_FILENO, STDOUT_FILENO);
|
return unpack_Z_stream(xstate, STDIN_FILENO, STDOUT_FILENO);
|
||||||
}
|
}
|
||||||
int uncompress_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int uncompress_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int uncompress_main(int argc UNUSED_PARAM, char **argv)
|
int uncompress_main(int argc UNUSED_PARAM, char **argv)
|
||||||
@ -325,9 +325,9 @@ char* FAST_FUNC make_new_name_gunzip(char *filename, const char *expected_ext UN
|
|||||||
return filename;
|
return filename;
|
||||||
}
|
}
|
||||||
static
|
static
|
||||||
IF_DESKTOP(long long) int FAST_FUNC unpack_gunzip(transformer_aux_data_t *aux)
|
IF_DESKTOP(long long) int FAST_FUNC unpack_gunzip(transformer_state_t *xstate)
|
||||||
{
|
{
|
||||||
return unpack_gz_stream(aux, STDIN_FILENO, STDOUT_FILENO);
|
return unpack_gz_stream(xstate, STDIN_FILENO, STDOUT_FILENO);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Linux kernel build uses gzip -d -n. We accept and ignore it.
|
* Linux kernel build uses gzip -d -n. We accept and ignore it.
|
||||||
@ -396,9 +396,9 @@ int gunzip_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
//kbuild:lib-$(CONFIG_BUNZIP2) += bbunzip.o
|
//kbuild:lib-$(CONFIG_BUNZIP2) += bbunzip.o
|
||||||
#if ENABLE_BUNZIP2
|
#if ENABLE_BUNZIP2
|
||||||
static
|
static
|
||||||
IF_DESKTOP(long long) int FAST_FUNC unpack_bunzip2(transformer_aux_data_t *aux)
|
IF_DESKTOP(long long) int FAST_FUNC unpack_bunzip2(transformer_state_t *xstate)
|
||||||
{
|
{
|
||||||
return unpack_bz2_stream(aux, STDIN_FILENO, STDOUT_FILENO);
|
return unpack_bz2_stream(xstate, STDIN_FILENO, STDOUT_FILENO);
|
||||||
}
|
}
|
||||||
int bunzip2_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int bunzip2_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int bunzip2_main(int argc UNUSED_PARAM, char **argv)
|
int bunzip2_main(int argc UNUSED_PARAM, char **argv)
|
||||||
@ -495,9 +495,9 @@ int bunzip2_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
//kbuild:lib-$(CONFIG_UNLZMA) += bbunzip.o
|
//kbuild:lib-$(CONFIG_UNLZMA) += bbunzip.o
|
||||||
#if ENABLE_UNLZMA
|
#if ENABLE_UNLZMA
|
||||||
static
|
static
|
||||||
IF_DESKTOP(long long) int FAST_FUNC unpack_unlzma(transformer_aux_data_t *aux)
|
IF_DESKTOP(long long) int FAST_FUNC unpack_unlzma(transformer_state_t *xstate)
|
||||||
{
|
{
|
||||||
return unpack_lzma_stream(aux, STDIN_FILENO, STDOUT_FILENO);
|
return unpack_lzma_stream(xstate, STDIN_FILENO, STDOUT_FILENO);
|
||||||
}
|
}
|
||||||
int unlzma_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int unlzma_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int unlzma_main(int argc UNUSED_PARAM, char **argv)
|
int unlzma_main(int argc UNUSED_PARAM, char **argv)
|
||||||
@ -538,9 +538,9 @@ int unlzma_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
//kbuild:lib-$(CONFIG_UNXZ) += bbunzip.o
|
//kbuild:lib-$(CONFIG_UNXZ) += bbunzip.o
|
||||||
#if ENABLE_UNXZ
|
#if ENABLE_UNXZ
|
||||||
static
|
static
|
||||||
IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(transformer_aux_data_t *aux)
|
IF_DESKTOP(long long) int FAST_FUNC unpack_unxz(transformer_state_t *xstate)
|
||||||
{
|
{
|
||||||
return unpack_xz_stream(aux, STDIN_FILENO, STDOUT_FILENO);
|
return unpack_xz_stream(xstate, STDIN_FILENO, STDOUT_FILENO);
|
||||||
}
|
}
|
||||||
int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int unxz_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
int unxz_main(int argc UNUSED_PARAM, char **argv)
|
int unxz_main(int argc UNUSED_PARAM, char **argv)
|
||||||
|
@ -127,7 +127,7 @@ IF_DESKTOP(long long) int bz_write(bz_stream *strm, void* rbuf, ssize_t rlen, vo
|
|||||||
}
|
}
|
||||||
|
|
||||||
static
|
static
|
||||||
IF_DESKTOP(long long) int FAST_FUNC compressStream(transformer_aux_data_t *aux UNUSED_PARAM)
|
IF_DESKTOP(long long) int FAST_FUNC compressStream(transformer_state_t *xstate UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
IF_DESKTOP(long long) int total;
|
IF_DESKTOP(long long) int total;
|
||||||
ssize_t count;
|
ssize_t count;
|
||||||
|
@ -2042,7 +2042,7 @@ static void zip(ulg time_stamp)
|
|||||||
|
|
||||||
/* ======================================================================== */
|
/* ======================================================================== */
|
||||||
static
|
static
|
||||||
IF_DESKTOP(long long) int FAST_FUNC pack_gzip(transformer_aux_data_t *aux UNUSED_PARAM)
|
IF_DESKTOP(long long) int FAST_FUNC pack_gzip(transformer_state_t *xstate UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
struct stat s;
|
struct stat s;
|
||||||
|
|
||||||
|
@ -731,7 +731,7 @@ void FAST_FUNC dealloc_bunzip(bunzip_data *bd)
|
|||||||
|
|
||||||
/* Decompress src_fd to dst_fd. Stops at end of bzip data, not end of file. */
|
/* Decompress src_fd to dst_fd. Stops at end of bzip data, not end of file. */
|
||||||
IF_DESKTOP(long long) int FAST_FUNC
|
IF_DESKTOP(long long) int FAST_FUNC
|
||||||
unpack_bz2_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
unpack_bz2_stream(transformer_state_t *xstate, int src_fd, int dst_fd)
|
||||||
{
|
{
|
||||||
IF_DESKTOP(long long total_written = 0;)
|
IF_DESKTOP(long long total_written = 0;)
|
||||||
bunzip_data *bd;
|
bunzip_data *bd;
|
||||||
@ -739,7 +739,7 @@ unpack_bz2_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
|||||||
int i;
|
int i;
|
||||||
unsigned len;
|
unsigned len;
|
||||||
|
|
||||||
if (check_signature16(aux, src_fd, BZIP2_MAGIC))
|
if (check_signature16(xstate, src_fd, BZIP2_MAGIC))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
outbuf = xmalloc(IOBUF_SIZE);
|
outbuf = xmalloc(IOBUF_SIZE);
|
||||||
|
@ -1034,22 +1034,22 @@ inflate_unzip_internal(STATE_PARAM int in, int out)
|
|||||||
/* For unzip */
|
/* For unzip */
|
||||||
|
|
||||||
IF_DESKTOP(long long) int FAST_FUNC
|
IF_DESKTOP(long long) int FAST_FUNC
|
||||||
inflate_unzip(transformer_aux_data_t *aux, int in, int out)
|
inflate_unzip(transformer_state_t *xstate, int in, int out)
|
||||||
{
|
{
|
||||||
IF_DESKTOP(long long) int n;
|
IF_DESKTOP(long long) int n;
|
||||||
DECLARE_STATE;
|
DECLARE_STATE;
|
||||||
|
|
||||||
ALLOC_STATE;
|
ALLOC_STATE;
|
||||||
|
|
||||||
to_read = aux->bytes_in;
|
to_read = xstate->bytes_in;
|
||||||
// bytebuffer_max = 0x8000;
|
// bytebuffer_max = 0x8000;
|
||||||
bytebuffer_offset = 4;
|
bytebuffer_offset = 4;
|
||||||
bytebuffer = xmalloc(bytebuffer_max);
|
bytebuffer = xmalloc(bytebuffer_max);
|
||||||
n = inflate_unzip_internal(PASS_STATE in, out);
|
n = inflate_unzip_internal(PASS_STATE in, out);
|
||||||
free(bytebuffer);
|
free(bytebuffer);
|
||||||
|
|
||||||
aux->crc32 = gunzip_crc;
|
xstate->crc32 = gunzip_crc;
|
||||||
aux->bytes_out = gunzip_bytes_out;
|
xstate->bytes_out = gunzip_bytes_out;
|
||||||
DEALLOC_STATE;
|
DEALLOC_STATE;
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
@ -1107,7 +1107,7 @@ static uint32_t buffer_read_le_u32(STATE_PARAM_ONLY)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int check_header_gzip(STATE_PARAM transformer_aux_data_t *aux)
|
static int check_header_gzip(STATE_PARAM transformer_state_t *xstate)
|
||||||
{
|
{
|
||||||
union {
|
union {
|
||||||
unsigned char raw[8];
|
unsigned char raw[8];
|
||||||
@ -1169,8 +1169,8 @@ static int check_header_gzip(STATE_PARAM transformer_aux_data_t *aux)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aux)
|
if (xstate)
|
||||||
aux->mtime = SWAP_LE32(header.formatted.mtime);
|
xstate->mtime = SWAP_LE32(header.formatted.mtime);
|
||||||
|
|
||||||
/* Read the header checksum */
|
/* Read the header checksum */
|
||||||
if (header.formatted.flags & 0x02) {
|
if (header.formatted.flags & 0x02) {
|
||||||
@ -1182,17 +1182,17 @@ static int check_header_gzip(STATE_PARAM transformer_aux_data_t *aux)
|
|||||||
}
|
}
|
||||||
|
|
||||||
IF_DESKTOP(long long) int FAST_FUNC
|
IF_DESKTOP(long long) int FAST_FUNC
|
||||||
unpack_gz_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
unpack_gz_stream(transformer_state_t *xstate, int src_fd, int dst_fd)
|
||||||
{
|
{
|
||||||
uint32_t v32;
|
uint32_t v32;
|
||||||
IF_DESKTOP(long long) int total, n;
|
IF_DESKTOP(long long) int total, n;
|
||||||
DECLARE_STATE;
|
DECLARE_STATE;
|
||||||
|
|
||||||
#if !ENABLE_FEATURE_SEAMLESS_Z
|
#if !ENABLE_FEATURE_SEAMLESS_Z
|
||||||
if (check_signature16(aux, src_fd, GZIP_MAGIC))
|
if (check_signature16(xstate, src_fd, GZIP_MAGIC))
|
||||||
return -1;
|
return -1;
|
||||||
#else
|
#else
|
||||||
if (aux && aux->check_signature) {
|
if (xstate && xstate->check_signature) {
|
||||||
uint16_t magic2;
|
uint16_t magic2;
|
||||||
|
|
||||||
if (full_read(src_fd, &magic2, 2) != 2) {
|
if (full_read(src_fd, &magic2, 2) != 2) {
|
||||||
@ -1201,8 +1201,8 @@ unpack_gz_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (magic2 == COMPRESS_MAGIC) {
|
if (magic2 == COMPRESS_MAGIC) {
|
||||||
aux->check_signature = 0;
|
xstate->check_signature = 0;
|
||||||
return unpack_Z_stream(aux, src_fd, dst_fd);
|
return unpack_Z_stream(xstate, src_fd, dst_fd);
|
||||||
}
|
}
|
||||||
if (magic2 != GZIP_MAGIC)
|
if (magic2 != GZIP_MAGIC)
|
||||||
goto bad_magic;
|
goto bad_magic;
|
||||||
@ -1218,7 +1218,7 @@ unpack_gz_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
|||||||
gunzip_src_fd = src_fd;
|
gunzip_src_fd = src_fd;
|
||||||
|
|
||||||
again:
|
again:
|
||||||
if (!check_header_gzip(PASS_STATE aux)) {
|
if (!check_header_gzip(PASS_STATE xstate)) {
|
||||||
bb_error_msg("corrupted data");
|
bb_error_msg("corrupted data");
|
||||||
total = -1;
|
total = -1;
|
||||||
goto ret;
|
goto ret;
|
||||||
|
@ -73,7 +73,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
IF_DESKTOP(long long) int FAST_FUNC
|
IF_DESKTOP(long long) int FAST_FUNC
|
||||||
unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
unpack_Z_stream(transformer_state_t *xstate, int src_fd, int dst_fd)
|
||||||
{
|
{
|
||||||
IF_DESKTOP(long long total_written = 0;)
|
IF_DESKTOP(long long total_written = 0;)
|
||||||
IF_DESKTOP(long long) int retval = -1;
|
IF_DESKTOP(long long) int retval = -1;
|
||||||
@ -102,7 +102,7 @@ unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
|||||||
/* block compress mode -C compatible with 2.0 */
|
/* block compress mode -C compatible with 2.0 */
|
||||||
int block_mode; /* = BLOCK_MODE; */
|
int block_mode; /* = BLOCK_MODE; */
|
||||||
|
|
||||||
if (check_signature16(aux, src_fd, COMPRESS_MAGIC))
|
if (check_signature16(xstate, src_fd, COMPRESS_MAGIC))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
inbuf = xzalloc(IBUFSIZ + 64);
|
inbuf = xzalloc(IBUFSIZ + 64);
|
||||||
|
@ -206,7 +206,7 @@ enum {
|
|||||||
|
|
||||||
|
|
||||||
IF_DESKTOP(long long) int FAST_FUNC
|
IF_DESKTOP(long long) int FAST_FUNC
|
||||||
unpack_lzma_stream(transformer_aux_data_t *aux UNUSED_PARAM, int src_fd, int dst_fd)
|
unpack_lzma_stream(transformer_state_t *xstate UNUSED_PARAM, int src_fd, int dst_fd)
|
||||||
{
|
{
|
||||||
IF_DESKTOP(long long total_written = 0;)
|
IF_DESKTOP(long long total_written = 0;)
|
||||||
lzma_header_t header;
|
lzma_header_t header;
|
||||||
|
@ -38,7 +38,7 @@ static uint32_t xz_crc32(const uint8_t *buf, size_t size, uint32_t crc)
|
|||||||
#include "unxz/xz_dec_stream.c"
|
#include "unxz/xz_dec_stream.c"
|
||||||
|
|
||||||
IF_DESKTOP(long long) int FAST_FUNC
|
IF_DESKTOP(long long) int FAST_FUNC
|
||||||
unpack_xz_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
unpack_xz_stream(transformer_state_t *xstate, int src_fd, int dst_fd)
|
||||||
{
|
{
|
||||||
enum xz_ret xz_result;
|
enum xz_ret xz_result;
|
||||||
struct xz_buf iobuf;
|
struct xz_buf iobuf;
|
||||||
@ -55,7 +55,7 @@ unpack_xz_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
|||||||
iobuf.out = membuf + BUFSIZ;
|
iobuf.out = membuf + BUFSIZ;
|
||||||
iobuf.out_size = BUFSIZ;
|
iobuf.out_size = BUFSIZ;
|
||||||
|
|
||||||
if (!aux || aux->check_signature == 0) {
|
if (!xstate || xstate->check_signature == 0) {
|
||||||
/* Preload XZ file signature */
|
/* Preload XZ file signature */
|
||||||
strcpy((char*)membuf, HEADER_MAGIC);
|
strcpy((char*)membuf, HEADER_MAGIC);
|
||||||
iobuf.in_size = HEADER_MAGIC_SIZE;
|
iobuf.in_size = HEADER_MAGIC_SIZE;
|
||||||
|
@ -6,19 +6,19 @@
|
|||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
#include "bb_archive.h"
|
#include "bb_archive.h"
|
||||||
|
|
||||||
void FAST_FUNC init_transformer_aux_data(transformer_aux_data_t *aux)
|
void FAST_FUNC init_transformer_state(transformer_state_t *xstate)
|
||||||
{
|
{
|
||||||
memset(aux, 0, sizeof(*aux));
|
memset(xstate, 0, sizeof(*xstate));
|
||||||
}
|
}
|
||||||
|
|
||||||
int FAST_FUNC check_signature16(transformer_aux_data_t *aux, int src_fd, unsigned magic16)
|
int FAST_FUNC check_signature16(transformer_state_t *xstate, int src_fd, unsigned magic16)
|
||||||
{
|
{
|
||||||
if (aux && aux->check_signature) {
|
if (xstate && xstate->check_signature) {
|
||||||
uint16_t magic2;
|
uint16_t magic2;
|
||||||
if (full_read(src_fd, &magic2, 2) != 2 || magic2 != magic16) {
|
if (full_read(src_fd, &magic2, 2) != 2 || magic2 != magic16) {
|
||||||
bb_error_msg("invalid magic");
|
bb_error_msg("invalid magic");
|
||||||
#if 0 /* possible future extension */
|
#if 0 /* possible future extension */
|
||||||
if (aux->check_signature > 1)
|
if (xstate->check_signature > 1)
|
||||||
xfunc_die();
|
xfunc_die();
|
||||||
#endif
|
#endif
|
||||||
return -1;
|
return -1;
|
||||||
@ -62,7 +62,7 @@ void check_errors_in_children(int signo)
|
|||||||
#if BB_MMU
|
#if BB_MMU
|
||||||
void FAST_FUNC open_transformer(int fd,
|
void FAST_FUNC open_transformer(int fd,
|
||||||
int check_signature,
|
int check_signature,
|
||||||
IF_DESKTOP(long long) int FAST_FUNC (*transformer)(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
IF_DESKTOP(long long) int FAST_FUNC (*transformer)(transformer_state_t *xstate, int src_fd, int dst_fd)
|
||||||
)
|
)
|
||||||
#else
|
#else
|
||||||
void FAST_FUNC open_transformer(int fd, const char *transform_prog)
|
void FAST_FUNC open_transformer(int fd, const char *transform_prog)
|
||||||
@ -80,10 +80,10 @@ void FAST_FUNC open_transformer(int fd, const char *transform_prog)
|
|||||||
#if BB_MMU
|
#if BB_MMU
|
||||||
{
|
{
|
||||||
IF_DESKTOP(long long) int r;
|
IF_DESKTOP(long long) int r;
|
||||||
transformer_aux_data_t aux;
|
transformer_state_t xstate;
|
||||||
init_transformer_aux_data(&aux);
|
init_transformer_state(&xstate);
|
||||||
aux.check_signature = check_signature;
|
xstate.check_signature = check_signature;
|
||||||
r = transformer(&aux, fd, fd_pipe.wr);
|
r = transformer(&xstate, fd, fd_pipe.wr);
|
||||||
if (ENABLE_FEATURE_CLEAN_UP) {
|
if (ENABLE_FEATURE_CLEAN_UP) {
|
||||||
close(fd_pipe.wr); /* send EOF */
|
close(fd_pipe.wr); /* send EOF */
|
||||||
close(fd);
|
close(fd);
|
||||||
@ -126,7 +126,7 @@ int FAST_FUNC setup_unzip_on_fd(int fd, int fail_if_not_compressed)
|
|||||||
uint32_t b32[1];
|
uint32_t b32[1];
|
||||||
} magic;
|
} magic;
|
||||||
int offset = -2;
|
int offset = -2;
|
||||||
USE_FOR_MMU(IF_DESKTOP(long long) int FAST_FUNC (*xformer)(transformer_aux_data_t *aux, int src_fd, int dst_fd);)
|
USE_FOR_MMU(IF_DESKTOP(long long) int FAST_FUNC (*xformer)(transformer_state_t *xstate, int src_fd, int dst_fd);)
|
||||||
USE_FOR_NOMMU(const char *xformer_prog;)
|
USE_FOR_NOMMU(const char *xformer_prog;)
|
||||||
|
|
||||||
/* .gz and .bz2 both have 2-byte signature, and their
|
/* .gz and .bz2 both have 2-byte signature, and their
|
||||||
|
@ -1099,7 +1099,7 @@ static char* FAST_FUNC make_new_name_lzop(char *filename, const char *expected_e
|
|||||||
return xasprintf("%s.lzo", filename);
|
return xasprintf("%s.lzo", filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
static IF_DESKTOP(long long) int FAST_FUNC pack_lzop(transformer_aux_data_t *aux UNUSED_PARAM)
|
static IF_DESKTOP(long long) int FAST_FUNC pack_lzop(transformer_state_t *xstate UNUSED_PARAM)
|
||||||
{
|
{
|
||||||
if (option_mask32 & OPT_DECOMPRESS)
|
if (option_mask32 & OPT_DECOMPRESS)
|
||||||
return do_lzo_decompress();
|
return do_lzo_decompress();
|
||||||
|
@ -1171,7 +1171,7 @@ int tar_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (opt & OPT_ANY_COMPRESS) {
|
if (opt & OPT_ANY_COMPRESS) {
|
||||||
USE_FOR_MMU(IF_DESKTOP(long long) int FAST_FUNC (*xformer)(transformer_aux_data_t *aux, int src_fd, int dst_fd);)
|
USE_FOR_MMU(IF_DESKTOP(long long) int FAST_FUNC (*xformer)(transformer_state_t *xstate, int src_fd, int dst_fd);)
|
||||||
USE_FOR_NOMMU(const char *xformer_prog;)
|
USE_FOR_NOMMU(const char *xformer_prog;)
|
||||||
|
|
||||||
if (opt & OPT_COMPRESS)
|
if (opt & OPT_COMPRESS)
|
||||||
|
@ -280,17 +280,17 @@ static void unzip_extract(zip_header_t *zip_header, int dst_fd)
|
|||||||
bb_copyfd_exact_size(zip_fd, dst_fd, size);
|
bb_copyfd_exact_size(zip_fd, dst_fd, size);
|
||||||
} else {
|
} else {
|
||||||
/* Method 8 - inflate */
|
/* Method 8 - inflate */
|
||||||
transformer_aux_data_t aux;
|
transformer_state_t xstate;
|
||||||
init_transformer_aux_data(&aux);
|
init_transformer_state(&xstate);
|
||||||
aux.bytes_in = zip_header->formatted.cmpsize;
|
xstate.bytes_in = zip_header->formatted.cmpsize;
|
||||||
if (inflate_unzip(&aux, zip_fd, dst_fd) < 0)
|
if (inflate_unzip(&xstate, zip_fd, dst_fd) < 0)
|
||||||
bb_error_msg_and_die("inflate error");
|
bb_error_msg_and_die("inflate error");
|
||||||
/* Validate decompression - crc */
|
/* Validate decompression - crc */
|
||||||
if (zip_header->formatted.crc32 != (aux.crc32 ^ 0xffffffffL)) {
|
if (zip_header->formatted.crc32 != (xstate.crc32 ^ 0xffffffffL)) {
|
||||||
bb_error_msg_and_die("crc error");
|
bb_error_msg_and_die("crc error");
|
||||||
}
|
}
|
||||||
/* Validate decompression - size */
|
/* Validate decompression - size */
|
||||||
if (zip_header->formatted.ucmpsize != aux.bytes_out) {
|
if (zip_header->formatted.ucmpsize != xstate.bytes_out) {
|
||||||
/* Don't die. Who knows, maybe len calculation
|
/* Don't die. Who knows, maybe len calculation
|
||||||
* was botched somewhere. After all, crc matched! */
|
* was botched somewhere. After all, crc matched! */
|
||||||
bb_error_msg("bad length");
|
bb_error_msg("bad length");
|
||||||
|
@ -203,27 +203,27 @@ int read_bunzip(bunzip_data *bd, char *outbuf, int len) FAST_FUNC;
|
|||||||
void dealloc_bunzip(bunzip_data *bd) FAST_FUNC;
|
void dealloc_bunzip(bunzip_data *bd) FAST_FUNC;
|
||||||
|
|
||||||
/* Meaning and direction (input/output) of the fields are transformer-specific */
|
/* Meaning and direction (input/output) of the fields are transformer-specific */
|
||||||
typedef struct transformer_aux_data_t {
|
typedef struct transformer_state_t {
|
||||||
smallint check_signature; /* most often referenced member */
|
smallint check_signature; /* most often referenced member */
|
||||||
off_t bytes_out;
|
off_t bytes_out;
|
||||||
off_t bytes_in; /* used in unzip code only: needs to know packed size */
|
off_t bytes_in; /* used in unzip code only: needs to know packed size */
|
||||||
uint32_t crc32;
|
uint32_t crc32;
|
||||||
time_t mtime; /* gunzip code may set this on exit */
|
time_t mtime; /* gunzip code may set this on exit */
|
||||||
} transformer_aux_data_t;
|
} transformer_state_t;
|
||||||
|
|
||||||
void init_transformer_aux_data(transformer_aux_data_t *aux) FAST_FUNC;
|
void init_transformer_state(transformer_state_t *xstate) FAST_FUNC;
|
||||||
int FAST_FUNC check_signature16(transformer_aux_data_t *aux, int src_fd, unsigned magic16) FAST_FUNC;
|
int FAST_FUNC check_signature16(transformer_state_t *xstate, int src_fd, unsigned magic16) FAST_FUNC;
|
||||||
|
|
||||||
IF_DESKTOP(long long) int inflate_unzip(transformer_aux_data_t *aux, int src_fd, int dst_fd) FAST_FUNC;
|
IF_DESKTOP(long long) int inflate_unzip(transformer_state_t *xstate, int src_fd, int dst_fd) FAST_FUNC;
|
||||||
IF_DESKTOP(long long) int unpack_Z_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd) FAST_FUNC;
|
IF_DESKTOP(long long) int unpack_Z_stream(transformer_state_t *xstate, int src_fd, int dst_fd) FAST_FUNC;
|
||||||
IF_DESKTOP(long long) int unpack_gz_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd) FAST_FUNC;
|
IF_DESKTOP(long long) int unpack_gz_stream(transformer_state_t *xstate, int src_fd, int dst_fd) FAST_FUNC;
|
||||||
IF_DESKTOP(long long) int unpack_bz2_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd) FAST_FUNC;
|
IF_DESKTOP(long long) int unpack_bz2_stream(transformer_state_t *xstate, int src_fd, int dst_fd) FAST_FUNC;
|
||||||
IF_DESKTOP(long long) int unpack_lzma_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd) FAST_FUNC;
|
IF_DESKTOP(long long) int unpack_lzma_stream(transformer_state_t *xstate, int src_fd, int dst_fd) FAST_FUNC;
|
||||||
IF_DESKTOP(long long) int unpack_xz_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd) FAST_FUNC;
|
IF_DESKTOP(long long) int unpack_xz_stream(transformer_state_t *xstate, int src_fd, int dst_fd) FAST_FUNC;
|
||||||
|
|
||||||
char* append_ext(char *filename, const char *expected_ext) FAST_FUNC;
|
char* append_ext(char *filename, const char *expected_ext) FAST_FUNC;
|
||||||
int bbunpack(char **argv,
|
int bbunpack(char **argv,
|
||||||
IF_DESKTOP(long long) int FAST_FUNC (*unpacker)(transformer_aux_data_t *aux),
|
IF_DESKTOP(long long) int FAST_FUNC (*unpacker)(transformer_state_t *xstate),
|
||||||
char* FAST_FUNC (*make_new_name)(char *filename, const char *expected_ext),
|
char* FAST_FUNC (*make_new_name)(char *filename, const char *expected_ext),
|
||||||
const char *expected_ext
|
const char *expected_ext
|
||||||
) FAST_FUNC;
|
) FAST_FUNC;
|
||||||
@ -232,7 +232,7 @@ void check_errors_in_children(int signo);
|
|||||||
#if BB_MMU
|
#if BB_MMU
|
||||||
void open_transformer(int fd,
|
void open_transformer(int fd,
|
||||||
int check_signature,
|
int check_signature,
|
||||||
IF_DESKTOP(long long) int FAST_FUNC (*transformer)(transformer_aux_data_t *aux, int src_fd, int dst_fd)
|
IF_DESKTOP(long long) int FAST_FUNC (*transformer)(transformer_state_t *xstate, int src_fd, int dst_fd)
|
||||||
) FAST_FUNC;
|
) FAST_FUNC;
|
||||||
#define open_transformer_with_sig(fd, transformer, transform_prog) open_transformer((fd), 1, (transformer))
|
#define open_transformer_with_sig(fd, transformer, transform_prog) open_transformer((fd), 1, (transformer))
|
||||||
#define open_transformer_with_no_sig(fd, transformer) open_transformer((fd), 0, (transformer))
|
#define open_transformer_with_no_sig(fd, transformer) open_transformer((fd), 0, (transformer))
|
||||||
|
Loading…
Reference in New Issue
Block a user