diff --git a/Pascal/File.h b/Pascal/File.h index bf127d1..9663c21 100644 --- a/Pascal/File.h +++ b/Pascal/File.h @@ -99,6 +99,7 @@ public: Pascal::Date lastBoot() const { return _lastBoot; } FileEntry *fileAtIndex(unsigned i) const; + FileEntry *fileByName(const char *name) const; void addChild(FileEntry *child, unsigned blocks); @@ -112,6 +113,7 @@ public: void sync(); + protected: virtual void writeDirectoryEntry(LittleEndian::IOBuffer *); diff --git a/Pascal/VolumeEntry.cpp b/Pascal/VolumeEntry.cpp index f76311a..71c5ff9 100644 --- a/Pascal/VolumeEntry.cpp +++ b/Pascal/VolumeEntry.cpp @@ -160,6 +160,7 @@ VolumeEntry::VolumeEntry(Device::BlockDevice *device) VolumeEntry::~VolumeEntry() { + std::vector::iterator iter; for(iter = _files.begin(); iter != _files.end(); ++iter) { @@ -197,6 +198,19 @@ FileEntry *VolumeEntry::fileAtIndex(unsigned i) const return i < _files.size() ? _files[i] : NULL; } +FileEntry *VolumeEntry::fileByName(const char *name) const +{ + + + std::vector::const_iterator iter; + for(iter = _files.begin(); iter != _files.end(); ++iter) + { + FileEntry *e = *iter; + if (::strcasecmp(name, e->name()) == 0) return e; + } + return NULL; +} + void *VolumeEntry::loadBlock(unsigned block)