]> granicus.if.org Git - strace/commitdiff
tests: rewrite diagnostics about struct stat mismatch
authorDmitry V. Levin <ldv@altlinux.org>
Thu, 12 Jan 2017 23:01:32 +0000 (23:01 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 12 Jan 2017 23:03:20 +0000 (23:03 +0000)
* tests/xstatx.c (LOG_STAT_OFFSETOF_SIZEOF): New macro.
(main): Use it to print struct stat mismatch details.

tests/xstatx.c

index 28152bb061b9d5fe1272edc212d67f3ce2f189ca..2e0c51d425fb1e1e4aec8aa83f28a0310d0f33e8 100644 (file)
@@ -300,48 +300,27 @@ main(void)
                                " definition of %s.\n"
                                "Here is some diagnostics that might help:\n",
                        STRUCT_STAT_STR);
-               fprintf(stderr, "offsetof(%s, st_dev) = %zu"
-                               ", sizeof(st_dev) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_dev),
-                       sizeof(st[0].st_dev));
-               fprintf(stderr, "offsetof(%s, st_ino) = %zu"
-                               ", sizeof(st_ino) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_ino),
-                       sizeof(st[0].st_ino));
-               fprintf(stderr, "offsetof(%s, st_mode) = %zu"
-                               ", sizeof(st_mode) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_mode),
-                       sizeof(st[0].st_mode));
-               fprintf(stderr, "offsetof(%s, st_nlink) = %zu"
-                               ", sizeof(st_nlink) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_nlink),
-                       sizeof(st[0].st_nlink));
-               fprintf(stderr, "offsetof(%s, st_uid) = %zu"
-                               ", sizeof(st_uid) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_uid),
-                       sizeof(st[0].st_uid));
-               fprintf(stderr, "offsetof(%s, st_gid) = %zu"
-                               ", sizeof(st_gid) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_gid),
-                       sizeof(st[0].st_gid));
-               fprintf(stderr, "offsetof(%s, st_rdev) = %zu"
-                               ", sizeof(st_rdev) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_rdev),
-                       sizeof(st[0].st_rdev));
-               fprintf(stderr, "offsetof(%s, st_size) = %zu"
-                               ", sizeof(st_size) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_size),
-                       sizeof(st[0].st_size));
+
+#define LOG_STAT_OFFSETOF_SIZEOF(object, member)                       \
+               fprintf(stderr, "offsetof(%s, %s) = %zu"                \
+                               ", sizeof(%s) = %zu\n",                 \
+                               STRUCT_STAT_STR, #member,               \
+                               offsetof(STRUCT_STAT, member),          \
+                               #member, sizeof((object).member))
+
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_dev);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_ino);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_mode);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_nlink);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_uid);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_gid);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_rdev);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_size);
 # if !OLD_STAT
-               fprintf(stderr, "offsetof(%s, st_blksize) = %zu"
-                               ", sizeof(st_blksize) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_blksize),
-                       sizeof(st[0].st_blksize));
-               fprintf(stderr, "offsetof(%s, st_blocks) = %zu"
-                               ", sizeof(st_blocks) = %zu\n",
-                       STRUCT_STAT_STR, offsetof(STRUCT_STAT, st_blocks),
-                       sizeof(st[0].st_blocks));
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blksize);
+               LOG_STAT_OFFSETOF_SIZEOF(st[0], st_blocks);
 # endif /* !OLD_STAT */
+
                return 77;
        }