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;
57 void setError(QFileDevice::FileError err);
58 void setError(QFileDevice::FileError err,
const QString &errorString);
59 void setError(QFileDevice::FileError err,
int errNum);
76 if (!
const_cast<QFileDevice *>(q_func())->flush())
85constexpr mode_t toMode_t(QFileDevice::Permissions permissions)
88 if (permissions & (QFileDevice::ReadOwner | QFileDevice::ReadUser))
90 if (permissions & (QFileDevice::WriteOwner | QFileDevice::WriteUser))
92 if (permissions & (QFileDevice::ExeOwner | QFileDevice::ExeUser))
94 if (permissions & QFileDevice::ReadGroup)
96 if (permissions & QFileDevice::WriteGroup)
98 if (permissions & QFileDevice::ExeGroup)
100 if (permissions & QFileDevice::ReadOther)
102 if (permissions & QFileDevice::WriteOther)
104 if (permissions & QFileDevice::ExeOther)
110#elif defined(Q_OS_WINDOWS)
112class QNativeFilePermissions
115 QNativeFilePermissions(std::optional<QFileDevice::Permissions> perms,
bool isDir);
117 SECURITY_ATTRIBUTES *securityAttributes();
118 bool isOk()
const {
return ok; }
125 static constexpr auto MaxNumACEs = 5;
127 static constexpr auto MaxACLSize =
128 sizeof(ACL) + (
sizeof(ACCESS_ALLOWED_ACE) + SECURITY_MAX_SID_SIZE) * MaxNumACEs;
130 SECURITY_ATTRIBUTES sa;
132 SECURITY_DESCRIPTOR sd;
133 alignas(DWORD)
char aclStorage[MaxACLSize];
void setError(QFileDevice::FileError err, int errNum)
bool putCharHelper(char c) override
std::unique_ptr< QAbstractFileEngine > fileEngine
bool ensureFlushed() const
virtual QAbstractFileEngine * engine() const
void setError(QFileDevice::FileError err)
void setError(QFileDevice::FileError err, const QString &errorString)
#define QFILE_WRITEBUFFER_SIZE
#define QT_USE_NODISCARD_FILE_OPEN