summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/__ftruncate64.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/lib/__ftruncate64.c')
-rw-r--r--mdk-stage1/dietlibc/lib/__ftruncate64.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/__ftruncate64.c b/mdk-stage1/dietlibc/lib/__ftruncate64.c
new file mode 100644
index 000000000..e0ea8c98a
--- /dev/null
+++ b/mdk-stage1/dietlibc/lib/__ftruncate64.c
@@ -0,0 +1,23 @@
+#include <errno.h>
+#include "dietfeatures.h"
+#ifdef WANT_LARGEFILE_BACKCOMPAT
+#include <sys/stat.h>
+#include "syscalls.h"
+#include <unistd.h>
+#ifndef __NO_STAT64
+#ifdef __NR_ftruncate64
+
+extern int __dietlibc_ftruncate64(int fd, loff_t o);
+
+int ftruncate64(int fd, loff_t o) {
+ int tmp;
+ if ((tmp=__dietlibc_ftruncate64(fd,o))==-1) {
+ if (errno!=ENOSYS) return -1;
+ if (o>0x7fffffff) { errno=EOVERFLOW; return -1; }
+ return ftruncate(fd,o);
+ }
+ return tmp;
+}
+#endif
+#endif
+#endif