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

[PATCH] compat/fopen.c: avoid clobbering the system defined fopen macro

From
Brandon Casey <casey@nrlssc.navy.mil>
Date
May 7, 2008, 17:34 UTC
Message-ID
<4821E81A.4030600@nrlssc.navy.mil>
In-Reply-To
<7vfxsudrt0.fsf@gitster.siamese.dyndns.org>

Some systems define fopen as a macro based on compiler settings. The previous technique for reverting to the system fopen function by merely undefining fopen is inadequate in this case. Instead, avoid defining fopen entirely when compiling this source file.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
---
 compat/fopen.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/compat/fopen.c b/compat/fopen.c
index ccb9e89..b5ca142 100644
--- a/compat/fopen.c
+++ b/compat/fopen.c
@@ -1,5 +1,16 @@
+/*
+ *  The order of the following two lines is important.
+ *
+ *  FREAD_READS_DIRECTORIES is undefined before including git-compat-util.h
+ *  to avoid the redefinition of fopen within git-compat-util.h. This is
+ *  necessary since fopen is a macro on some platforms which may be set
+ *  based on compiler options. For example, on AIX fopen is set to fopen64
+ *  when _LARGE_FILES is defined. The previous technique of merely undefining
+ *  fopen after including git-compat-util.h is inadequate in this case.
+ */
+#undef FREAD_READS_DIRECTORIES
 #include "../git-compat-util.h"
-#undef fopen
+
 FILE *git_fopen(const char *path, const char *mode)
 {
 	FILE *fp;
-- 
1.5.5
Previous: Brandon CaseyNext: Mike Ralphson
Message 14 of 20 in “Makefile: update the default build options for AIX”
  1. Makefile: update the default build options for AIXMike Ralphson, May 7, 2008
  2. Johannes SixtMay 7, 2008
  3. Mike RalphsonMay 7, 2008
  4. Mike RalphsonMay 7, 2008
  5. Johannes SixtMay 7, 2008
  6. Mike RalphsonMay 7, 2008
  7. Brandon CaseyMay 7, 2008
  8. Mike RalphsonMay 7, 2008
  9. Johannes SixtMay 7, 2008
  10. Brandon CaseyMay 7, 2008
  11. Junio C HamanoMay 7, 2008
  12. Mike RalphsonMay 7, 2008
  13. Brandon CaseyMay 7, 2008
  14. compat/fopen.c: avoid clobbering the system defined fopen macroBrandon Casey, May 7, 2008
  15. Mike RalphsonMay 8, 2008
  16. Johannes SixtMay 8, 2008
  17. Mike RalphsonMay 8, 2008
  18. H.Merijn BrandMay 8, 2008
  19. Mike RalphsonMay 16, 2008
  20. Johannes SixtMay 16, 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.