{
}
+int lower(char c)
+{
+ return std::tolower(static_cast<unsigned char>(c));
+}
+
RESULT eServiceFS::getContent(std::list<eServiceReference> &list, bool sorted)
{
DIR *d=opendir(path.c_str());
{
size_t e = filename.rfind('.');
std::string extension = (e != std::string::npos) ? filename.substr(e) : "";
+ std::transform(extension.begin(), extension.end(), extension.begin(), lower);
int type = -1;
if (extension == ".ts")
type = eServiceFactoryDVB::id;
else if (extension == ".mp3")
- type = 4097;
+ type = 0x1001;
else if (extension == ".ogg")
- type = 4097;
+ type = 0x1001;
else if (extension == ".mpg")
- type = 4097;
+ type = 0x1001;
else if (extension == ".vob")
- type = 4097;
+ type = 0x1001;
else if (extension == ".wav" || extension == ".wave")
- type = 4097;
- else if (extension == ".m3u" || extension == ".pls" || extension == ".e2")
- type = 4098;
+ type = 0x1001;
+ else if (extension == ".m3u" || extension == ".pls" || extension == ".e2pls")
+ type = 4098; // ?? this id is not defined in any service handler, just in python code.
if (type != -1)
{
// useable format options are
// R = Service Reference (as swig object .. this is very slow)
// S = Service Reference (as python string object .. same as ref.toString())
+// C = Service Reference (as python string object .. same as ref.toCompareString())
// N = Service Name (as python string object)
// when exactly one return value per service is selected in the format string,
// then each value is directly a list entry
// unknown format string chars are returned as python None values !
PyObject *eServiceFS::getContent(const char* format, bool sorted)
{
- PyObject *ret=0;
+ ePyObject ret;
std::list<eServiceReference> tmplist;
int retcount=1;
for (int cnt=0; cnt < services; ++cnt)
{
eServiceReference &ref=*it++;
- PyObject *tuple = retcount > 1 ? PyTuple_New(retcount) : 0;
+ ePyObject tuple = retcount > 1 ? PyTuple_New(retcount) : ePyObject();
for (int i=0; i < retcount; ++i)
{
- PyObject *tmp=0;
+ ePyObject tmp;
switch(format[i])
{
case 'R': // service reference (swig)object
- tmp = New_eServiceReference(ref);
+ tmp = NEW_eServiceReference(ref);
+ break;
+ case 'C': // service reference compare string
+ tmp = PyString_FromString(ref.toCompareString().c_str());
break;
case 'S': // service reference string
tmp = PyString_FromString(ref.toString().c_str());
PyList_SET_ITEM(ret, cnt, tuple);
}
}
- return ret ? ret : PyList_New(0);
+ return ret ? (PyObject*)ret : (PyObject*)PyList_New(0);
}
RESULT eServiceFS::getNext(eServiceReference &ptr)