summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfsfileengine_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qfsfileengine_unix.cpp')
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index bb9b3dc87a..83091ca808 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -735,16 +735,19 @@ bool QFSFileEnginePrivate::unmap(uchar *ptr)
/*!
\reimp
*/
-bool QFSFileEngine::clone(int sourceHandle)
+bool QFSFileEngine::cloneTo(QAbstractFileEngine *target)
{
+ if ((target->fileFlags(LocalDiskFlag) & LocalDiskFlag) == 0)
+ return false;
#if defined(Q_OS_LINUX)
Q_D(QFSFileEngine);
# if !defined FICLONE
# define FICLONE _IOW (0x94, 9, int)
# endif
- return ::ioctl(d->fd, FICLONE, sourceHandle) == 0;
+ int srcfd = d->nativeHandle();
+ int dstfd = target->handle();
+ return ::ioctl(dstfd, FICLONE, srcfd) == 0;
#else
- Q_UNUSED(sourceHandle);
return false;
#endif
}