From 9a95ad79d184510322f4aa505eded83a19fec49a Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 18 Apr 2010 12:37:46 +0000 Subject: fix url to path on doze svn path=/trunk/netsurf/; revision=10427 --- windows/findfile.c | 27 +++++++++++++++++++++++++++ windows/misc.c | 5 ----- 2 files changed, 27 insertions(+), 5 deletions(-) (limited to 'windows') diff --git a/windows/findfile.c b/windows/findfile.c index f4f5e4557..1516a9fce 100644 --- a/windows/findfile.c +++ b/windows/findfile.c @@ -57,6 +57,33 @@ char *path_to_url(const char *path) return url; } + +char *url_to_path(const char *url) +{ + char *url_path = curl_unescape(url, 0); + char *path; + char *sidx; + + if ((url_path[FILE_SCHEME_PREFIX_LEN + 1] == ':') || + (url_path[FILE_SCHEME_PREFIX_LEN + 1] == '|')) { + /* url_path contains a drive: prefix */ + path = strdup(url_path + FILE_SCHEME_PREFIX_LEN); + + /* swap / for \ */ + sidx = strrchr(path, '/'); + while (sidx != NULL) { + *sidx = '\\'; + sidx = strrchr(path, '/'); + } + } else { + /* return the absolute path including leading / */ + path = strdup(url_path + (FILE_SCHEME_PREFIX_LEN - 1)); + } + curl_free(url_path); + + return path; +} + /** * Locate a shared resource file by searching known places in order. * diff --git a/windows/misc.c b/windows/misc.c index 002297665..7a6fc3206 100644 --- a/windows/misc.c +++ b/windows/misc.c @@ -46,11 +46,6 @@ bool cookies_update(const char *domain, const struct cookie_data *data) return true; } -char *url_to_path(const char *url) -{ - return strdup(url + 5); -} - /** * Return the filename part of a full path * -- cgit v1.2.1