Commit 37de4458 authored by Erwan Tulou's avatar Erwan Tulou

core: debug make_path for windows

   - infinite loop and typo fixed
   - remove leading slash forgotten
parent e2262479
...@@ -1166,6 +1166,20 @@ char *make_path (const char *url) ...@@ -1166,6 +1166,20 @@ char *make_path (const char *url)
size_t schemelen = ((end != NULL) ? end : path) - url; size_t schemelen = ((end != NULL) ? end : path) - url;
path += 3; /* skip "://" */ path += 3; /* skip "://" */
#ifdef WIN32
/* skip leading slash before disk drive
* when format is file:///C:/path/file.ext
*/
if (schemelen == 4 && !strncasecmp (url, "file", 4))
{
char* search = strstr (path, ":/");
if( search && *path == '/' && search == path+2 )
path++;
}
#endif
/* Remove HTML anchor if present */ /* Remove HTML anchor if present */
end = strchr (path, '#'); end = strchr (path, '#');
if (end) if (end)
...@@ -1182,8 +1196,21 @@ char *make_path (const char *url) ...@@ -1182,8 +1196,21 @@ char *make_path (const char *url)
{ {
#if (DIR_SEP_CHAR != '/') #if (DIR_SEP_CHAR != '/')
for (char *p = strchr (path, '/'); p; p = strchr (p, '/')) for (char *p = strchr (path, '/'); p; p = strchr (p, '/'))
*p == DIR_SEP_CHAR; *p++ = DIR_SEP_CHAR;
#endif #endif
#ifdef WIN32
/* check for disk drive in the form 'C:\...' */
char* search = strstr (path, ":"DIR_SEP);
if( search && search == path+1 )
return path;
if (*path && asprintf (&ret, "\\\\%s", path) == -1)
ret = NULL;
goto out;
#else
if (*path == DIR_SEP_CHAR) if (*path == DIR_SEP_CHAR)
return path; return path;
...@@ -1193,12 +1220,7 @@ char *make_path (const char *url) ...@@ -1193,12 +1220,7 @@ char *make_path (const char *url)
memmove (path, path + 9, strlen (path + 9) + 1); memmove (path, path + 9, strlen (path + 9) + 1);
return path; return path;
} }
#ifdef WIN32
if (*path && asprintf (&ret, "\\\\%s", path) == -1)
ret = NULL;
#endif #endif
/* non-local path :-( */
} }
else else
if (schemelen == 2 && !strncasecmp (url, "fd", 2)) if (schemelen == 2 && !strncasecmp (url, "fd", 2))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment