summaryrefslogtreecommitdiff
path: root/riscos/gui.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2010-09-11 18:47:36 +0000
committerVincent Sanders <vince@netsurf-browser.org>2010-09-11 18:47:36 +0000
commitfaca1687ceac7c07daf5478071361fe98aa4cafe (patch)
treec576e41756deed0ae9a1d75aa08e9c3fd0ae61c2 /riscos/gui.c
parent4cbb19f2184bc69c408bfffd32b70390f634314c (diff)
downloadnetsurf-faca1687ceac7c07daf5478071361fe98aa4cafe.tar.gz
netsurf-faca1687ceac7c07daf5478071361fe98aa4cafe.tar.bz2
hell with it, heres a version which should result in fewer portability complaints
svn path=/trunk/netsurf/; revision=10756
Diffstat (limited to 'riscos/gui.c')
-rw-r--r--riscos/gui.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/riscos/gui.c b/riscos/gui.c
index 5d032f3ef..10f5eaaea 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -2112,32 +2112,41 @@ char *path_to_url(const char *path)
char *url_to_path(const char *url)
{
- char *temp_name, *r;
- char *filename;
+ char *path;
+ char *respath;
+ url_func_result res; /* result from url routines */
+ char *r;
- if (strncmp(url, FILE_SCHEME_PREFIX, FILE_SCHEME_PREFIX_LEN))
+ res = url_path(url, &path);
+ if (res != URL_FUNC_OK) {
+ warn_user("NoMemory", 0);
return NULL;
+ }
- temp_name = curl_unescape(url + 7, strlen(url) - 7);
-
- if (!temp_name) {
- warn_user("NoMemory", 0);
+ res = url_unescape(path, &respath);
+ free(path);
+ if (res != URL_FUNC_OK) {
return NULL;
}
- filename = malloc(strlen(temp_name) + 100);
+ /* RISC OS path should not be more than 100 characters longer */
+ filename = malloc(strlen(respath) + 100);
if (!filename) {
- curl_free(temp_name);
+ free(respath);
warn_user("NoMemory", 0);
return NULL;
}
- r = __riscosify(temp_name, 0, __RISCOSIFY_NO_SUFFIX,
- filename, strlen(temp_name) + 100, 0);
+
+ r = __riscosify(respath, 0, __RISCOSIFY_NO_SUFFIX,
+ filename, strlen(respath) + 100, 0);
+
+ free(respath);
if (r == 0) {
+ free(filename);
LOG(("__riscosify failed"));
return NULL;
}
- curl_free(temp_name);
+
return filename;
}