summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qtemporaryfile_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/io/qtemporaryfile_p.h')
-rw-r--r--src/corelib/io/qtemporaryfile_p.h18
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