Example #1
0
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;
}
Example #2
0
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);
}
Example #5
0
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;
}
Example #8
0
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);
}
Example #9
0
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;
}