diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-03-30 23:32:28 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-03-30 23:32:28 +0000 |
| commit | e059d69c2ce61b1ba1ae2e0b9c75eb53bb26f1bb (patch) | |
| tree | 52afd355bcf306ab0a39034148fb9f07c54c8a38 /lib/service/servicedvb.cpp | |
| parent | 0c9e75c44d610465017a08874a5e2f585bc554aa (diff) | |
| download | enigma2-e059d69c2ce61b1ba1ae2e0b9c75eb53bb26f1bb.tar.gz enigma2-e059d69c2ce61b1ba1ae2e0b9c75eb53bb26f1bb.zip | |
add background file eraser class for asynchronous file deletion
Diffstat (limited to 'lib/service/servicedvb.cpp')
| -rw-r--r-- | lib/service/servicedvb.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 6e2d9610..033d13d3 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -10,6 +10,7 @@ #include <lib/dvb/db.h> #include <lib/dvb/decoder.h> +#include <lib/components/file_eraser.h> #include <lib/service/servicedvbrecord.h> #include <lib/service/event.h> #include <lib/dvb/metaparser.h> @@ -233,11 +234,18 @@ RESULT eDVBPVRServiceOfflineOperations::deleteFromDisk(int simulate) if (getListOfFilenames(res)) return -1; + eBackgroundFileEraser *eraser = eBackgroundFileEraser::getInstance(); + if (!eraser) + eDebug("FATAL !! can't get background file eraser"); + /* TODO: deferred removing.. */ for (std::list<std::string>::iterator i(res.begin()); i != res.end(); ++i) { eDebug("Removing %s...", i->c_str()); - ::unlink(i->c_str()); + if (eraser) + eraser->erase(i->c_str()); + else + ::unlink(i->c_str()); } return 0; @@ -248,6 +256,19 @@ RESULT eDVBPVRServiceOfflineOperations::getListOfFilenames(std::list<std::string { res.clear(); res.push_back(m_ref.path); + +// handling for old splitted recordings (enigma 1) + char buf[255]; + int slice=1; + while(true) + { + snprintf(buf, 255, "%s.%03d", m_ref.path.c_str(), slice++); + struct stat s; + if (stat(buf, &s) < 0) + break; + res.push_back(buf); + } + res.push_back(m_ref.path + ".meta"); res.push_back(m_ref.path + ".ap"); res.push_back(m_ref.path + ".cuts"); |
