equal
deleted
inserted
replaced
7 |
7 |
8 |
8 |
9 const QString FileEngineHandler::scheme = "physfs:/"; |
9 const QString FileEngineHandler::scheme = "physfs:/"; |
10 |
10 |
11 FileEngine::FileEngine(const QString& filename) |
11 FileEngine::FileEngine(const QString& filename) |
12 : _handler(NULL) |
12 : _handler(NULL) |
13 , _flags(0) |
13 , _flags(0) |
|
14 , m_bufferSet(false) |
14 { |
15 { |
15 setFileName(filename); |
16 setFileName(filename); |
16 } |
17 } |
17 |
18 |
18 FileEngine::~FileEngine() |
19 FileEngine::~FileEngine() |
220 qint64 FileEngine::read(char *data, qint64 maxlen) |
221 qint64 FileEngine::read(char *data, qint64 maxlen) |
221 { |
222 { |
222 return PHYSFS_readBytes(_handler, data, maxlen); |
223 return PHYSFS_readBytes(_handler, data, maxlen); |
223 } |
224 } |
224 |
225 |
|
226 qint64 FileEngine::readLine(char *data, qint64 maxlen) |
|
227 { |
|
228 if(!m_bufferSet) |
|
229 { |
|
230 PHYSFS_setBuffer(_handler, 4096); |
|
231 m_bufferSet = true; |
|
232 } |
|
233 |
|
234 qint64 bytesRead = 0; |
|
235 while(PHYSFS_readBytes(_handler, data, 1) |
|
236 && maxlen |
|
237 && (*data == '\n')) |
|
238 { |
|
239 ++data; |
|
240 --maxlen; |
|
241 ++bytesRead; |
|
242 } |
|
243 |
|
244 return bytesRead; |
|
245 } |
|
246 |
225 qint64 FileEngine::write(const char *data, qint64 len) |
247 qint64 FileEngine::write(const char *data, qint64 len) |
226 { |
248 { |
227 return PHYSFS_writeBytes(_handler, data, len); |
249 return PHYSFS_writeBytes(_handler, data, len); |
228 } |
250 } |
229 |
251 |
242 return PHYSFS_getLastError(); |
264 return PHYSFS_getLastError(); |
243 } |
265 } |
244 |
266 |
245 bool FileEngine::supportsExtension(Extension extension) const |
267 bool FileEngine::supportsExtension(Extension extension) const |
246 { |
268 { |
247 return extension == QAbstractFileEngine::AtEndExtension; |
269 return |
248 } |
270 (extension == QAbstractFileEngine::AtEndExtension) |
249 |
271 || (extension == QAbstractFileEngine::FastReadLineExtension) |
|
272 ; |
|
273 } |
250 |
274 |
251 |
275 |
252 FileEngineHandler::FileEngineHandler(char *argv0) |
276 FileEngineHandler::FileEngineHandler(char *argv0) |
253 { |
277 { |
254 PHYSFS_init(argv0); |
278 PHYSFS_init(argv0); |