aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorFraxinas <andreas.frisch@multimedia-labs.de>2009-04-23 13:24:13 +0200
committerFraxinas <andreas.frisch@multimedia-labs.de>2009-04-23 13:24:13 +0200
commite21cff679bb73bce310e877d5219ec29291dbe10 (patch)
treeca5ef1a2c77b6b588ebff4bb479f3485dd44529c /lib/dvb
parent6ae5d719b93de2e8897a660ac61b0e9c5a190dde (diff)
parent4b7061b946278825a03d7dd07a65056c3f4e1373 (diff)
downloadenigma2-e21cff679bb73bce310e877d5219ec29291dbe10.tar.gz
enigma2-e21cff679bb73bce310e877d5219ec29291dbe10.zip
Merge branch 'master' of fraxinas@git.opendreambox.org:/git/enigma2
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/db.cpp76
-rw-r--r--lib/dvb/db.h1
-rw-r--r--lib/dvb/metaparser.cpp5
-rw-r--r--lib/dvb/metaparser.h11
4 files changed, 47 insertions, 46 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp
index 647afad4..ae30e360 100644
--- a/lib/dvb/db.cpp
+++ b/lib/dvb/db.cpp
@@ -265,6 +265,42 @@ void eDVBDB::reloadServicelist()
loadServicelist(CONFIGDIR"/enigma2/lamedb");
}
+void eDVBDB::parseServiceData(ePtr<eDVBService> s, std::string str)
+{
+ while ((!str.empty()) && str[1]==':') // new: p:, f:, c:%02d...
+ {
+ size_t c=str.find(',');
+ char p=str[0];
+ std::string v;
+ if (c == std::string::npos)
+ {
+ v=str.substr(2);
+ str="";
+ } else
+ {
+ v=str.substr(2, c-2);
+ str=str.substr(c+1);
+ }
+// eDebug("%c ... %s", p, v.c_str());
+ if (p == 'p')
+ s->m_provider_name=v;
+ else if (p == 'f')
+ {
+ sscanf(v.c_str(), "%x", &s->m_flags);
+ } else if (p == 'c')
+ {
+ int cid, val;
+ sscanf(v.c_str(), "%02d%x", &cid, &val);
+ s->setCacheEntry((eDVBService::cacheID)cid,val);
+ } else if (p == 'C')
+ {
+ int val;
+ sscanf(v.c_str(), "%04x", &val);
+ s->m_ca.push_front((uint16_t)val);
+ }
+ }
+}
+
/* THIS CODE IS BAD. it should be replaced by somethine better. */
void eDVBDB::loadServicelist(const char *file)
{
@@ -425,44 +461,10 @@ void eDVBDB::loadServicelist(const char *file)
fgets(line, 256, f);
if (strlen(line))
line[strlen(line)-1]=0;
- std::string str=line;
-
- if (str[1]!=':') // old ... (only service_provider)
- {
+ if (line[1]!=':') // old ... (only service_provider)
s->m_provider_name=line;
- } else
- while ((!str.empty()) && str[1]==':') // new: p:, f:, c:%02d...
- {
- size_t c=str.find(',');
- char p=str[0];
- std::string v;
- if (c == std::string::npos)
- {
- v=str.substr(2);
- str="";
- } else
- {
- v=str.substr(2, c-2);
- str=str.substr(c+1);
- }
-// eDebug("%c ... %s", p, v.c_str());
- if (p == 'p')
- s->m_provider_name=v;
- else if (p == 'f')
- {
- sscanf(v.c_str(), "%x", &s->m_flags);
- } else if (p == 'c')
- {
- int cid, val;
- sscanf(v.c_str(), "%02d%x", &cid, &val);
- s->setCacheEntry((eDVBService::cacheID)cid,val);
- } else if (p == 'C')
- {
- int val;
- sscanf(v.c_str(), "%04x", &val);
- s->m_ca.push_front((uint16_t)val);
- }
- }
+ else
+ parseServiceData(s, line);
addService(ref, s);
}
diff --git a/lib/dvb/db.h b/lib/dvb/db.h
index 11fb1ab1..098ee03e 100644
--- a/lib/dvb/db.h
+++ b/lib/dvb/db.h
@@ -70,6 +70,7 @@ public:
void saveServicelist();
void saveServicelist(const char *file);
void reloadBouquets();
+ void parseServiceData(ePtr<eDVBService> s, std::string str);
};
#ifndef SWIG
diff --git a/lib/dvb/metaparser.cpp b/lib/dvb/metaparser.cpp
index 175c7cdb..24a5ab67 100644
--- a/lib/dvb/metaparser.cpp
+++ b/lib/dvb/metaparser.cpp
@@ -67,6 +67,9 @@ int eDVBMetaParser::parseMeta(const std::string &tsname)
case 6:
m_filesize = atoll(line);
break;
+ case 7:
+ m_service_data = line;
+ break;
default:
break;
}
@@ -145,7 +148,7 @@ int eDVBMetaParser::updateMeta(const std::string &tsname)
FILE *f = fopen(filename.c_str(), "w");
if (!f)
return -ENOENT;
- fprintf(f, "%s\n%s\n%s\n%d\n%s\n%d\n%lld\n", ref.toString().c_str(), m_name.c_str(), m_description.c_str(), m_time_create, m_tags.c_str(), m_length, m_filesize );
+ fprintf(f, "%s\n%s\n%s\n%d\n%s\n%d\n%lld\n%s\n", ref.toString().c_str(), m_name.c_str(), m_description.c_str(), m_time_create, m_tags.c_str(), m_length, m_filesize, m_service_data.c_str() );
fclose(f);
return 0;
}
diff --git a/lib/dvb/metaparser.h b/lib/dvb/metaparser.h
index 2ca94d6d..38534d8f 100644
--- a/lib/dvb/metaparser.h
+++ b/lib/dvb/metaparser.h
@@ -9,19 +9,14 @@ class eDVBMetaParser
public:
eDVBMetaParser();
int parseFile(const std::string &basename);
-
int parseMeta(const std::string &filename);
int parseRecordings(const std::string &filename);
int updateMeta(const std::string &basename);
-
- int m_data_ok;
-
+
eServiceReferenceDVB m_ref;
- std::string m_name, m_description;
- int m_time_create, m_length;
+ int m_data_ok, m_time_create, m_length;
+ std::string m_name, m_description, m_tags, m_service_data;
long long m_filesize;
-
- std::string m_tags;
};
#endif