char FAST_FUNC get_header_tar_gz(archive_handle_t *archive_handle) { #if BB_MMU uint16_t magic; #endif /* Can't lseek over pipes */ archive_handle->seek = seek_by_read; /* Check gzip magic only if open_transformer will invoke unpack_gz_stream (MMU case). * Otherwise, it will invoke an external helper "gunzip -cf" (NOMMU case) which will * need the header. */ #if BB_MMU xread(archive_handle->src_fd, &magic, 2); /* Can skip this check, but error message will be less clear */ if (magic != GZIP_MAGIC) { bb_error_msg_and_die("invalid gzip magic"); } #endif open_transformer(archive_handle->src_fd, unpack_gz_stream, "gunzip"); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS) continue; /* Can only do one file at a time */ return EXIT_FAILURE; }
void extract_cpio_gz(int fd) { archive_handle_t *archive_handle; unsigned char magic[2]; /* Initialise */ archive_handle = init_handle(); archive_handle->seek = seek_by_char; //archive_handle->action_header = header_list; archive_handle->action_data = data_extract_all; archive_handle->flags |= ARCHIVE_PRESERVE_DATE; archive_handle->flags |= ARCHIVE_CREATE_LEADING_DIRS; archive_handle->src_fd = fd; archive_handle->offset = 0; bb_xread_all(archive_handle->src_fd, &magic, 2); if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) { bb_error_msg_and_die("Invalid gzip magic"); } check_header_gzip(archive_handle->src_fd); bb_xchdir("/"); // Install RPM's to root archive_handle->src_fd = open_transformer(archive_handle->src_fd, inflate_gunzip); archive_handle->offset = 0; while (get_header_cpio(archive_handle) == EXIT_SUCCESS); }
char get_header_tar_gz(archive_handle_t *archive_handle) { #if BB_MMU unsigned char magic[2]; #endif /* Can't lseek over pipes */ archive_handle->seek = seek_by_read; /* Check gzip magic only if open_transformer will invoke unpack_gz_stream (MMU case). * Otherwise, it will invoke an external helper "gunzip -cf" (NOMMU case) which will * need the header. */ #if BB_MMU xread(archive_handle->src_fd, &magic, 2); if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) { bb_error_msg_and_die("invalid gzip magic"); } #endif archive_handle->src_fd = open_transformer(archive_handle->src_fd, unpack_gz_stream, "gunzip"); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS) continue; /* Can only do one file at a time */ return EXIT_FAILURE; }
extern char get_header_tar_bz2(archive_handle_t *archive_handle) { /* Cant lseek over pipe's */ archive_handle->seek = seek_by_char; archive_handle->src_fd = open_transformer(archive_handle->src_fd, uncompressStream); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS); /* Can only do one file at a time */ return(EXIT_FAILURE); }
char get_header_tar_lzma(archive_handle_t * archive_handle) { /* Can't lseek over pipes */ archive_handle->seek = seek_by_read; archive_handle->src_fd = open_transformer(archive_handle->src_fd, unpack_lzma_stream, "unlzma", "unlzma", "-cf", "-", NULL); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS) /**/; /* Can only do one file at a time */ return EXIT_FAILURE; }
char get_header_tar_lzma(archive_handle_t * archive_handle) { /* Can't lseek over pipes */ archive_handle->seek = seek_by_char; archive_handle->src_fd = open_transformer(archive_handle->src_fd, unlzma); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS); /* Can only do one file at a time */ return EXIT_FAILURE; }
char FAST_FUNC get_header_tar_bz2(archive_handle_t *archive_handle) { /* Can't lseek over pipes */ archive_handle->seek = seek_by_read; open_transformer(archive_handle->src_fd, unpack_bz2_stream_prime, "bunzip2"); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS) continue; /* Can only do one file at a time */ return EXIT_FAILURE; }
static char get_header_tar_Z(archive_handle_t *archive_handle) { /* Cant lseek over pipe's */ archive_handle->seek = seek_by_char; /* do the decompression, and cleanup */ if ((bb_xread_char(archive_handle->src_fd) != 0x1f) || (bb_xread_char(archive_handle->src_fd) != 0x9d)) { bb_error_msg_and_die("Invalid magic"); } archive_handle->src_fd = open_transformer(archive_handle->src_fd, uncompress); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS); /* Can only do one file at a time */ return(EXIT_FAILURE); }
static char FAST_FUNC get_header_tar_Z(archive_handle_t *archive_handle) { /* Can't lseek over pipes */ archive_handle->seek = seek_by_read; /* do the decompression, and cleanup */ if (xread_char(archive_handle->src_fd) != 0x1f || xread_char(archive_handle->src_fd) != 0x9d ) { bb_error_msg_and_die("invalid magic"); } open_transformer(archive_handle->src_fd, unpack_Z_stream, "uncompress"); archive_handle->offset = 0; while (get_header_tar(archive_handle) == EXIT_SUCCESS) continue; /* Can only do one file at a time */ return EXIT_FAILURE; }