summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2007-01-07 00:06:27 +0000
committerDieter Hametner <dh (plus) vdr (at) gekrumbel (dot) de>2007-01-07 00:06:27 +0000
commit59a03b0f2fda5c81dbafdae285381740a22d3af3 (patch)
treedb4ffd6d6339d53268fee8cfccee614e3280859b
parent0252d06339a3f834d86aab32845e613314e5e367 (diff)
downloadvdr-plugin-live-59a03b0f2fda5c81dbafdae285381740a22d3af3.tar.gz
vdr-plugin-live-59a03b0f2fda5c81dbafdae285381740a22d3af3.tar.bz2
Bugfix for same dir and recording name
-rw-r--r--recordings.cpp15
-rw-r--r--recordings.h2
2 files changed, 15 insertions, 2 deletions
diff --git a/recordings.cpp b/recordings.cpp
index 9d6b219..0e0b365 100644
--- a/recordings.cpp
+++ b/recordings.cpp
@@ -25,11 +25,11 @@ namespace vdrlive {
if (pos != string::npos) {
string dirName(name.substr(index, pos - index));
index = pos + 1;
- Map::iterator i = dir->m_entries.find(dirName);
+ Map::iterator i = findDir(dir, dirName);
if (i == dir->m_entries.end()) {
RecordingsItemPtr recPtr (new RecordingsItemDir(dirName, level));
dir->m_entries.insert(pair< string, RecordingsItemPtr > (dirName, recPtr));
- i = dir->m_entries.find(dirName);
+ i = findDir(dir, dirName);
}
dir = i->second;
level++;
@@ -77,6 +77,17 @@ namespace vdrlive {
return recItem->m_entries.end();
}
+ RecordingsTree::Map::iterator RecordingsTree::findDir(RecordingsItemPtr& dir, const string& dirName)
+ {
+ pair< Map::iterator, Map::iterator > range = dir->m_entries.equal_range(dirName);
+ for (Map::iterator i = range.first; i != range.second; ++i) {
+ if (i->second->IsDir()) {
+ return i;
+ }
+ }
+ return dir->m_entries.end();
+ }
+
RecordingsTree::RecordingsItem::RecordingsItem(const string& name) :
m_name(name),
m_entries()
diff --git a/recordings.h b/recordings.h
index 8640848..c2eea1b 100644
--- a/recordings.h
+++ b/recordings.h
@@ -82,6 +82,8 @@ namespace vdrlive {
int m_maxLevel;
RecordingsItemPtr m_root;
cThreadLock m_recordingsLock;
+
+ Map::iterator findDir(RecordingsItemPtr& dir, const string& dirname);
};
} // namespace vdrlive