diff options
-rw-r--r-- | source3/include/includes.h | 13 | ||||
-rw-r--r-- | source3/lib/system.c | 14 |
2 files changed, 27 insertions, 0 deletions
diff --git a/source3/include/includes.h b/source3/include/includes.h index a18c8b6d5c..da16ae1632 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -951,5 +951,18 @@ extern int DEBUGLEVEL; #define MAX_SEC_CTX_DEPTH 8 /* Maximum number of security contexts */ + +#ifdef GLIBC_HACK_FCNTL64 +/* this is a gross hack. 64 bit locking is completely screwed up on + i386 Linux in glibc 2.1.95 (which ships with RedHat 7.0). This hack + "fixes" the problem with the current 2.4.0test kernels +*/ +#define fcntl fcntl64 +#undef F_SETLKW +#undef F_SETLK +#define F_SETLK 13 +#define F_SETLKW 14 +#endif + #endif /* _INCLUDES_H */ diff --git a/source3/lib/system.c b/source3/lib/system.c index 479bce1965..e846e4755e 100644 --- a/source3/lib/system.c +++ b/source3/lib/system.c @@ -1013,3 +1013,17 @@ int sys_pclose(int fd) return -1; return wstatus; } + + + +#if GLIBC_HACK_FCNTL64 +#include <asm/unistd.h> +/* this is a gross hack. 64 bit locking is completely screwed up on + i386 Linux in glibc 2.1.95 (which ships with RedHat 7.0). This hack + "fixes" the problem with the current 2.4.0test kernels +*/ +int fcntl64(int fd, int cmd, struct flock * lock) +{ + return syscall(__NR_fcntl64, fd, cmd, lock); +} +#endif /* HACK_FCNTL64 */ |