X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fdb.cpp;h=ea0df97f6d68337eee0fd751364a5f8e123eebfe;hp=0547407132b3b9e765e83d4314b63cb89095398b;hb=01dff0278ed0eeb8cee776c8ef9d6fcf0d6229fb;hpb=023864f9fe2db4ef8f74057b1afb21446b6b7ef7 diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp old mode 100644 new mode 100755 index 0547407..ea0df97 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -633,29 +633,24 @@ void eDVBDB::loadBouquet(const char *path) return; } int entries=0; - char line[256]; + size_t linesize = 256; + char *line = (char*)malloc(linesize); bool read_descr=false; eServiceReference *e = NULL; while (1) { - if (!fgets(line, 256, fp)) - break; - line[strlen(line)-1]=0; - if (strlen(line) && line[strlen(line)-1]=='\r') - line[strlen(line)-1]=0; - if (!line[0]) - break; + int len; + if ((len = getline(&line, &linesize, fp)) < 2) break; + /* strip newline */ + line[--len] = 0; + /* strip carriage return (when found) */ + if (line[len - 1] == '\r') line[--len] = 0; if (line[0]=='#') { if (!strncmp(line, "#SERVICE", 8)) { int offs = line[8] == ':' ? 10 : 9; eServiceReference tmp(line+offs); - if (tmp.type != eServiceReference::idDVB) - { - eDebug("only DVB Bouquets supported"); - continue; - } if ( tmp.flags&eServiceReference::canDescent ) { size_t pos = tmp.path.rfind('/'); @@ -705,6 +700,7 @@ void eDVBDB::loadBouquet(const char *path) continue; } } + free(line); fclose(fp); eDebug("%d entries in Bouquet %s", entries, bouquet_name.c_str()); }