diff options
author | Andrew Tridgell <tridge@samba.org> | 2000-09-29 04:45:00 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2000-09-29 04:45:00 +0000 |
commit | 3edcc8c407b16d0698117ecc3fd858201c0a80ba (patch) | |
tree | 184eb80463b05f0a20fbf36cce9fdde5960a48c2 | |
parent | e600c12b6b2cd4e0ad0d145b0ad6d0b92113392f (diff) | |
download | samba-3edcc8c407b16d0698117ecc3fd858201c0a80ba.tar.gz samba-3edcc8c407b16d0698117ecc3fd858201c0a80ba.tar.bz2 samba-3edcc8c407b16d0698117ecc3fd858201c0a80ba.zip |
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)
-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 */ |