]> wimlib.net Git - wimlib/blobdiff - tests/tree-cmp.c
tests: test capturing+applying file with negative UNIX timestamp
[wimlib] / tests / tree-cmp.c
index b21309541924f6161218f49cedde2641f0e3189a..4b70a8308277c5aa15a3055064a79293e5656fec 100644 (file)
@@ -4,7 +4,7 @@
  * There are two modes:
  *     - Normal mode for any filesystems.  We compare file names, contents,
  *     sizes, modes, access times, and hard links.
  * There are two modes:
  *     - Normal mode for any filesystems.  We compare file names, contents,
  *     sizes, modes, access times, and hard links.
- *     - NTFS mode for NTFS-3g mounted volumes.  In this mode we need to
+ *     - NTFS mode for NTFS-3G mounted volumes.  In this mode we need to
  *       compare various NTFS-specific attributes such as named data streams
  *       and DOS names.
  *
  *       compare various NTFS-specific attributes such as named data streams
  *       and DOS names.
  *
 #include <unistd.h>
 #include <stdbool.h>
 #include <sys/stat.h>
 #include <unistd.h>
 #include <stdbool.h>
 #include <sys/stat.h>
-#ifdef HAVE_ATTR_XATTR_H
-#include <attr/xattr.h>
+#include <sys/types.h>
+#ifdef HAVE_SYS_XATTR_H
+#  include <sys/xattr.h>
 #endif
 #include <assert.h>
 
 #endif
 #include <assert.h>
 
+#ifndef ENOATTR
+#  define ENOATTR ENODATA
+#endif
+
 typedef uint64_t u64;
 
 #if 0
 typedef uint64_t u64;
 
 #if 0
@@ -165,7 +170,7 @@ static void cmp(const char *file1, const char *file2, size_t size)
        close(fd2);
 }
 
        close(fd2);
 }
 
-#ifdef HAVE_ATTR_XATTR_H
+#ifdef HAVE_SYS_XATTR_H
 /* Compares an extended attribute of the files. */
 static void cmp_xattr(const char *file1, const char *file2,
                      const char *xattr_name, ssize_t max_size,
 /* Compares an extended attribute of the files. */
 static void cmp_xattr(const char *file1, const char *file2,
                      const char *xattr_name, ssize_t max_size,
@@ -270,13 +275,13 @@ static void cmp_ads(const char *file1, const char *file2)
                free(list2);
        }
 }
                free(list2);
        }
 }
-#endif
+#endif /* HAVE_SYS_XATTR_H */
 
 /* Compares special NTFS data of the files, as accessed through extended
  * attributes. */
 static void special_cmp(const char *file1, const char *file2)
 {
 
 /* Compares special NTFS data of the files, as accessed through extended
  * attributes. */
 static void special_cmp(const char *file1, const char *file2)
 {
-#ifdef HAVE_ATTR_XATTR_H
+#ifdef HAVE_SYS_XATTR_H
        cmp_xattr(file1, file2, "system.ntfs_acl", 0, false);
        cmp_xattr(file1, file2, "system.ntfs_attrib", 0, false);
        cmp_xattr(file1, file2, "system.ntfs_dos_name", 0, true);
        cmp_xattr(file1, file2, "system.ntfs_acl", 0, false);
        cmp_xattr(file1, file2, "system.ntfs_attrib", 0, false);
        cmp_xattr(file1, file2, "system.ntfs_dos_name", 0, true);
@@ -287,7 +292,7 @@ static void special_cmp(const char *file1, const char *file2)
 #else
        fprintf(stderr, "tree-cmp: Warning: cannot compare xattrs of `%s' and `%s'\n",
                        file1, file2);
 #else
        fprintf(stderr, "tree-cmp: Warning: cannot compare xattrs of `%s' and `%s'\n",
                        file1, file2);
-       fprintf(stderr, "          You need to install the attr development files for this.\n");
+       fprintf(stderr, "          Extended attributes are not supported on this platform.\n");
 #endif
 }
 
 #endif
 }
 
@@ -318,16 +323,14 @@ static void tree_cmp(char file1[], int file1_len, char file2[], int file2_len)
                           file1, file2);
 #if 0
        if (ntfs_mode && st1.st_atime != st2.st_atime)
                           file1, file2);
 #if 0
        if (ntfs_mode && st1.st_atime != st2.st_atime)
-               difference("Access times of `%s' and `%s' are not the same",
-                          file1, file2);
+               difference("Access times of `%s' (%x) and `%s' (%x) are "
+                          "not the same",
+                          file1, st1.st_atime, file2, st2.st_atime);
+#endif
        if (st1.st_mtime != st2.st_mtime)
                difference("Modification times of `%s' (%x) and `%s' (%x) are "
                           "not the same",
                           file1, st1.st_mtime, file2, st2.st_mtime);
        if (st1.st_mtime != st2.st_mtime)
                difference("Modification times of `%s' (%x) and `%s' (%x) are "
                           "not the same",
                           file1, st1.st_mtime, file2, st2.st_mtime);
-       if (st1.st_ctime != st2.st_ctime)
-               difference("Status change times of `%s' and `%s' are not the same",
-                          file1, file2);
-#endif
        if ((ntfs_mode || S_ISREG(st1.st_mode)) && st1.st_nlink != st2.st_nlink)
                difference("Link count of `%s' (%u) and `%s' (%u) "
                           "are not the same",
        if ((ntfs_mode || S_ISREG(st1.st_mode)) && st1.st_nlink != st2.st_nlink)
                difference("Link count of `%s' (%u) and `%s' (%u) "
                           "are not the same",