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

[PATCH] Don't define _XOPEN_SOURCE on MacOSX and FreeBSD as it is too restricting

From
MRMarco Roeland <marco.roeland@xs4all.nl>
Date
Dec 21, 2006, 11:28 UTC
Message-ID
<20061221112835.GA7713@fiberbit.xs4all.nl>
In-Reply-To
<20061221103938.GA7055@fiberbit.xs4all.nl>

Defining _XOPEN_SOURCE on Darwin always leads to a restricted set of available functions and symbols. This can not be cured by adding extra defines in any way. So there really is only the choice between _not_ defining this symbol on Mac OS X or restricting our usage of functions and symbols to the POSIX sets that are in term implied by _XOPEN_SOURCE. The first seems better.

Note the last three lines from this following literal code snippet in /usr/include/sys/cdefs.h from the Apple Darwin sources:

 * By default newly complied code will actually get the same symbols
 * that the old code did.  Defining any of _APPLE_C_SOURCE, _XOPEN_SOURCE,
 * or _POSIX_C_SOURCE will give you the new symbols.  Defining _XOPEN_SOURCE
 * or _POSIX_C_SOURCE also restricts the avilable symbols to a subset of
 * Apple's APIs.
We want our symbols "avilable" so lets not use _XOPEN_SOURCE on Darwin!

The preferred way of checking specific Apple specific issues is by using the __APPLE__ predefined macro.

The extra define _XOPEN_SOURCE_EXTENDED does only affect some headers (like the /usr/include/curses.h header) and can stay.

FreeBSD 6 requires the __BSD_VISIBLE flag for fchmod(), IPPROTO_IPV6 and more which is only properly set by <sys/cdefs.h> if _POSIX_C_SOURCE isn't present. However, _POSIX_C_SOURCE is defined if _XOPEN_SOURCE is defined and >=500.

As a solution, simply don't define _XOPEN_SOURCE for FreeBSD and continue with its defaults.

Author: Terje Sten Bjerkseth <terje@bjerkseth.org>
Signed-off-by: Rocco Rutte <pdmef@gmx.net>
Signed-off-by: Marco Roeland <marco.roeland@xs4all.nl>
---
 git-compat-util.h |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/git-compat-util.h b/git-compat-util.h
index bc296b3..6f46f36 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -11,7 +11,14 @@
 
 #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
 
+#if !defined(__APPLE__) && !defined(__FreeBSD)
 #define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 for S_ISLNK() */
+#else
+			/*
+			 * On Darwin and FreeBSD defining _XOPEN_SOURCE always restricts available
+			 * functions and symbols.
+			 */
+#endif
 #define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
 #define _GNU_SOURCE
 #define _BSD_SOURCE
-- 
1.4.4.2.g81597-dirty
Previous: Marco RoelandNext: Junio C Hamano
Message 25 of 48 in “What's in git.git (stable), and Announcing GIT 1.4.4.3”
  1. Junio C HamanoDec 20, 2006
  2. Randal L. SchwartzDec 20, 2006
  3. Linus TorvaldsDec 20, 2006
  4. [BUG] daemon.c blows up on OSX (was Re: What's in git.git (stable), and Announcing GIT 1.4.4.3)Randal L. Schwartz, Dec 20, 2006
  5. Junio C HamanoDec 20, 2006
  6. Randal L. SchwartzDec 20, 2006
  7. Junio C HamanoDec 20, 2006
  8. Randal L. SchwartzDec 20, 2006
  9. Junio C HamanoDec 20, 2006
  10. Randal L. SchwartzDec 20, 2006
  11. Randal L. SchwartzDec 20, 2006
  12. Stefan PfetzingDec 21, 2006
  13. Linus TorvaldsDec 20, 2006
  14. Randal L. SchwartzDec 20, 2006
  15. Junio C HamanoDec 20, 2006
  16. Linus TorvaldsDec 20, 2006
  17. Terje Sten BjerksethDec 21, 2006
  18. Junio C HamanoDec 21, 2006
  19. Terje Sten BjerksethDec 21, 2006
  20. Junio C HamanoDec 21, 2006
  21. Randal L. SchwartzDec 21, 2006
  22. Junio C HamanoDec 21, 2006
  23. Terje Sten BjerksethDec 21, 2006
  24. Do not define _XOPEN_SOURCE on MacOSX as it is too restricting thereMarco Roeland, Dec 21, 2006
  25. Don't define _XOPEN_SOURCE on MacOSX and FreeBSD as it is too restrictingMarco Roeland, Dec 21, 2006
  26. Junio C HamanoDec 22, 2006
  27. Shawn PearceDec 22, 2006
  28. Rocco RutteDec 22, 2006
  29. Marco RoelandDec 22, 2006
  30. Junio C HamanoDec 22, 2006
  31. Marco RoelandDec 22, 2006
  32. Rocco RutteDec 22, 2006
  33. Marco RoelandDec 22, 2006
  34. Andreas EricssonJan 3, 2007
  35. Linus TorvaldsDec 21, 2006
  36. Randal L. SchwartzDec 21, 2006
  37. Junio C HamanoDec 21, 2006
  38. Randal L. SchwartzDec 21, 2006
  39. Randal L. SchwartzDec 20, 2006
  40. Junio C HamanoDec 20, 2006
  41. Johannes SchindelinDec 21, 2006
  42. Junio C HamanoDec 21, 2006
  43. Nicolas PitreDec 20, 2006
  44. Johannes SchindelinDec 21, 2006
  45. Randal L. SchwartzDec 21, 2006
  46. Junio C HamanoDec 21, 2006
  47. Randal L. SchwartzDec 21, 2006
  48. Junio C HamanoDec 21, 2006

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.