git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 4/6] Don't use struct stat's st_blocks member on Haiku

From
Andreas Färber <andreas.faerber@web.de>
Date
Aug 17, 2008, 08:59 UTC
Message-ID
<273481A4-0BB2-4A58-83AD-604B425DE824@web.de>
Signed-off-by: Andreas Faerber <andreas.faerber@web.de>
Signed-off-by: Ingo Weinhold <ingo_weinhold@gmx.de>
---
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 <dirent.h>])
  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 <sys/stat.h>])
+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
Next: Jakub Narebski
Message 1 of 10 in “Don't use struct stat's st_blocks member on Haiku”
  1. 4/6 Don't use struct stat's st_blocks member on HaikuAndreas Färber, Aug 17, 2008
  2. Jakub NarebskiAug 17, 2008
  3. compat: introduce stat_to_kilobytesJunio C Hamano, Aug 17, 2008
  4. Andreas FärberAug 17, 2008
  5. 1/2 compat: introduce stat_to_kilobytesJohannes Sixt, Aug 18, 2008
  6. 2/2 Revert "Windows: Use a customized struct stat that also has the st_blocks member."Johannes Sixt, Aug 18, 2008
  7. Junio C HamanoAug 18, 2008
  8. Junio C HamanoAug 18, 2008
  9. Junio C HamanoAug 19, 2008
  10. Andreas FärberAug 19, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.