summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/misc/file/Makefile6
-rw-r--r--libc/misc/file/lockf64.c18
2 files changed, 23 insertions, 1 deletions
diff --git a/libc/misc/file/Makefile b/libc/misc/file/Makefile
index ed31037bb..195097e92 100644
--- a/libc/misc/file/Makefile
+++ b/libc/misc/file/Makefile
@@ -24,7 +24,11 @@
TOPDIR=../../../
include $(TOPDIR)Rules.mak
-CSRC=lockf.c lockf64.c
+ifeq ($(strip $(UCLIBC_HAS_LFS)),y)
+CSRC = lockf.c lockf64.c
+else
+CSRC = lockf.c
+endif
COBJS=$(patsubst %.c,%.o, $(CSRC))
OBJS=$(COBJS)
diff --git a/libc/misc/file/lockf64.c b/libc/misc/file/lockf64.c
index 673d11397..327707ac8 100644
--- a/libc/misc/file/lockf64.c
+++ b/libc/misc/file/lockf64.c
@@ -16,6 +16,23 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+#include <features.h>
+
+#ifdef __UCLIBC_HAS_LFS__
+#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS != 64
+#undef _FILE_OFFSET_BITS
+#define _FILE_OFFSET_BITS 64
+#endif
+#ifndef __USE_FILE_OFFSET64
+# define __USE_FILE_OFFSET64 1
+#endif
+#ifndef __USE_LARGEFILE64
+# define __USE_LARGEFILE64 1
+#endif
+#endif
+
+#define __USE_GNU
+
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
@@ -83,3 +100,4 @@ int lockf64 (int fd, int cmd, off64_t len64)
return fcntl(fd, cmd, &fl);
}
+