Skip to content

Commit

Permalink
Merge branch 'bc/fopen'
Browse files Browse the repository at this point in the history
* bc/fopen:
  Add compat/fopen.c which returns NULL on attempt to open directory
  • Loading branch information
Junio C Hamano committed Feb 21, 2008
2 parents 9e7bd01 + cba2252 commit c0284ce
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
7 changes: 7 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ all::

# Define V=1 to have a more verbose compile.
#
# Define FREAD_READS_DIRECTORIES if your are on a system which succeeds
# when attempting to read from an fopen'ed directory.
#
# Define NO_OPENSSL environment variable if you do not have OpenSSL.
# This also implies MOZILLA_SHA1.
#
Expand Down Expand Up @@ -622,6 +625,10 @@ endif
ifdef NO_C99_FORMAT
BASIC_CFLAGS += -DNO_C99_FORMAT
endif
ifdef FREAD_READS_DIRECTORIES
COMPAT_CFLAGS += -DFREAD_READS_DIRECTORIES
COMPAT_OBJS += compat/fopen.o
endif
ifdef NO_SYMLINK_HEAD
BASIC_CFLAGS += -DNO_SYMLINK_HEAD
endif
Expand Down
26 changes: 26 additions & 0 deletions compat/fopen.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include "../git-compat-util.h"
#undef fopen
FILE *git_fopen(const char *path, const char *mode)
{
FILE *fp;
struct stat st;

if (mode[0] == 'w' || mode[0] == 'a')
return fopen(path, mode);

if (!(fp = fopen(path, mode)))
return NULL;

if (fstat(fileno(fp), &st)) {
fclose(fp);
return NULL;
}

if (S_ISDIR(st.st_mode)) {
fclose(fp);
errno = EISDIR;
return NULL;
}

return fp;
}
5 changes: 5 additions & 0 deletions git-compat-util.h
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,11 @@ void *gitmemmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen);
#endif

#ifdef FREAD_READS_DIRECTORIES
#define fopen(a,b) git_fopen(a,b)
extern FILE *git_fopen(const char*, const char*);
#endif

#ifdef __GLIBC_PREREQ
#if __GLIBC_PREREQ(2, 1)
#define HAVE_STRCHRNUL
Expand Down

0 comments on commit c0284ce

Please sign in to comment.