Ignore:
Timestamp:
Dec 20, 2016, 4:07:32 PM (7 years ago)
Author:
Bruno Cornec
Message:

New 3?3 banch for incorporation of latest busybox 1.25. Changing minor version to handle potential incompatibilities.

Location:
branches/3.3
Files:
1 edited
1 copied

Legend:

Unmodified
Added
Removed
  • branches/3.3/mindi-busybox/archival/libarchive/decompress_bunzip2.c

    r3232 r3621  
    4343#include "bb_archive.h"
    4444
     45#if 0
     46# define dbg(...) bb_error_msg(__VA_ARGS__)
     47#else
     48# define dbg(...) ((void)0)
     49#endif
     50
    4551/* Constants for Huffman coding */
    4652#define MAX_GROUPS          6
     
    5359/* Status return values */
    5460#define RETVAL_OK                       0
    55 #define RETVAL_LAST_BLOCK               (-1)
    56 #define RETVAL_NOT_BZIP_DATA            (-2)
    57 #define RETVAL_UNEXPECTED_INPUT_EOF     (-3)
    58 #define RETVAL_SHORT_WRITE              (-4)
    59 #define RETVAL_DATA_ERROR               (-5)
    60 #define RETVAL_OUT_OF_MEMORY            (-6)
    61 #define RETVAL_OBSOLETE_INPUT           (-7)
     61#define RETVAL_LAST_BLOCK               (dbg("%d", __LINE__), -1)
     62#define RETVAL_NOT_BZIP_DATA            (dbg("%d", __LINE__), -2)
     63#define RETVAL_UNEXPECTED_INPUT_EOF     (dbg("%d", __LINE__), -3)
     64#define RETVAL_SHORT_WRITE              (dbg("%d", __LINE__), -4)
     65#define RETVAL_DATA_ERROR               (dbg("%d", __LINE__), -5)
     66#define RETVAL_OUT_OF_MEMORY            (dbg("%d", __LINE__), -6)
     67#define RETVAL_OBSOLETE_INPUT           (dbg("%d", __LINE__), -7)
    6268
    6369/* Other housekeeping constants */
     
    441447        if (runPos != 0) {
    442448            uint8_t tmp_byte;
    443             if (dbufCount + runCnt >= dbufSize) return RETVAL_DATA_ERROR;
     449            if (dbufCount + runCnt > dbufSize) {
     450                dbg("dbufCount:%d+runCnt:%d %d > dbufSize:%d RETVAL_DATA_ERROR",
     451                        dbufCount, runCnt, dbufCount + runCnt, dbufSize);
     452                return RETVAL_DATA_ERROR;
     453            }
    444454            tmp_byte = symToByte[mtfSymbol[0]];
    445455            byteCount[tmp_byte] += runCnt;
     
    722732/* Decompress src_fd to dst_fd.  Stops at end of bzip data, not end of file. */
    723733IF_DESKTOP(long long) int FAST_FUNC
    724 unpack_bz2_stream(transformer_aux_data_t *aux, int src_fd, int dst_fd)
     734unpack_bz2_stream(transformer_state_t *xstate)
    725735{
    726736    IF_DESKTOP(long long total_written = 0;)
     
    730740    unsigned len;
    731741
    732     if (check_signature16(aux, src_fd, BZIP2_MAGIC))
     742    if (check_signature16(xstate, BZIP2_MAGIC))
    733743        return -1;
    734744
     
    737747    while (1) { /* "Process one BZ... stream" loop */
    738748
    739         i = start_bunzip(&bd, src_fd, outbuf + 2, len);
     749        i = start_bunzip(&bd, xstate->src_fd, outbuf + 2, len);
    740750
    741751        if (i == 0) {
     
    747757                if (i == 0) /* EOF? */
    748758                    break;
    749                 if (i != full_write(dst_fd, outbuf, i)) {
    750                     bb_error_msg("short write");
     759                if (i != transformer_write(xstate, outbuf, i)) {
    751760                    i = RETVAL_SHORT_WRITE;
    752761                    goto release_mem;
     
    781790        memcpy(outbuf, &bd->inbuf[bd->inbufPos], len);
    782791        if (len < 2) {
    783             if (safe_read(src_fd, outbuf + len, 2 - len) != 2 - len)
     792            if (safe_read(xstate->src_fd, outbuf + len, 2 - len) != 2 - len)
    784793                break;
    785794            len = 2;
     
    809818int main(int argc, char **argv)
    810819{
    811     int i;
    812820    char c;
    813821
Note: See TracChangeset for help on using the changeset viewer.