gzip cleanup part #4
authorDenis Vlasenko <vda.linux@googlemail.com>
Sun, 7 Jan 2007 19:38:42 +0000 (19:38 -0000)
committerDenis Vlasenko <vda.linux@googlemail.com>
Sun, 7 Jan 2007 19:38:42 +0000 (19:38 -0000)
archival/gzip.c

index dcbcae0b3191d03c5bae976307690a226cddc8ef..4f47a27823706290632c4d2319848778e78b576b 100644 (file)
@@ -61,12 +61,6 @@ aa:      85.1% -- replaced with aa.gz
 #  endif
 #endif
 
-#define        PACK_MAGIC     "\037\036"       /* Magic header for packed files */
-#define        GZIP_MAGIC     "\037\213"       /* Magic header for gzip files, 1F 8B */
-#define        OLD_GZIP_MAGIC "\037\236"       /* Magic header for gzip 0.5 = freeze 1.x */
-#define        LZH_MAGIC      "\037\240"       /* Magic header for SCO LZH Compress files */
-#define PKZIP_MAGIC    "\120\113\003\004"      /* Magic header for pkzip files */
-
 /* gzip flag byte */
 #define ASCII_FLAG   0x01      /* bit 0 set: file probably ascii text */
 #define CONTINUATION 0x02      /* bit 1 set: continuation of multi-part gzip file */
@@ -142,9 +136,9 @@ aa:      85.1% -- replaced with aa.gz
 #  define Assert(cond,msg) {if(!(cond)) bb_error_msg(msg);}
 #  define Trace(x) fprintf x
 #  define Tracev(x) {if (verbose) fprintf x ;}
-#  define Tracevv(x) {if (verbose>1) fprintf x ;}
+#  define Tracevv(x) {if (verbose > 1) fprintf x ;}
 #  define Tracec(c,x) {if (verbose && (c)) fprintf x ;}
-#  define Tracecv(c,x) {if (verbose>1 && (c)) fprintf x ;}
+#  define Tracecv(c,x) {if (verbose > 1 && (c)) fprintf x ;}
 #else
 #  define Assert(cond,msg)
 #  define Trace(x)
@@ -313,7 +307,7 @@ static void clear_bufs(void)
  * pointer, then initialize the crc shift register contents instead.
  * Return the current crc in either case.
  */
