|  | @@ -54,7 +54,7 @@ enum access_mode access_mode;   /* how do we handle the archive */
 | 
	
		
			
				|  |  |  off_t records_read;             /* number of records read from this archive */
 | 
	
		
			
				|  |  |  off_t records_written;          /* likewise, for records written */
 | 
	
		
			
				|  |  |  extern off_t records_skipped;   /* number of records skipped at the start
 | 
	
		
			
				|  |  | -                                   of the archive, defined in delete.c */   
 | 
	
		
			
				|  |  | +                                   of the archive, defined in delete.c */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static off_t record_start_block; /* block ordinal at record_start */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -175,8 +175,8 @@ set_start_time ()
 | 
	
		
			
				|  |  |    last_stat_time = start_time;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void
 | 
	
		
			
				|  |  | -set_volume_start_time ()
 | 
	
		
			
				|  |  | +static void
 | 
	
		
			
				|  |  | +set_volume_start_time (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    gettime (&volume_start_time);
 | 
	
		
			
				|  |  |    last_stat_time = volume_start_time;
 | 
	
	
		
			
				|  | @@ -211,9 +211,9 @@ struct zip_magic
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    enum compress_type type;
 | 
	
		
			
				|  |  |    size_t length;
 | 
	
		
			
				|  |  | -  char *magic;
 | 
	
		
			
				|  |  | -  char *program;
 | 
	
		
			
				|  |  | -  char *option;
 | 
	
		
			
				|  |  | +  char const *magic;
 | 
	
		
			
				|  |  | +  char const *program;
 | 
	
		
			
				|  |  | +  char const *option;
 | 
	
		
			
				|  |  |  };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static struct zip_magic const magic[] = {
 | 
	
	
		
			
				|  | @@ -234,7 +234,7 @@ static struct zip_magic const magic[] = {
 | 
	
		
			
				|  |  |  #define compress_program(t) magic[t].program
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* Check if the file ARCHIVE is a compressed archive. */
 | 
	
		
			
				|  |  | -enum compress_type
 | 
	
		
			
				|  |  | +static enum compress_type
 | 
	
		
			
				|  |  |  check_compressed_archive (bool *pshort)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    struct zip_magic const *p;
 | 
	
	
		
			
				|  | @@ -243,14 +243,14 @@ check_compressed_archive (bool *pshort)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (!pshort)
 | 
	
		
			
				|  |  |      pshort = &temp;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* Prepare global data needed for find_next_block: */
 | 
	
		
			
				|  |  |    record_end = record_start; /* set up for 1st record = # 0 */
 | 
	
		
			
				|  |  |    sfr = read_full_records;
 | 
	
		
			
				|  |  |    read_full_records = true; /* Suppress fatal error on reading a partial
 | 
	
		
			
				|  |  |                                 record */
 | 
	
		
			
				|  |  |    *pshort = find_next_block () == 0;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* Restore global values */
 | 
	
		
			
				|  |  |    read_full_records = sfr;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -267,7 +267,7 @@ check_compressed_archive (bool *pshort)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* Guess if the archive is seekable. */
 | 
	
		
			
				|  |  |  static void
 | 
	
		
			
				|  |  | -guess_seekable_archive ()
 | 
	
		
			
				|  |  | +guess_seekable_archive (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    struct stat st;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -288,7 +288,7 @@ guess_seekable_archive ()
 | 
	
		
			
				|  |  |        seekable_archive = !!seek_option;
 | 
	
		
			
				|  |  |        return;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (!multi_volume_option && !use_compress_program_option
 | 
	
		
			
				|  |  |        && fstat (archive, &st) == 0)
 | 
	
		
			
				|  |  |      seekable_archive = S_ISREG (st.st_mode);
 | 
	
	
		
			
				|  | @@ -299,8 +299,8 @@ guess_seekable_archive ()
 | 
	
		
			
				|  |  |  /* Open an archive named archive_name_array[0]. Detect if it is
 | 
	
		
			
				|  |  |     a compressed archive of known type and use corresponding decompression
 | 
	
		
			
				|  |  |     program if so */
 | 
	
		
			
				|  |  | -int
 | 
	
		
			
				|  |  | -open_compressed_archive ()
 | 
	
		
			
				|  |  | +static int
 | 
	
		
			
				|  |  | +open_compressed_archive (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    archive = rmtopen (archive_name_array[0], O_RDONLY | O_BINARY,
 | 
	
		
			
				|  |  |                       MODE_RW, rsh_command_option);
 | 
	
	
		
			
				|  | @@ -320,7 +320,7 @@ open_compressed_archive ()
 | 
	
		
			
				|  |  |                if (shortfile)
 | 
	
		
			
				|  |  |                  ERROR ((0, 0, _("This does not look like a tar archive")));
 | 
	
		
			
				|  |  |                return archive;
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              case ct_none:
 | 
	
		
			
				|  |  |                if (shortfile)
 | 
	
		
			
				|  |  |                  ERROR ((0, 0, _("This does not look like a tar archive")));
 | 
	
	
		
			
				|  | @@ -334,10 +334,10 @@ open_compressed_archive ()
 | 
	
		
			
				|  |  |                break;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        /* FD is not needed any more */
 | 
	
		
			
				|  |  |        rmtclose (archive);
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        hit_eof = false; /* It might have been set by find_next_block in
 | 
	
		
			
				|  |  |                            check_compressed_archive */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -486,7 +486,7 @@ xclose (int fd)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void
 | 
	
		
			
				|  |  | -init_buffer ()
 | 
	
		
			
				|  |  | +init_buffer (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    if (! record_buffer_aligned[record_index])
 | 
	
		
			
				|  |  |      record_buffer_aligned[record_index] =
 | 
	
	
		
			
				|  | @@ -657,7 +657,7 @@ _open_archive (enum access_mode wanted_access)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* Perform a write to flush the buffer.  */
 | 
	
		
			
				|  |  | -ssize_t
 | 
	
		
			
				|  |  | +static ssize_t
 | 
	
		
			
				|  |  |  _flush_write (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    ssize_t status;
 | 
	
	
		
			
				|  | @@ -672,7 +672,7 @@ _flush_write (void)
 | 
	
		
			
				|  |  |      status = record_size;
 | 
	
		
			
				|  |  |    else
 | 
	
		
			
				|  |  |      status = sys_write_archive_buffer ();
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    return status;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -713,7 +713,7 @@ archive_read_error (void)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static bool
 | 
	
		
			
				|  |  | -archive_is_dev ()
 | 
	
		
			
				|  |  | +archive_is_dev (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    struct stat st;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -861,7 +861,7 @@ seek_archive (off_t size)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (size <= skipped)
 | 
	
		
			
				|  |  |      return 0;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* Compute number of records to skip */
 | 
	
		
			
				|  |  |    nrec = (size - skipped) / record_size;
 | 
	
		
			
				|  |  |    if (nrec == 0)
 | 
	
	
		
			
				|  | @@ -956,7 +956,7 @@ closeout_volume_number (void)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void
 | 
	
		
			
				|  |  | -increase_volume_number ()
 | 
	
		
			
				|  |  | +increase_volume_number (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    global_volno++;
 | 
	
		
			
				|  |  |    if (global_volno < 0)
 | 
	
	
		
			
				|  | @@ -964,13 +964,13 @@ increase_volume_number ()
 | 
	
		
			
				|  |  |    volno++;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void
 | 
	
		
			
				|  |  | +static void
 | 
	
		
			
				|  |  |  change_tape_menu (FILE *read_file)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    char *input_buffer = NULL;
 | 
	
		
			
				|  |  |    size_t size = 0;
 | 
	
		
			
				|  |  |    bool stop = false;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    while (!stop)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        fputc ('\007', stderr);
 | 
	
	
		
			
				|  | @@ -1088,7 +1088,7 @@ new_volume (enum access_mode mode)
 | 
	
		
			
				|  |  |    assign_string (&continued_file_name, NULL);
 | 
	
		
			
				|  |  |    continued_file_size = continued_file_offset = 0;
 | 
	
		
			
				|  |  |    current_block = record_start;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (rmtclose (archive) != 0)
 | 
	
		
			
				|  |  |      close_error (*archive_name_cursor);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1177,13 +1177,13 @@ read_header0 (struct tar_stat_info *info)
 | 
	
		
			
				|  |  |    return false;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -bool
 | 
	
		
			
				|  |  | -try_new_volume ()
 | 
	
		
			
				|  |  | +static bool
 | 
	
		
			
				|  |  | +try_new_volume (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    size_t status;
 | 
	
		
			
				|  |  |    union block *header;
 | 
	
		
			
				|  |  |    enum access_mode acc;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    switch (subcommand_option)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      case APPEND_SUBCOMMAND:
 | 
	
	
		
			
				|  | @@ -1199,7 +1199,7 @@ try_new_volume ()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (!new_volume (acc))
 | 
	
		
			
				|  |  |      return true;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    while ((status = rmtread (archive, record_start->buffer, record_size))
 | 
	
		
			
				|  |  |           == SAFE_READ_ERROR)
 | 
	
		
			
				|  |  |      archive_read_error ();
 | 
	
	
		
			
				|  | @@ -1222,10 +1222,10 @@ try_new_volume ()
 | 
	
		
			
				|  |  |  	    ERROR ((0, 0, _("This does not look like a tar archive")));
 | 
	
		
			
				|  |  |  	    return false;
 | 
	
		
			
				|  |  |  	  }
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          xheader_decode (&dummy); /* decodes values from the global header */
 | 
	
		
			
				|  |  |          tar_stat_destroy (&dummy);
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	/* The initial global header must be immediately followed by
 | 
	
		
			
				|  |  |  	   an extended PAX header for the first member in this volume.
 | 
	
		
			
				|  |  |  	   However, in some cases tar may split volumes in the middle
 | 
	
	
		
			
				|  | @@ -1237,7 +1237,7 @@ try_new_volume ()
 | 
	
		
			
				|  |  |  	   HEADER_FAILURE, which is ignored.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	   See also tests/multiv07.at */
 | 
	
		
			
				|  |  | -	       
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	switch (read_header (&header, &dummy, read_header_auto))
 | 
	
		
			
				|  |  |  	  {
 | 
	
		
			
				|  |  |  	  case HEADER_SUCCESS:
 | 
	
	
		
			
				|  | @@ -1327,7 +1327,7 @@ try_new_volume ()
 | 
	
		
			
				|  |  |                   STRINGIFY_BIGINT (real_s_totsize, totsizebuf),
 | 
	
		
			
				|  |  |                   STRINGIFY_BIGINT (real_s_sizeleft, s1buf),
 | 
	
		
			
				|  |  |                   STRINGIFY_BIGINT (continued_file_offset, s2buf)));
 | 
	
		
			
				|  |  | -         
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |            return false;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1348,7 +1348,7 @@ drop_volume_label_suffix (const char *label)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (len < 1)
 | 
	
		
			
				|  |  |      return NULL;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    for (p = label + len - 1; p > label && isdigit ((unsigned char) *p); p--)
 | 
	
		
			
				|  |  |      ;
 | 
	
		
			
				|  |  |    if (p > label && p - (VOLUME_TEXT_LEN - 1) > label)
 | 
	
	
		
			
				|  | @@ -1365,7 +1365,7 @@ drop_volume_label_suffix (const char *label)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    return NULL;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  /* Check LABEL against the volume label, seen as a globbing
 | 
	
		
			
				|  |  |     pattern.  Return true if the pattern matches.  In case of failure,
 | 
	
		
			
				|  |  |     retry matching a volume sequence number before giving up in
 | 
	
	
		
			
				|  | @@ -1399,7 +1399,7 @@ match_volume_label (void)
 | 
	
		
			
				|  |  |    if (!volume_label)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        union block *label = find_next_block ();
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |        if (!label)
 | 
	
		
			
				|  |  |  	FATAL_ERROR ((0, 0, _("Archive not labeled to match %s"),
 | 
	
		
			
				|  |  |  		      quote (volume_label_option)));
 | 
	
	
		
			
				|  | @@ -1425,11 +1425,11 @@ match_volume_label (void)
 | 
	
		
			
				|  |  |  	  tar_stat_destroy (&st);
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (!volume_label)
 | 
	
		
			
				|  |  |      FATAL_ERROR ((0, 0, _("Archive not labeled to match %s"),
 | 
	
		
			
				|  |  |                    quote (volume_label_option)));
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (!check_label_pattern (volume_label))
 | 
	
		
			
				|  |  |      FATAL_ERROR ((0, 0, _("Volume %s does not match %s"),
 | 
	
		
			
				|  |  |                    quote_n (0, volume_label),
 | 
	
	
		
			
				|  | @@ -1477,7 +1477,7 @@ add_volume_label (void)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  static void
 | 
	
		
			
				|  |  | -add_chunk_header ()
 | 
	
		
			
				|  |  | +add_chunk_header (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    if (archive_format == POSIX_FORMAT)
 | 
	
		
			
				|  |  |      {
 | 
	
	
		
			
				|  | @@ -1568,7 +1568,7 @@ add_multi_volume_header (void)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /* Synchronize multi-volume globals */
 | 
	
		
			
				|  |  |  static void
 | 
	
		
			
				|  |  | -multi_volume_sync ()
 | 
	
		
			
				|  |  | +multi_volume_sync (void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    if (multi_volume_option)
 | 
	
		
			
				|  |  |      {
 | 
	
	
		
			
				|  | @@ -1599,7 +1599,7 @@ simple_flush_read (void)
 | 
	
		
			
				|  |  |    size_t status;                /* result from system call */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    checkpoint_run (false);
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* Clear the count of errors.  This only applies to a single call to
 | 
	
		
			
				|  |  |       flush_read.  */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1658,7 +1658,7 @@ _gnu_flush_read (void)
 | 
	
		
			
				|  |  |    size_t status;                /* result from system call */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    checkpoint_run (false);
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* Clear the count of errors.  This only applies to a single call to
 | 
	
		
			
				|  |  |       flush_read.  */
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1727,14 +1727,14 @@ _gnu_flush_write (size_t buffer_level)
 | 
	
		
			
				|  |  |    size_t copy_size;
 | 
	
		
			
				|  |  |    size_t bufsize;
 | 
	
		
			
				|  |  |    tarlong wrt;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    status = _flush_write ();
 | 
	
		
			
				|  |  |    if (status != record_size && !multi_volume_option)
 | 
	
		
			
				|  |  |      archive_write_error (status);
 | 
	
		
			
				|  |  |    else
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        if (status)
 | 
	
		
			
				|  |  | -        records_written++; 
 | 
	
		
			
				|  |  | +        records_written++;
 | 
	
		
			
				|  |  |        bytes_written += status;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1749,7 +1749,7 @@ _gnu_flush_write (size_t buffer_level)
 | 
	
		
			
				|  |  |        ERROR ((0, 0, _("write did not end on a block boundary")));
 | 
	
		
			
				|  |  |        archive_write_error (status);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* In multi-volume mode. */
 | 
	
		
			
				|  |  |    /* ENXIO is for the UNIX PC.  */
 | 
	
		
			
				|  |  |    if (status < 0 && errno != ENOSPC && errno != EIO && errno != ENXIO)
 | 
	
	
		
			
				|  | @@ -1767,7 +1767,7 @@ _gnu_flush_write (size_t buffer_level)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    copy_ptr = record_start->buffer + status;
 | 
	
		
			
				|  |  |    copy_size = buffer_level - status;
 | 
	
		
			
				|  |  | -                   
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    /* Switch to the next buffer */
 | 
	
		
			
				|  |  |    record_index = !record_index;
 | 
	
		
			
				|  |  |    init_buffer ();
 | 
	
	
		
			
				|  | @@ -1780,7 +1780,7 @@ _gnu_flush_write (size_t buffer_level)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    write_extended (true, &dummy, find_next_block ());
 | 
	
		
			
				|  |  |    tar_stat_destroy (&dummy);
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (real_s_name)
 | 
	
		
			
				|  |  |      add_chunk_header ();
 | 
	
		
			
				|  |  |    wrt = bytes_written;
 |