]> Dogcows Code - chaz/tar/commitdiff
(struct zip_magic): Use char arrays, not pointers.
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 4 Apr 2005 18:21:55 +0000 (18:21 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 4 Apr 2005 18:21:55 +0000 (18:21 +0000)
The unsigned char * pointer ran afoul of pedantic C compilers, and
we didn't need pointers anyway.  Put the size field before the
data to avoid unnecessary padding.  All uses changed.
(magic) Make it const, since it doesn't change.  All uses changed.

src/buffer.c

index b41169a7a932ee1954977dfffabe94cadc91fb56..e4225fe1e72e0a2739c93a3af6016c8f1953cd85 100644 (file)
@@ -1,7 +1,7 @@
 /* Buffer management for tar.
 
    Copyright (C) 1988, 1992, 1993, 1994, 1996, 1997, 1999, 2000, 2001,
-   2003, 2004 Free Software Foundation, Inc.
+   2003, 2004, 2005 Free Software Foundation, Inc.
 
    Written by John Gilmore, on 1985-08-25.
 
@@ -159,17 +159,17 @@ enum compress_type {
 struct zip_magic
 {
   enum compress_type type;
-  unsigned char *magic;
   size_t length;
-  char *program;
-  char *option;
+  char magic[sizeof "BZh" - 1];
+  char program[sizeof "compress"];
+  char option[sizeof "-Z"];
 };
 
-static struct zip_magic magic[] = {
+static struct zip_magic const magic[] = {
   { ct_none, },
-  { ct_compress, "\037\235", 2, "compress", "-Z" },
-  { ct_gzip,     "\037\213", 2, "gzip", "-z"  },
-  { ct_bzip2,    "BZh",      3, "bzip2", "-j" },
+  { ct_compress, 2, "\037\235", "compress", "-Z" },
+  { ct_gzip,     2, "\037\213", "gzip", "-z"  },
+  { ct_bzip2,    3, "BZh",      "bzip2", "-j" },
 };
 
 #define NMAGIC (sizeof(magic)/sizeof(magic[0]))
@@ -178,10 +178,10 @@ static struct zip_magic magic[] = {
 #define compress_program(t) magic[t].program
 
 /* Check if the file ARCHIVE is a compressed archive. */
-enum compress_type 
+enum compress_type
 check_compressed_archive ()
 {
-  struct zip_magic *p;
+  struct zip_magic const *p;
   bool sfr, srp;
 
   /* Prepare global data needed for find_next_block: */
@@ -205,7 +205,7 @@ check_compressed_archive ()
   for (p = magic + 1; p < magic + NMAGIC; p++)
     if (memcmp (record_start->buffer, p->magic, p->length) == 0)
       return p->type;
-  
+
   return ct_none;
 }
 
@@ -220,10 +220,10 @@ open_compressed_archive ()
   if (archive == -1)
     return archive;
 
-  if (!multi_volume_option) 
+  if (!multi_volume_option)
     {
       enum compress_type type = check_compressed_archive ();
-  
+
       if (type == ct_none)
        return archive;
 
@@ -238,10 +238,10 @@ open_compressed_archive ()
       child_pid = sys_child_open_for_uncompress ();
       read_full_records = reading_from_pipe = true;
     }
-  
+
   records_read = 0;
   record_end = record_start; /* set up for 1st record = # 0 */
-  
+
   return archive;
 }
 \f
@@ -253,7 +253,7 @@ print_total_written (void)
   char bytes[sizeof (tarlong) * CHAR_BIT];
   char abbr[LONGEST_HUMAN_READABLE + 1];
   char rate[LONGEST_HUMAN_READABLE + 1];
-  
+
   int human_opts = human_autoscale | human_base_1024 | human_SI | human_B;
 
   sprintf (bytes, TARLONG_FORMAT, written);
@@ -407,9 +407,9 @@ open_archive (enum access_mode wanted_access)
 
   read_full_records = read_full_records_option;
   reading_from_pipe = false;
-  
+
   records_read = 0;
-  
+
   if (use_compress_program_option)
     {
       switch (wanted_access)
@@ -444,7 +444,7 @@ open_archive (enum access_mode wanted_access)
        case ACCESS_READ:
          {
            enum compress_type type;
-           
+
            archive = STDIN_FILENO;
 
            type = check_compressed_archive (archive);
@@ -564,7 +564,7 @@ flush_write (void)
 
   if (checkpoint_option && !(++checkpoint % 10))
     /* TRANSLATORS: This is a ``checkpoint of write operation'',
-       *not* ``Writing a checkpoint''. 
+       *not* ``Writing a checkpoint''.
        E.g. in Spanish ``Punto de comprobaci@'on de escritura'',
        *not* ``Escribiendo un punto de comprobaci@'on'' */
     WARN ((0, 0, _("Write checkpoint %d"), checkpoint));
@@ -656,7 +656,7 @@ flush_write (void)
        FATAL_ERROR ((0, 0,
                      _("%s: file name too long to be stored in a GNU multivolume header"),
                      quotearg_colon (real_s_name)));
-      
+
       memset (record_start, 0, BLOCKSIZE);
 
       /* FIXME: Michael P Urban writes: [a long name file] is being written
@@ -669,7 +669,7 @@ flush_write (void)
       OFF_TO_CHARS (real_s_sizeleft, record_start->header.size);
       OFF_TO_CHARS (real_s_totsize - real_s_sizeleft,
                    record_start->oldgnu_header.offset);
-      
+
       tmp = verbose_option;
       verbose_option = 0;
       finish_header (&current_stat_info, record_start, -1);
@@ -1050,13 +1050,13 @@ seek_archive (off_t size)
   off_t offset;
   off_t nrec, nblk;
   off_t skipped = (blocking_factor - (current_block - record_start));
-  
+
   size -= skipped * BLOCKSIZE;
-  
+
   if (size < record_size)
     return 0;
   /* FIXME: flush? */
-  
+
   /* Compute number of records to skip */
   nrec = size / record_size;
   offset = rmtlseek (archive, nrec * record_size, SEEK_CUR);
@@ -1075,7 +1075,7 @@ seek_archive (off_t size)
   records_read += nblk / blocking_factor;
   record_start_block = offset - blocking_factor;
   current_block = record_end;
+
   return nblk;
 }
 
@@ -1089,7 +1089,7 @@ close_archive (void)
   sys_drain_input_pipe ();
 
   compute_duration ();
-  if (verify_option) 
+  if (verify_option)
     verify_volume ();
 
   if (rmtclose (archive) != 0)
@@ -1310,4 +1310,3 @@ new_volume (enum access_mode mode)
 
   return true;
 }
-
This page took 0.031775 seconds and 4 git commands to generate.