[browser] add exception handling.
[vuplus_dvbapp] / lib / service / service.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 8c674c5..77bfda9
@@ -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;