-static uint32_t crc = ~0;      /* shift register contents */
+static uint32_t crc;   /* shift register contents */
 static uint32_t updcrc(uch * s, unsigned n)
 {
        uint32_t c;             /* temporary variable */
@@ -1414,17 +1408,18 @@ static void set_file_type(void);
 
 
 #ifndef DEBUG
+/* Send a code of the given tree. c and tree must not have side effects */
 #  define send_code(c, tree) send_bits(tree[c].Code, tree[c].Len)
-   /* Send a code of the given tree. c and tree must not have side effects */
-
 #else                                                  /* DEBUG */
 #  define send_code(c, tree) \
-     { if (verbose>1) bb_error_msg("\ncd %3d ",(c)); \
-       send_bits(tree[c].Code, tree[c].Len); }
+{ \
+       if (verbose > 1) bb_error_msg("\ncd %3d ",(c)); \
+        send_bits(tree[c].Code, tree[c].Len); \
+}
 #endif
 
 #define d_code(dist) \
-   ((dist) < 256 ? dist_code[dist] : dist_code[256+((dist)>>7)])
+       ((dist) < 256 ? dist_code[dist] : dist_code[256 + ((dist)>>7)])
 /* Mapping from a distance to a distance code. dist is the distance - 1 and
  * must not have side effects. dist_code[256] and dist_code[257] are never
  * used.
@@ -1432,6 +1427,7 @@ static void set_file_type(void);
 
 /* the arguments must not have side effects */
 
+
 /* ===========================================================================
  * Allocate the match buffer, initialize the various tables and save the
  * location of the internal file attribute (ascii/binary) and method
@@ -1513,12 +1509,13 @@ static void ct_init(ush * attr, int *methodp)
        init_block();
 }
 
+
 /* ===========================================================================
  * Initialize a new block.
  */
 static void init_block(void)
 {
-       int n;                          /* iterates over tree elements */
+       int n; /* iterates over tree elements */
 
        /* Initialize the trees. */
        for (n = 0; n < L_CODES; n++)
@@ -1535,28 +1532,22 @@ static void init_block(void)
        flag_bit = 1;
 }
 
-#define SMALLEST 1
-/* Index within the heap array of least frequent node in the Huffman tree */
-
 
 /* ===========================================================================
  * Remove the smallest element from the heap and recreate the heap with
  * one less element. Updates heap and heap_len.
  */
+
+#define SMALLEST 1
+/* Index within the heap array of least frequent node in the Huffman tree */
+
 #define pqremove(tree, top) \
-{\
-    top = heap[SMALLEST]; \
-    heap[SMALLEST] = heap[heap_len--]; \
-    pqdownheap(tree, SMALLEST); \
+{ \
+       top = heap[SMALLEST]; \
+       heap[SMALLEST] = heap[heap_len--]; \
+       pqdownheap(tree, SMALLEST); \
 }
 
-/* ===========================================================================
- * Compares to subtrees, using the tree depth as tie breaker when
- * the subtrees have equal frequency. This minimizes the worst case length.
- */
-#define smaller(tree, n, m) \
-   (tree[n].Freq < tree[m].Freq || \
-   (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
 
 /* ===========================================================================
  * Restore the heap property by moving down the tree starting at node k,
@@ -1564,6 +1555,14 @@ static void init_block(void)
  * when the heap property is re-established (each father smaller than its
  * two sons).
  */
+
+/* Compares to subtrees, using the tree depth as tie breaker when
+ * the subtrees have equal frequency. This minimizes the worst case length.
+ */
+#define smaller(tree, n, m) \
+       (tree[n].Freq < tree[m].Freq \
+       || (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m]))
+
 static void pqdownheap(ct_data * tree, int k)
 {
        int v = heap[k];
@@ -1588,6 +1587,7 @@ static void pqdownheap(ct_data * tree, int k)
        heap[k] = v;
 }
 
+
 /* ===========================================================================
  * Compute the optimal bit lengths for a tree and update the total bit length
  * for the current block.
@@ -1624,8 +1624,10 @@ static void gen_bitlen(tree_desc * desc)
        for (h = heap_max + 1; h < HEAP_SIZE; h++) {
                n = heap[h];
                bits = tree[tree[n].Dad].Len + 1;
-               if (bits > max_length)
-                       bits = max_length, overflow++;
+               if (bits > max_length) {
+                       bits = max_length;
+                       overflow++;
+               }
                tree[n].Len = (ush) bits;
                /* We overwrite tree[n].Dad which is no longer needed */
 
@@ -2151,7 +2153,7 @@ static void compress_block(ct_data * ltree, ct_data * dtree)
        unsigned code;          /* the code to send */
        int extra;                      /* number of extra bits to send */
 
-       if (last_lit != 0)
+       if (last_lit != 0) {
                do {
                        if ((lx & 7) == 0)
                                flag = flag_buf[fx++];
@@ -2182,6 +2184,7 @@ static void compress_block(ct_data * ltree, ct_data * dtree)
                        }                       /* literal or match pair ? */
                        flag >>= 1;
                } while (lx < last_lit);
+       }
 
        send_code(END_BLOCK, ltree);
 }
@@ -2204,7 +2207,7 @@ static void set_file_type(void)
                ascii_freq += dyn_ltree[n++].Freq;
        while (n < LITERALS)
                bin_freq += dyn_ltree[n++].Freq;
-       *file_type = bin_freq > (ascii_freq >> 2) ? BINARY : ASCII;
+       *file_type = (bin_freq > (ascii_freq >> 2)) ? BINARY : ASCII;
        if (*file_type == BINARY && translate_eol) {
                bb_error_msg("-l used on binary file");
        }
@@ -2228,8 +2231,9 @@ static int zip(int in, int out)
        /* Write the header to the gzip file. See algorithm.doc for the format */
 
        method = DEFLATED;
-       put_header_byte(GZIP_MAGIC[0]); /* magic header */
-       put_header_byte(GZIP_MAGIC[1]);
+       put_header_byte(0x1f);  /* magic header for gzip files, 1F 8B */
+       put_header_byte(0x8b);
+
        put_header_byte(DEFLATED);      /* compression method */
 
        put_header_byte(my_flags);      /* general flags */