summaryrefslogtreecommitdiff
path: root/src/basic
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-05-10 01:47:13 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-05-10 15:05:18 +0900
commiteb29296937b268e0140a2ab1cf204c2ebb72fa5a (patch)
tree766341c3788cf78e941aac86de7d698a65fda6fc /src/basic
parent8707dcdf3b5b4b01530639389350505fcb700969 (diff)
downloadsystemd-eb29296937b268e0140a2ab1cf204c2ebb72fa5a.tar.gz
dirent: conditionalize dirent assert based on dirent64 existence
>=musl-1.2.4 doesn't define dirent64 and its LFS friends as its "native" functions are already LFS-aware. Check for dirent64 in meson.build and only assert if it exists. Bug: https://bugs.gentoo.org/905900 Closes: https://github.com/systemd/systemd/pull/25809
Diffstat (limited to 'src/basic')
-rw-r--r--src/basic/dirent-util.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/basic/dirent-util.h b/src/basic/dirent-util.h
index 0f1fb23119..508d34a44f 100644
--- a/src/basic/dirent-util.h
+++ b/src/basic/dirent-util.h
@@ -36,6 +36,7 @@ struct dirent *readdir_no_dot(DIR *dirp);
/* Only if 64bit off_t is enabled struct dirent + struct dirent64 are actually the same. We require this, and
* we want them to be interchangeable to make getdents64() work, hence verify that. */
assert_cc(_FILE_OFFSET_BITS == 64);
+#if HAVE_STRUCT_DIRENT64
assert_cc(sizeof(struct dirent) == sizeof(struct dirent64));
assert_cc(offsetof(struct dirent, d_ino) == offsetof(struct dirent64, d_ino));
assert_cc(sizeof_field(struct dirent, d_ino) == sizeof_field(struct dirent64, d_ino));
@@ -47,6 +48,7 @@ assert_cc(offsetof(struct dirent, d_type) == offsetof(struct dirent64, d_type));
assert_cc(sizeof_field(struct dirent, d_type) == sizeof_field(struct dirent64, d_type));
assert_cc(offsetof(struct dirent, d_name) == offsetof(struct dirent64, d_name));
assert_cc(sizeof_field(struct dirent, d_name) == sizeof_field(struct dirent64, d_name));
+#endif
#define FOREACH_DIRENT_IN_BUFFER(de, buf, sz) \
for (void *_end = (uint8_t*) ({ (de) = (buf); }) + (sz); \