summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2017-12-13 14:13:29 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-01-10 10:42:24 +0100
commite0e4c722c98737a4202b9fabc60bff6d2c6050f4 (patch)
tree35397d574ae30020bb3e64c449e04c13e9288e2a /fs
parent896894088e7de081caddb5fc8dc653bc0f5ac7bb (diff)
downloadbarebox-e0e4c722c98737a4202b9fabc60bff6d2c6050f4.tar.gz
barebox-e0e4c722c98737a4202b9fabc60bff6d2c6050f4.tar.xz
fs: implement ftruncate
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'fs')
-rw-r--r--fs/fs.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/fs/fs.c b/fs/fs.c
index f61ee091b5..051af8d19f 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -742,6 +742,28 @@ int creat(const char *pathname, mode_t mode)
}
EXPORT_SYMBOL(creat);
+int ftruncate(int fd, loff_t length)
+{
+ struct fs_driver_d *fsdrv;
+ FILE *f;
+ int ret;
+
+ if (check_fd(fd))
+ return -errno;
+
+ f = &files[fd];
+
+ fsdrv = f->fsdev->driver;
+
+ ret = fsdrv->truncate(&f->fsdev->dev, f, length);
+ if (ret)
+ return ret;
+
+ f->size = length;
+
+ return 0;
+}
+
int ioctl(int fd, int request, void *buf)
{
struct fs_driver_d *fsdrv;