]> Dogcows Code - chaz/tar/blobdiff - src/extract.c
tar: don't assume O_NONBLOCK is benign on regular files
[chaz/tar] / src / extract.c
index d24f98f605e12137c893099b21b724c44c63f661..55f3eb860e2a616f982529f667adb044b7caf16c 100644 (file)
@@ -642,9 +642,14 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
 
       switch (old_files_option)
        {
-       case KEEP_OLD_FILES:
+       case SKIP_OLD_FILES:
+         WARNOPT (WARN_EXISTING_FILE,
+                  (0, 0, _("%s: skipping existing file"), file_name));
          return RECOVER_SKIP;
 
+       case KEEP_OLD_FILES:
+         return RECOVER_NO;
+
        case KEEP_NEWER_FILES:
          if (file_newer_p (file_name, stp, &current_stat_info))
            break;
@@ -993,7 +998,7 @@ extract_file (char *file_name, int typeflag)
        if (written > size)
          written = size;
        errno = 0;
-       count = full_write (fd, data_block->buffer, written);
+       count = blocking_write (fd, data_block->buffer, written);
        size -= written;
 
        set_next_block_after ((union block *)
This page took 0.020192 seconds and 4 git commands to generate.