From 4f71710c420caa8d9efa93fb30c308976be0eda0 Mon Sep 17 00:00:00 2001 From: Pádraig Brady Date: Fri, 15 Jul 2011 09:51:35 +0100 Subject: build: avoid a fiemap compile failure on some systems * src/fiemap.h (struct fiemap): Adjust the previous change to the fiemap_extents array, which would also require changes to the sizeof calculations in extent_scan_read(). Instead, only declare the fiemap_extents zero length array on linux, which is the only platform that references this member. This avoids a compilation failure on systems that don't support this non standard construct. We don't use the equivalent C99 flexible array construct so as to have maximum portability. * src/extent-scan.c: Cleanup. Remove a redundant #ifndef. --- src/extent-scan.c | 4 +--- src/fiemap.h | 8 ++++++-- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/extent-scan.c b/src/extent-scan.c index 48dd564e5..37445b84d 100644 --- a/src/extent-scan.c +++ b/src/extent-scan.c @@ -24,11 +24,9 @@ #include "system.h" #include "extent-scan.h" +#include "fiemap.h" #include "xstrtol.h" -#ifndef HAVE_FIEMAP -# include "fiemap.h" -#endif /* Work around Linux kernel issues on BTRFS and EXT4 before 2.6.39. FIXME: remove in 2013, or whenever we're pretty confident diff --git a/src/fiemap.h b/src/fiemap.h index e7243b41b..15ddff9a0 100644 --- a/src/fiemap.h +++ b/src/fiemap.h @@ -52,8 +52,12 @@ struct fiemap uint32_t fm_reserved; /* Array of mapped extents(out). - The actual size is given by fm_extent_count. */ - struct fiemap_extent fm_extents[1]; + This is protected by the ifdef because it uses non standard + zero length arrays. Note C99 has the equivalent flexible arrays, + but we don't use those for maximum portability to older systems. */ +# ifdef __linux__ + struct fiemap_extent fm_extents[0]; +# endif }; /* The maximum offset can be mapped for a file. */ -- cgit v1.2.3-70-g09d2