From 8fdc41a2ea00fd0471ce1b67f08a1cfe5af90a7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96man?= Date: Thu, 6 Dec 2007 15:26:06 +0000 Subject: [PATCH] strip channel names of trailing and leading whitespaces --- dvb.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/dvb.c b/dvb.c index 19ec14d0..54c9a0d6 100644 --- a/dvb.c +++ b/dvb.c @@ -746,9 +746,9 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, uint8_t dtag, dlen; char provider[256]; - char chname[256]; + char chname0[256], *chname; uint8_t stype; - int ret = 0; + int ret = 0, l; if(len < 8) return -1; @@ -779,7 +779,9 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, break; stype = 0; - + + chname = NULL; + while(dllen > 2) { dtag = ptr[0]; dlen = ptr[1]; @@ -793,15 +795,27 @@ dvb_sdt_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len, case DVB_DESC_SERVICE: if(dvb_desc_service(ptr, dlen, &stype, provider, sizeof(provider), - chname, sizeof(chname)) < 0) + chname0, sizeof(chname0)) < 0) { stype = 0; + } else { + chname = chname0; + /* Some providers insert spaces */ + while(*chname <= 32 && *chname != 0) + chname++; + + l = strlen(chname); + while(l > 1 && chname[l - 1] <= 32) + l--; + + } break; } len -= dlen; ptr += dlen; dllen -= dlen; } - switch(stype) { + + if(chname != NULL) switch(stype) { case DVB_ST_SDTV: case DVB_ST_HDTV: