#include <unistd.h>
#include <string.h>
+#include <fcntl.h>
#include <errno.h>
#include <assert.h>
#include <sys/types.h>
#include "sysio.h"
#include "inode.h"
#include "file.h"
+#include "fs.h"
+#include "mount.h"
#include "sysio-symbols.h"
SYSIO_INTERFACE_RETURN(err ? -1 : 0, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef truncate64
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(truncate)),
SYSIO_INTERFACE_NAME(truncate64))
err = -EBADF;
goto out;
}
+ if (!F_CHKRW(fil, 'w')) {
+ err = -EBADF;
+ goto out;
+ }
err = do_truncate(NULL, fil->f_ino, length);
out:
SYSIO_INTERFACE_RETURN(err ? -1 : 0, err);
}
-#if _LARGEFILE64_SOURCE
+#ifdef _LARGEFILE64_SOURCE
#undef ftruncate64
sysio_sym_weak_alias(PREPEND(_, SYSIO_INTERFACE_NAME(ftruncate)),
SYSIO_INTERFACE_NAME(ftruncate64))