diff options
Diffstat (limited to 'src/corelib/io/qtemporaryfile_p.h')
-rw-r--r-- | src/corelib/io/qtemporaryfile_p.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/corelib/io/qtemporaryfile_p.h b/src/corelib/io/qtemporaryfile_p.h index 97ffc48507..46a0d7aba3 100644 --- a/src/corelib/io/qtemporaryfile_p.h +++ b/src/corelib/io/qtemporaryfile_p.h @@ -58,6 +58,17 @@ #include "private/qfile_p.h" #include "qtemporaryfile.h" +#ifdef Q_OS_LINUX +# include <fcntl.h> +# ifdef O_TMPFILE +// some early libc support had the wrong values for O_TMPFILE +// (see https://bugzilla.gnome.org/show_bug.cgi?id=769453#c18) +# if (O_TMPFILE & O_DIRECTORY) == O_DIRECTORY +# define LINUX_UNNAMED_TMPFILE +# endif +# endif +#endif + QT_BEGIN_NAMESPACE struct QTemporaryFileName @@ -83,6 +94,7 @@ public: QAbstractFileEngine *engine() const override; void resetFileEngine() const; + void materializeUnnamedFile(); bool autoRemove = true; QString templateName = defaultTemplateName(); @@ -124,11 +136,17 @@ public: bool rename(const QString &newName) override; bool renameOverwrite(const QString &newName) override; bool close() override; + QString fileName(FileName file) const override; + + enum MaterializationMode { Overwrite, DontOverwrite, NameIsTemplate }; + bool materializeUnnamedFile(const QString &newName, MaterializationMode mode); + bool isUnnamedFile() const; const QString &templateName; quint32 fileMode; bool filePathIsTemplate; bool filePathWasTemplate; + bool unnamedFile = false; }; #endif // QT_NO_TEMPORARYFILE |