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;