]> Dogcows Code - chaz/tar/blobdiff - src/create.c
tar: --owner and --group names and numbers
[chaz/tar] / src / create.c
index e8de6b92463708620ed2abc937f24550d3b5020a..9839e1fdc81a2d0e5a4a08e978c96f3540fa6566 100644 (file)
@@ -920,8 +920,15 @@ start_header (struct tar_stat_info *st)
     }
   else
     {
-      uid_to_uname (st->stat.st_uid, &st->uname);
-      gid_to_gname (st->stat.st_gid, &st->gname);
+      if (owner_name_option)
+       st->uname = xstrdup (owner_name_option);
+      else
+       uid_to_uname (st->stat.st_uid, &st->uname);
+
+      if (group_name_option)
+       st->gname = xstrdup (group_name_option);
+      else
+       gid_to_gname (st->stat.st_gid, &st->gname);
 
       if (archive_format == POSIX_FORMAT
          && (strlen (st->uname) > UNAME_FIELD_SIZE
@@ -1797,6 +1804,7 @@ dump_file0 (struct tar_stat_info *st, char const *name, char const *p)
              set_exit_status (TAREXIT_DIFFERS);
            }
          else if (atime_preserve_option == replace_atime_preserve
+                  && fd && (is_dir || original_size != 0)
                   && set_file_atime (fd, parentfd, name, st->atime) != 0)
            utime_error (p);
        }
This page took 0.021496 seconds and 4 git commands to generate.