summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/extract.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/src/extract.c b/src/extract.c
index ecbde1a8..d24f98f6 100644
--- a/src/extract.c
+++ b/src/extract.c
@@ -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. */