summaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorChang.H.S <jhs@dev3>2012-07-04 09:17:17 (GMT)
committerChang.H.S <jhs@dev3>2012-07-04 09:17:17 (GMT)
commit01dff0278ed0eeb8cee776c8ef9d6fcf0d6229fb (patch)
tree1365c27e07f9c8026ecff2f0c629633c1798d437 /lib/dvb
parentd619c613c873c6c242022cdae8d0db4b336e5027 (diff)
db.cpp : 'Load Bouquets' fixed for line have more than 256 chracters.
Diffstat (limited to 'lib/dvb')
-rwxr-xr-x[-rw-r--r--]lib/dvb/db.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp
index f938cb1..ea0df97 100644..100755
--- 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());
}