From: Andreas Färber Date: Sun, 17 Aug 2008 08:59:35 GMT Subject: [PATCH 4/6] Don't use struct stat's st_blocks member on Haiku Message-ID: <273481A4-0BB2-4A58-83AD-604B425DE824@web.de> Signed-off-by: Andreas Faerber Signed-off-by: Ingo Weinhold --- BeOS didn't have that field, so neither has Haiku currently. It is part of the optional XSI POSIX feature. Makefile | 4 ++++ builtin-count-objects.c | 4 ++++ configure.ac | 8 ++++++++ 3 files changed, 16 insertions(+), 0 deletions(-) diff --git a/Makefile b/Makefile index 5dba2c7..a4d73fc 100644 --- a/Makefile +++ b/Makefile @@ -730,6 +730,7 @@ ifeq ($(uname_S),HP-UX) endif ifeq ($(uname_S),Haiku) NO_IPV6 = YesPlease + NO_ST_BLOCKS_IN_STAT = YesPlease EXTLIBS += -lnetwork endif ifneq (,$(findstring MINGW,$(uname_S))) @@ -867,6 +868,9 @@ endif ifdef NO_D_INO_IN_DIRENT BASIC_CFLAGS += -DNO_D_INO_IN_DIRENT endif +ifdef NO_ST_BLOCKS_IN_STAT + BASIC_CFLAGS += -DNO_ST_BLOCKS_IN_STAT +endif ifdef NO_C99_FORMAT BASIC_CFLAGS += -DNO_C99_FORMAT endif diff --git a/builtin-count-objects.c b/builtin-count-objects.c index 91b5487..609c687 100644 --- a/builtin-count-objects.c +++ b/builtin-count-objects.c @@ -43,7 +43,11 @@ static void count_objects(DIR *d, char *path, int len, int verbose, if (lstat(path, &st) || !S_ISREG(st.st_mode)) bad = 1; else +#ifdef NO_ST_BLOCKS_IN_STAT + (*loose_size) += (st.st_size + 511) / 512; +#else (*loose_size) += xsize_t(st.st_blocks); +#endif } if (bad) { if (verbose) { diff --git a/configure.ac b/configure.ac index 75ec83a..09d18ce 100644 --- a/configure.ac +++ b/configure.ac @@ -281,6 +281,14 @@ AC_CHECK_MEMBER(struct dirent.d_type, [#include ]) AC_SUBST(NO_D_TYPE_IN_DIRENT) # +# Define NO_ST_BLOCKS_IN_STAT if your platform does not have st_blocks in +# struct stat (BeOS, Haiku). +AC_CHECK_MEMBER(struct stat.st_blocks, +[NO_ST_BLOCKS_IN_STAT=], +[NO_ST_BLOCKS_IN_STAT=YesPlease], +[#include ]) +AC_SUBST(NO_ST_BLOCKS_IN_STAT) +# # Define NO_SOCKADDR_STORAGE if your platform does not have struct # sockaddr_storage. AC_CHECK_TYPE(struct sockaddr_storage, -- 1.6.0.rc3.32.g8aaa