19#include "private/qiodevice_p.h"
24# include <sys/types.h>
26#elif defined(Q_OS_WINDOWS)
27# include <qt_windows.h>
30# if defined(QT_BOOTSTRAPPED)
31# define QT_FEATURE_fslibs -1
33# define QT_FEATURE_fslibs 1
39class QAbstractFileEngine;
44 Q_DECLARE_PUBLIC(QFileDevice)
50 virtual QAbstractFileEngine *
engine()
const;
60 void setError(QFileDevice::FileError err);
61 void setError(QFileDevice::FileError err, QString errorString);
62 void setError(QFileDevice::FileError err,
int errNum);
79 if (!
const_cast<QFileDevice *>(q_func())->flush())
88constexpr mode_t toMode_t(QFileDevice::Permissions permissions)
91 if (permissions & (QFileDevice::ReadOwner | QFileDevice::ReadUser))
93 if (permissions & (QFileDevice::WriteOwner | QFileDevice::WriteUser))
95 if (permissions & (QFileDevice::ExeOwner | QFileDevice::ExeUser))
97 if (permissions & QFileDevice::ReadGroup)
99 if (permissions & QFileDevice::WriteGroup)
101 if (permissions & QFileDevice::ExeGroup)
103 if (permissions & QFileDevice::ReadOther)
105 if (permissions & QFileDevice::WriteOther)
107 if (permissions & QFileDevice::ExeOther)
113#elif defined(Q_OS_WINDOWS)
115class QNativeFilePermissions
118 QNativeFilePermissions(std::optional<QFileDevice::Permissions> perms,
bool isDir);
120 SECURITY_ATTRIBUTES *securityAttributes();
121 bool isOk()
const {
return ok; }
128 static constexpr auto MaxNumACEs = 5;
130 static constexpr auto MaxACLSize =
131 sizeof(ACL) + (
sizeof(ACCESS_ALLOWED_ACE) + SECURITY_MAX_SID_SIZE) * MaxNumACEs;
133 SECURITY_ATTRIBUTES sa;
135 SECURITY_DESCRIPTOR sd;
136 alignas(DWORD)
char aclStorage[MaxACLSize];
bool putCharHelper(char c) override
std::unique_ptr< QAbstractFileEngine > fileEngine
bool ensureFlushed() const
void setError(QFileDevice::FileError err, QString errorString)
virtual QAbstractFileEngine * engine() const
void setError(QFileDevice::FileError err)
virtual bool setPermissions(QFileDevice::Permissions perms)
Combined button and popup list for selecting options.
#define QFILE_WRITEBUFFER_SIZE
#define QT_USE_NODISCARD_FILE_OPEN