#include <fstream>
#include <boost/filesystem.hpp>
#include <boost/algorithm/string.hpp>
+#include "dvd.h"
using namespace std;
using namespace boost;
return "";
}
-vector<uint64_t>
+list<DVDTitle>
dvd_titles (string dvd)
{
filesystem::path video (dvd);
video /= "VIDEO_TS";
- vector<uint64_t> sizes;
+ list<DVDTitle> titles;
for (filesystem::directory_iterator i = filesystem::directory_iterator (video); i != filesystem::directory_iterator(); ++i) {
#if BOOST_FILESYSTEM_VERSION == 3
if (p.size() == 4) {
int const a = atoi (p[1].c_str ());
int const b = atoi (p[2].c_str ());
- while (a >= int (sizes.size())) {
- sizes.push_back (0);
+ if (b == 0) {
+ continue;
}
- if (b > 0) {
- sizes[a] += size;
+ list<DVDTitle>::iterator j = titles.begin ();
+ while (j != titles.end() && j->number != a) {
+ ++j;
+ }
+
+ if (j == titles.end ()) {
+ titles.push_back (DVDTitle (a, size));
+ } else {
+ j->size += size;
}
}
}
}
+
+ titles.sort ();
- return sizes;
+ return titles;
+}
+
+
+bool
+operator< (DVDTitle const & a, DVDTitle const & b)
+{
+ return a.number < b.number;
}