X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fdvb%2Fdb.cpp;h=ea0df97f6d68337eee0fd751364a5f8e123eebfe;hp=f938cb110baef87375b978050b1ef68cbb7c496b;hb=01dff0278ed0eeb8cee776c8ef9d6fcf0d6229fb;hpb=418bb7f62c7a102f16dfd6a509680b6921486a6c diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp old mode 100644 new mode 100755 index f938cb1..ea0df97 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -633,18 +633,18 @@ 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)) @@ -700,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()); }