summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfsfileengine_unix.cpp
diff options
context:
space:
mode:
authorIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2021-10-22 13:39:52 +0200
committerIevgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>2021-12-04 01:27:08 +0100
commit56e13acf4eaaaff69156faa21d0a560fb93091d5 (patch)
treea455e0092d76561c1583e53356e4bafd690869f5 /src/corelib/io/qfsfileengine_unix.cpp
parent56bd1b76d2e81c58a80bf6b5d74219c6b1ab8499 (diff)
QAbstractFileEngine: Add permission argument to open()
The new argument allows atomic creation of files with non-default permissions. Task-number: QTBUG-79750 Change-Id: I4c49455b41f924ba87148302c8d0f77f5de0832b Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/corelib/io/qfsfileengine_unix.cpp')
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index 5815d6bc9c..d071c85cb3 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -39,6 +39,7 @@
#include "qplatformdefs.h"
#include "private/qabstractfileengine_p.h"
+#include "private/qfiledevice_p.h"
#include "private/qfsfileengine_p.h"
#include "private/qcore_unix_p.h"
#include "qfilesystementry_p.h"
@@ -107,7 +108,16 @@ static inline QString msgOpenDirectory()
/*!
\internal
*/
-bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
+bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode,
+ std::optional<QFile::Permissions> permissions)
+{
+ return nativeOpenImpl(openMode, permissions ? QtPrivate::toMode_t(*permissions) : 0666);
+}
+
+/*!
+ \internal
+*/
+bool QFSFileEnginePrivate::nativeOpenImpl(QIODevice::OpenMode openMode, mode_t mode)
{
Q_Q(QFSFileEngine);
@@ -118,7 +128,7 @@ bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
// Try to open the file in unbuffered mode.
do {
- fd = QT_OPEN(fileEntry.nativeFilePath().constData(), flags, 0666);
+ fd = QT_OPEN(fileEntry.nativeFilePath().constData(), flags, mode);
} while (fd == -1 && errno == EINTR);
// On failure, return and report the error.