diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2010-09-11 18:47:36 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2010-09-11 18:47:36 +0000 |
commit | faca1687ceac7c07daf5478071361fe98aa4cafe (patch) | |
tree | c576e41756deed0ae9a1d75aa08e9c3fd0ae61c2 /riscos | |
parent | 4cbb19f2184bc69c408bfffd32b70390f634314c (diff) | |
download | netsurf-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')
-rw-r--r-- | riscos/gui.c | 33 |
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; } |