]> Dogcows Code - chaz/tar/commitdiff
tar: simplify birthtime calculations
authorPaul Eggert <eggert@cs.ucla.edu>
Tue, 7 Jun 2011 23:07:08 +0000 (16:07 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Tue, 7 Jun 2011 23:07:29 +0000 (16:07 -0700)
* src/extract.c (same_birthtime): Remove.
(extract_link, apply_delayed_links): Go back to using timestamp_cmp
instead of same_birthtime, as this is a bit simpler.  This fix relies
on an up-to-date gnulib.

src/extract.c

index ecbde1a8c939a637d35e7addba297f7fbaac8951..d24f98f605e12137c893099b21b724c44c63f661 100644 (file)
@@ -271,15 +271,6 @@ set_mode (char const *file_name,
     }
 }
 
-/* Return true if A and B are the same birthtimes.
-   Unavailable birthtimes, which have negative tv_nsec members,
-   all compare equal to each other.  */
-static bool
-same_birthtime (struct timespec a, struct timespec b)
-{
-  return (a.tv_nsec == b.tv_nsec && (a.tv_nsec < 0 || a.tv_sec == b.tv_sec));
-}
-
 /* Check time after successfully setting FILE_NAME's time stamp to T.  */
 static void
 check_time (char const *file_name, struct timespec t)
@@ -1146,7 +1137,8 @@ extract_link (char *file_name, int typeflag)
              if (ds->change_dir == chdir_current
                  && ds->dev == st1.st_dev
                  && ds->ino == st1.st_ino
-                 && same_birthtime (ds->birthtime, get_stat_birthtime (&st1)))
+                 && (timespec_cmp (ds->birthtime, get_stat_birthtime (&st1))
+                     == 0))
                {
                  struct string_list *p =  xmalloc (offsetof (struct string_list, string)
                                                    + strlen (file_name) + 1);
@@ -1512,7 +1504,7 @@ apply_delayed_links (void)
          if (fstatat (chdir_fd, source, &st, AT_SYMLINK_NOFOLLOW) == 0
              && st.st_dev == ds->dev
              && st.st_ino == ds->ino
-             && same_birthtime (get_stat_birthtime (&st), ds->birthtime))
+             && timespec_cmp (get_stat_birthtime (&st), ds->birthtime) == 0)
            {
              /* Unlink the placeholder, then create a hard link if possible,
                 a symbolic link otherwise.  */
This page took 0.024411 seconds and 4 git commands to generate.