X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fservice%2Fservice.cpp;h=77bfda99517d31eeddba4e35d43216ff30b5d3c8;hp=8c674c5e2daeaf883cbab2fe0d55a73dd65dfd5c;hb=ba5ec76317a3bd96895506159b0d5bc1a1a6eecc;hpb=a582f7d2a1ff336a1edc59a7d9d7a0707e0c8741 diff --git a/lib/service/service.cpp b/lib/service/service.cpp old mode 100644 new mode 100755 index 8c674c5..77bfda9 --- a/lib/service/service.cpp +++ b/lib/service/service.cpp @@ -65,17 +65,37 @@ eServiceReference::eServiceReference(const std::string &string) if ( sscanf(c, "%d:%d:%x:%x:%x:%x:%n", &type, &flags, &data[0], &data[1], &data[2], &data[3], &pathl) < 2 ) type = idInvalid; } - if (pathl) { const char *pathstr = c+pathl; - const char *namestr = strchr(pathstr, ':'); + const char *namestr = NULL; + int found = strlen(pathstr)-1; + for(;found >= 0;found--) + { + if(pathstr[found] == ':') + break; + } + if (found != -1) + namestr = pathstr + found; if (namestr) { - if (pathstr != namestr) - path.assign(pathstr, namestr-pathstr); - if (*(namestr+1)) - name=namestr+1; + if (!strncmp(namestr, "://", 3)) // The path is a url (e.g. "http://...") + { + namestr = strchr(namestr, ' '); + if (namestr) + { + path.assign(pathstr, namestr - pathstr); + if (*(namestr + 1)) + name = namestr + 1; + } + } + else + { + if (pathstr != namestr) + path.assign(pathstr, namestr-pathstr); + if (*(namestr+1)) + name=namestr+1; + } } else path=pathstr;