diff options
author | d3fault <d3fault@d3fault.net> | 2017-11-24 16:07:53 -0700 |
---|---|---|
committer | d3fault <d3fault@d3fault.net> | 2018-01-17 04:32:47 +0000 |
commit | 1a4cc8d57b928509a64f9679e5c0e7afaa05cb54 (patch) | |
tree | 7748aa4993fca0bf115402e2df4bd7d4d49537db /src/corelib/io/qfsfileengine_p.h | |
parent | 0aecac1dcfd4b8e353e2fc0b0ad06d77b4b125d6 (diff) |
Add QIODevice::NewOnly and QIODevice::ExistingOnly OpenMode flags
When QFile::open is called with the NewOnly flag, the call will
fail if the file already exists. As usual, if the file does not exist,
it will be created. Like QTemporaryFile, there is a guarantee from
the operating system that you are not accidentally creating a new file
on top of an older file. When QFile::open is called with the
ExistingOnly flag, the call will fail if the file does not exist. The
ExistingOnly flag only provides new functionality when used with the
WriteOnly flag. For ReadOnly it provides no change in functionality,
as ReadOnly by itself already never creates.
Task-number: QTBUG-52244
Change-Id: I8e3206728f245f95172c225bf297023fb078fc6d
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/io/qfsfileengine_p.h')
-rw-r--r-- | src/corelib/io/qfsfileengine_p.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h index 16ba161b75..6b091a8eef 100644 --- a/src/corelib/io/qfsfileengine_p.h +++ b/src/corelib/io/qfsfileengine_p.h @@ -131,6 +131,9 @@ public: protected: QFSFileEngine(QFSFileEnginePrivate &dd); + +private: + inline bool processOpenModeFlags(QIODevice::OpenMode *mode); }; class Q_AUTOTEST_EXPORT QFSFileEnginePrivate : public QAbstractFileEnginePrivate @@ -219,6 +222,12 @@ public: int sysOpen(const QString &, int flags); #endif + static bool openModeCanCreate(QIODevice::OpenMode openMode) + { + // WriteOnly can create, but only when ExistingOnly isn't specified. + // ReadOnly by itself never creates. + return (openMode & QFile::WriteOnly) && !(openMode & QFile::ExistingOnly); + } protected: QFSFileEnginePrivate(); |