From 3edcc8c407b16d0698117ecc3fd858201c0a80ba Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 29 Sep 2000 04:45:00 +0000 Subject: added a hack to get 64 bit locking working with the broken fcntl() call in glibc 2.1.95. This hack only gets enabled if you define GLIBC_HACK_FCNTL64 (This used to be commit d8b9ec741cc57b5f3dd1b3ef782a7baed402beaa) --- source3/include/includes.h | 13 +++++++++++++ source3/lib/system.c | 14 ++++++++++++++ 2 files changed, 27 insertions(+) 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 +/* 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 */ -- cgit