X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fcompare.c;h=70d72513aaef6ea80e0e35ae99ba2002758f4e5c;hb=9684c2728d35d24b5c6cc431daf87c613170e95a;hp=98a953bf403aa524ead280729c106f1379fd1e35;hpb=d659cbaccdc1f3279c49107cf15f15a639738529;p=chaz%2Ftar diff --git a/src/compare.c b/src/compare.c index 98a953b..70d7251 100644 --- a/src/compare.c +++ b/src/compare.c @@ -224,7 +224,7 @@ diff_file (void) if (!sys_compare_gid (&stat_data, ¤t_stat_info.stat)) report_difference (¤t_stat_info, _("Gid differs")); - if (stat_data.st_mtime != current_stat_info.stat.st_mtime) + if (timespec_cmp (get_stat_mtime (&stat_data), current_stat_info.mtime)) report_difference (¤t_stat_info, _("Mod time differs")); if (current_header->header.typeflag != GNUTYPE_SPARSE && stat_data.st_size != current_stat_info.stat.st_size) @@ -356,8 +356,21 @@ diff_special (void) static void diff_dumpdir (void) { - char *dumpdir_buffer = get_directory_contents (current_stat_info.file_name, - 0); + char *dumpdir_buffer; + dev_t dev = 0; + struct stat stat; + + if (deref_stat (true, current_stat_info.file_name, &stat)) + { + if (errno == ENOENT) + stat_warn (current_stat_info.file_name); + else + stat_error (current_stat_info.file_name); + } + else + dev = stat.st_dev; + + dumpdir_buffer = get_directory_contents (current_stat_info.file_name, dev); if (multi_volume_option) {