summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qfsfileengine_p.h
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_p.h
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_p.h')
-rw-r--r--src/corelib/io/qfsfileengine_p.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h
index 6cfa6ebbab..4ebba61bb6 100644
--- a/src/corelib/io/qfsfileengine_p.h
+++ b/src/corelib/io/qfsfileengine_p.h
@@ -59,6 +59,10 @@
#include <optional>
+#ifdef Q_OS_UNIX
+#include <sys/types.h> // for mode_t
+#endif
+
#ifndef QT_NO_FSFILEENGINE
QT_BEGIN_NAMESPACE
@@ -81,7 +85,7 @@ public:
explicit QFSFileEngine(const QString &file);
~QFSFileEngine();
- bool open(QIODevice::OpenMode openMode) override;
+ bool open(QIODevice::OpenMode openMode, std::optional<QFile::Permissions> permissions) override;
bool open(QIODevice::OpenMode flags, FILE *fh);
bool close() override;
bool flush() override;
@@ -156,7 +160,7 @@ public:
QFileSystemEntry fileEntry;
QIODevice::OpenMode openMode;
- bool nativeOpen(QIODevice::OpenMode openMode);
+ bool nativeOpen(QIODevice::OpenMode openMode, std::optional<QFile::Permissions> permissions);
bool openFh(QIODevice::OpenMode flags, FILE *fh);
bool openFd(QIODevice::OpenMode flags, int fd);
bool nativeClose();
@@ -246,6 +250,10 @@ protected:
void init();
QAbstractFileEngine::FileFlags getPermissions(QAbstractFileEngine::FileFlags type) const;
+
+#ifdef Q_OS_UNIX
+ bool nativeOpenImpl(QIODevice::OpenMode openMode, mode_t mode);
+#endif
};
QT_END_NAMESPACE