26 { |
27 { |
27 close(); |
28 close(); |
28 |
29 |
29 if ((openMode & QIODevice::ReadWrite) == QIODevice::ReadWrite) { |
30 if ((openMode & QIODevice::ReadWrite) == QIODevice::ReadWrite) { |
30 m_handle = PHYSFS_openAppend(m_fileName.toUtf8().constData()); |
31 m_handle = PHYSFS_openAppend(m_fileName.toUtf8().constData()); |
31 m_readWrite = true; |
32 if(m_handle) |
32 seek(0); |
33 { |
|
34 m_readWrite = true; |
|
35 seek(0); |
|
36 } |
33 } |
37 } |
34 |
38 |
35 else if (openMode & QIODevice::WriteOnly) { |
39 else if (openMode & QIODevice::WriteOnly) { |
36 m_handle = PHYSFS_openWrite(m_fileName.toUtf8().constData()); |
40 m_handle = PHYSFS_openWrite(m_fileName.toUtf8().constData()); |
37 m_flags = QAbstractFileEngine::WriteOwnerPerm | QAbstractFileEngine::WriteUserPerm | QAbstractFileEngine::FileType; |
41 m_flags = QAbstractFileEngine::WriteOwnerPerm | QAbstractFileEngine::WriteUserPerm | QAbstractFileEngine::FileType; |
112 } |
116 } |
113 |
117 |
114 bool FileEngine::mkdir(const QString &dirName, bool createParentDirectories) const |
118 bool FileEngine::mkdir(const QString &dirName, bool createParentDirectories) const |
115 { |
119 { |
116 Q_UNUSED(createParentDirectories); |
120 Q_UNUSED(createParentDirectories); |
|
121 |
117 return PHYSFS_mkdir(dirName.toUtf8().constData()) != 0; |
122 return PHYSFS_mkdir(dirName.toUtf8().constData()) != 0; |
118 } |
123 } |
119 |
124 |
120 bool FileEngine::rmdir(const QString &dirName, bool recurseParentDirectories) const |
125 bool FileEngine::rmdir(const QString &dirName, bool recurseParentDirectories) const |
121 { |
126 { |
122 Q_UNUSED(recurseParentDirectories); |
127 Q_UNUSED(recurseParentDirectories); |
|
128 |
123 return PHYSFS_delete(dirName.toUtf8().constData()) != 0; |
129 return PHYSFS_delete(dirName.toUtf8().constData()) != 0; |
124 } |
130 } |
125 |
131 |
126 bool FileEngine::caseSensitive() const |
132 bool FileEngine::caseSensitive() const |
127 { |
133 { |
205 { |
210 { |
206 if(file.startsWith(FileEngineHandler::scheme)) |
211 if(file.startsWith(FileEngineHandler::scheme)) |
207 m_fileName = file.mid(FileEngineHandler::scheme.size()); |
212 m_fileName = file.mid(FileEngineHandler::scheme.size()); |
208 else |
213 else |
209 m_fileName = file; |
214 m_fileName = file; |
210 |
|
211 PHYSFS_Stat stat; |
215 PHYSFS_Stat stat; |
212 if (PHYSFS_stat(m_fileName.toUtf8().constData(), &stat) != 0) { |
216 if (PHYSFS_stat(m_fileName.toUtf8().constData(), &stat) != 0) { |
213 m_size = stat.filesize; |
217 m_size = stat.filesize; |
214 m_date = QDateTime::fromTime_t(stat.modtime); |
218 m_date = QDateTime::fromTime_t(stat.modtime); |
215 // _flags |= QAbstractFileEngine::WriteUserPerm; |
219 // m_flags |= QAbstractFileEngine::WriteOwnerPerm; |
|
220 m_flags |= QAbstractFileEngine::ReadOwnerPerm; |
216 m_flags |= QAbstractFileEngine::ReadUserPerm; |
221 m_flags |= QAbstractFileEngine::ReadUserPerm; |
217 m_flags |= QAbstractFileEngine::ExistsFlag; |
222 m_flags |= QAbstractFileEngine::ExistsFlag; |
|
223 m_flags |= QAbstractFileEngine::LocalDiskFlag; |
218 |
224 |
219 switch (stat.filetype) |
225 switch (stat.filetype) |
220 { |
226 { |
221 case PHYSFS_FILETYPE_REGULAR: |
227 case PHYSFS_FILETYPE_REGULAR: |
222 m_flags |= QAbstractFileEngine::FileType; |
228 m_flags |= QAbstractFileEngine::FileType; |
223 break; |
229 break; |
224 |
|
225 case PHYSFS_FILETYPE_DIRECTORY: |
230 case PHYSFS_FILETYPE_DIRECTORY: |
226 m_flags |= QAbstractFileEngine::DirectoryType; |
231 m_flags |= QAbstractFileEngine::DirectoryType; |
227 break; |
232 break; |
228 case PHYSFS_FILETYPE_SYMLINK: |
233 case PHYSFS_FILETYPE_SYMLINK: |
229 m_flags |= QAbstractFileEngine::LinkType; |
234 m_flags |= QAbstractFileEngine::LinkType; |