Skip to content

Commit 1d91c27

Browse files
committed
Filesystem: fix File::available, add File::name
1 parent 5f99bf8 commit 1d91c27

File tree

4 files changed

+19
-3
lines changed

4 files changed

+19
-3
lines changed

hardware/esp8266com/esp8266/cores/esp8266/FS.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ int File::available() {
4141
if (!_p)
4242
return false;
4343

44-
return _p->position() < _p->size();
44+
return _p->size() - _p->position();
4545
}
4646

4747
int File::read() {
@@ -112,6 +112,13 @@ File::operator bool() const {
112112
return !!_p;
113113
}
114114

115+
const char* File::name() const {
116+
if (!_p)
117+
return nullptr;
118+
119+
return _p->name();
120+
}
121+
115122
File Dir::openFile(const char* mode) {
116123
if (!_impl) {
117124
return File();

hardware/esp8266com/esp8266/cores/esp8266/FS.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class File : public Stream
6464
size_t size() const;
6565
void close();
6666
operator bool() const;
67+
const char* name() const;
6768

6869
protected:
6970
FileImplPtr _p;

hardware/esp8266com/esp8266/cores/esp8266/FSImpl.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class FileImpl {
3333
virtual size_t position() const = 0;
3434
virtual size_t size() const = 0;
3535
virtual void close() = 0;
36+
virtual const char* name() const = 0;
3637
};
3738

3839
enum OpenMode {

hardware/esp8266com/esp8266/cores/esp8266/spiffs_api.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,12 @@ class SPIFFSFileImpl : public FileImpl {
259259
DEBUGV("SPIFFS_close: fd=%d\r\n", _fd);
260260
}
261261

262+
const char* name() const override {
263+
CHECKFD();
264+
265+
return (const char*) _stat.name;
266+
}
267+
262268
protected:
263269
SPIFFSImpl* _fs;
264270
spiffs_file _fd;
@@ -283,10 +289,11 @@ class SPIFFSDirImpl : public DirImpl {
283289
return FileImplPtr();
284290
}
285291
int mode = getSpiffsMode(openMode, accessMode);
286-
spiffs_file fd = SPIFFS_open_by_dirent(_fs->getFs(), &_dirent, mode, 0);
292+
auto fs = _fs->getFs();
293+
spiffs_file fd = SPIFFS_open_by_dirent(fs, &_dirent, mode, 0);
287294
if (fd < 0) {
288295
DEBUGV("SPIFFSDirImpl::openFile: fd=%d path=`%s` openMode=%d accessMode=%d err=%d\r\n",
289-
fd, _dirent.name, openMode, accessMode, _fs.err_code);
296+
fd, _dirent.name, openMode, accessMode, fs->err_code);
290297
return FileImplPtr();
291298
}
292299
return std::make_shared<SPIFFSFileImpl>(_fs, fd);

0 commit comments

Comments
 (0)