diff options
author | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2021-10-22 13:39:52 +0200 |
---|---|---|
committer | Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> | 2021-12-04 01:27:08 +0100 |
commit | 56e13acf4eaaaff69156faa21d0a560fb93091d5 (patch) | |
tree | a455e0092d76561c1583e53356e4bafd690869f5 /src/corelib/io/qfsfileengine_p.h | |
parent | 56bd1b76d2e81c58a80bf6b5d74219c6b1ab8499 (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.h | 12 |
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 |