]> Dogcows Code - chaz/tar/blobdiff - src/extract.c
tar: change interdir_made from int to bool
[chaz/tar] / src / extract.c
index 531654aabbd9184e93c18b8048ddb821c39f1804..0ad5545426d611ae6cd88058cb171395fb4ead81 100644 (file)
@@ -23,7 +23,6 @@
 #include <quotearg.h>
 #include <utimens.h>
 #include <errno.h>
-#include <xgetcwd.h>
 #include <priv-set.h>
 
 #include "common.h"
@@ -146,7 +145,7 @@ set_mode (char const *file_name,
 {
   mode_t mode;
   bool failed;
-  
+
   if (0 < same_permissions_option
       && permstatus != INTERDIR_PERMSTATUS)
     {
@@ -516,7 +515,7 @@ file_newer_p (const char *file_name, struct tar_stat_info *tar_stat)
    properly restored on returning RECOVER_NO.  */
 
 static int
-maybe_recoverable (char *file_name, int *interdir_made)
+maybe_recoverable (char *file_name, bool *interdir_made)
 {
   int e = errno;
 
@@ -561,7 +560,7 @@ maybe_recoverable (char *file_name, int *interdir_made)
          errno = ENOENT;
          return RECOVER_NO;
        }
-      *interdir_made = 1;
+      *interdir_made = true;
       return RECOVER_OK;
 
     default:
@@ -642,19 +641,17 @@ extract_dir (char *file_name, int typeflag)
 {
   int status;
   mode_t mode;
-  int interdir_made = 0;
+  bool interdir_made = false;
 
   /* Save 'root device' to avoid purging mount points. */
   if (one_file_system_option && root_device == 0)
     {
       struct stat st;
-      char *dir = xgetcwd ();
 
-      if (deref_stat (true, dir, &st))
-       stat_diag (dir);
+      if (stat (".", &st) != 0)
+       stat_diag (".");
       else
        root_device = st.st_dev;
-      free (dir);
     }
 
   if (incremental_option)
@@ -775,7 +772,7 @@ extract_file (char *file_name, int typeflag)
   int status;
   size_t count;
   size_t written;
-  int interdir_made = 0;
+  bool interdir_made = false;
   mode_t mode = current_stat_info.stat.st_mode & MODE_RWX & ~ current_umask;
   mode_t invert_permissions =
     0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
@@ -812,7 +809,7 @@ extract_file (char *file_name, int typeflag)
        }
     }
 
-  mv_begin (&current_stat_info);
+  mv_begin_read (&current_stat_info);
   if (current_stat_info.is_sparse)
     sparse_extract_file (fd, &current_stat_info, &size);
   else
@@ -882,7 +879,7 @@ extract_file (char *file_name, int typeflag)
    process.  */
 
 static int
-create_placeholder_file (char *file_name, bool is_symlink, int *interdir_made)
+create_placeholder_file (char *file_name, bool is_symlink, bool *interdir_made)
 {
   int fd;
   struct stat st;
@@ -893,10 +890,10 @@ create_placeholder_file (char *file_name, bool is_symlink, int *interdir_made)
        {
        case RECOVER_OK:
          continue;
-         
+
        case RECOVER_SKIP:
          return 0;
-         
+
        case RECOVER_NO:
          open_error (file_name);
          return -1;
@@ -964,12 +961,12 @@ create_placeholder_file (char *file_name, bool is_symlink, int *interdir_made)
 static int
 extract_link (char *file_name, int typeflag)
 {
-  int interdir_made = 0;
+  bool interdir_made = false;
   char const *link_name;
   int rc;
-  
+
   link_name = current_stat_info.link_name;
-  
+
   if (! absolute_names_option && contains_dot_dot (link_name))
     return create_placeholder_file (file_name, false, &interdir_made);
 
@@ -1023,7 +1020,7 @@ static int
 extract_symlink (char *file_name, int typeflag)
 {
 #ifdef HAVE_SYMLINK
-  int interdir_made = 0;
+  bool interdir_made = false;
 
   if (! absolute_names_option
       && (IS_ABSOLUTE_FILE_NAME (current_stat_info.link_name)
@@ -1035,15 +1032,15 @@ extract_symlink (char *file_name, int typeflag)
       {
       case RECOVER_OK:
        continue;
-       
+
       case RECOVER_SKIP:
        return 0;
-       
+
       case RECOVER_NO:
        symlink_error (current_stat_info.link_name, file_name);
        return -1;
       }
-  
+
   set_stat (file_name, &current_stat_info, NULL, 0, 0, SYMTYPE);
   return 0;
 
@@ -1065,8 +1062,7 @@ extract_symlink (char *file_name, int typeflag)
 static int
 extract_node (char *file_name, int typeflag)
 {
-  int status;
-  int interdir_made = 0;
+  bool interdir_made = false;
   mode_t mode = current_stat_info.stat.st_mode & ~ current_umask;
   mode_t invert_permissions =
     0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
@@ -1077,10 +1073,10 @@ extract_node (char *file_name, int typeflag)
       {
       case RECOVER_OK:
        continue;
-       
+
       case RECOVER_SKIP:
        return 0;
-       
+
       case RECOVER_NO:
        mknod_error (file_name);
        return -1;
@@ -1088,7 +1084,7 @@ extract_node (char *file_name, int typeflag)
 
   set_stat (file_name, &current_stat_info, NULL, invert_permissions,
            ARCHIVED_PERMSTATUS, typeflag);
-  return status;
+  return 0;
 }
 #endif
 
@@ -1097,7 +1093,7 @@ static int
 extract_fifo (char *file_name, int typeflag)
 {
   int status;
-  int interdir_made = 0;
+  bool interdir_made = false;
   mode_t mode = current_stat_info.stat.st_mode & ~ current_umask;
   mode_t invert_permissions =
     0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
@@ -1107,10 +1103,10 @@ extract_fifo (char *file_name, int typeflag)
       {
       case RECOVER_OK:
        continue;
-       
+
       case RECOVER_SKIP:
        return 0;
-       
+
       case RECOVER_NO:
        mkfifo_error (file_name);
        return -1;
@@ -1274,12 +1270,12 @@ extract_archive (void)
   tar_extractor_t fun;
 
   fatal_exit_hook = extract_finish;
-  
+
   /* Try to disable the ability to unlink a directory.  */
   priv_set_remove_linkdir ();
 
   set_next_block_after (current_header);
-  decode_header (current_header, &current_stat_info, &current_format, 1);
+
   if (!current_stat_info.file_name[0]
       || (interactive_option
          && !confirm ("extract", current_stat_info.file_name)))
This page took 0.02649 seconds and 4 git commands to generate.