From 1b4f5f9b946266b5979266a608d659a07285531f Mon Sep 17 00:00:00 2001 From: Julian Harnath Date: Sat, 11 Feb 2017 10:43:08 +0000 Subject: [PATCH] FUSE compat: fall back to truncate if no ftruncate * As defined by the FUSE interface: if the FUSE module doesn't implement ftruncate(), fall back to using truncate() instead --- .../kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp b/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp index b916346087..9b12a59b25 100644 --- a/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp +++ b/src/add-ons/kernel/file_systems/userlandfs/server/fuse/FUSEVolume.cpp @@ -1474,6 +1474,10 @@ FUSEVolume::Open(void* _node, int openMode, void** _cookie) // truncate the file, if requested if (truncate) { fuseError = fuse_fs_ftruncate(fFS, path, 0, cookie); + if (fuseError == ENOSYS) { + // Fallback to truncate if ftruncate is not implemented + fuseError = fuse_fs_truncate(fFS, path, 0); + } if (fuseError != 0) { fuse_fs_flush(fFS, path, cookie); fuse_fs_release(fFS, path, cookie);