reduce curl usage to fetcher, url unescaping and time parsing

This commit is contained in:
Vincent Sanders 2016-06-29 23:06:53 +01:00
parent c523bb47a0
commit c313524998
15 changed files with 39 additions and 37 deletions

View File

@ -59,7 +59,6 @@
#include "render/form_internal.h"
#include "render/html.h"
#include "render/box.h"
#include "curl/curl.h"
#include "javascript/js.h"
#include "desktop/browser_history.h"

View File

@ -217,7 +217,7 @@ static nserror amiga_nsurl_to_path(struct nsurl *url, char **path_out)
return NSERROR_BAD_PARAMETER;
}
res = url_unescape(lwc_string_data(urlpath) + 1, &path);
res = url_unescape(lwc_string_data(urlpath) + 1, 0, &path);
lwc_string_unref(urlpath);
if (res != NSERROR_OK) {
return res;

View File

@ -138,7 +138,9 @@ static nserror atari_nsurl_to_path(struct nsurl *url, char **path_out)
return NSERROR_BAD_PARAMETER;
}
res = url_unescape(lwc_string_data(urlpath), &path);
res = url_unescape(lwc_string_data(urlpath),
lwc_string_length(urlpath),
&path);
lwc_string_unref(urlpath);
if (res != NSERROR_OK) {
return res;

View File

@ -30,7 +30,6 @@
#include <sys/select.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <curl/curl.h>
#include <Alert.h>
#include <Application.h>
@ -795,12 +794,14 @@ static void gui_quit(void)
static char *url_to_path(const char *url)
{
char *url_path = curl_unescape(url, 0);
char *path;
char *url_path;
char *path = NULL;
if (url_unescape(url, 0, &url_path) == NSERROR_OK) {
/* return the absolute path including leading / */
path = strdup(url_path + (FILE_SCHEME_PREFIX_LEN - 1));
curl_free(url_path);
free(url_path);
}
return path;
}

View File

@ -33,7 +33,6 @@
#include <assert.h>
#include <string.h>
#include <time.h>
#include <curl/curl.h>
#include <libwapcaplet/libwapcaplet.h>
#include "oslib/mimemap.h"
@ -53,6 +52,7 @@
#include "utils/utf8.h"
#include "utils/utils.h"
#include "utils/string.h"
#include "utils/url.h"
#include "utils/corestrings.h"
#include "netsurf/download.h"
#include "desktop/download.h"
@ -239,11 +239,11 @@ static nserror download_ro_filetype(download_context *ctx, bits *ftype_out)
lwc_string *path = nsurl_get_component(url, NSURL_PATH);
if (path != NULL && lwc_string_length(path) != 0) {
char *raw_path;
raw_path = curl_unescape(lwc_string_data(path),
lwc_string_length(path));
if (raw_path != NULL) {
if (url_unescape(lwc_string_data(path),
lwc_string_length(path),
&raw_path) == NSERROR_OK) {
ftype = ro_filetype_from_unix_path(raw_path);
curl_free(raw_path);
free(raw_path);
}
}
}

View File

@ -1513,7 +1513,9 @@ static nserror ro_nsurl_to_path(struct nsurl *url, char **path_out)
return NSERROR_BAD_PARAMETER;
}
res = url_unescape(lwc_string_data(urlpath), &unpath);
res = url_unescape(lwc_string_data(urlpath),
lwc_string_length(urlpath),
&unpath);
lwc_string_unref(urlpath);
if (res != NSERROR_OK) {
return res;

View File

@ -17,9 +17,7 @@
*/
#include <limits.h>
#include "utils/config.h"
#include "utils/inet.h" /* get correct winsock ordering */
#include <shlobj.h>
#include <windows.h>

View File

@ -141,7 +141,9 @@ static nserror windows_nsurl_to_path(struct nsurl *url, char **path_out)
return NSERROR_BAD_PARAMETER;
}
res = url_unescape(lwc_string_data(urlpath), &path);
res = url_unescape(lwc_string_data(urlpath),
lwc_string_length(urlpath),
&path);
lwc_string_unref(urlpath);
if (res != NSERROR_OK) {
return res;

View File

@ -27,9 +27,6 @@
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include "utils/log.h"
#include "utils/url.h"
#include "utils/utils.h"

View File

@ -80,7 +80,7 @@ TESTCFLAGS := -std=c99 -g -Wall \
-D_BSD_SOURCE \
-D_POSIX_C_SOURCE=200809L \
-D_XOPEN_SOURCE=600 \
-Itest -Iinclude -Ifrontends -I. -I.. \
-Itest -Iinclude -Icontent/handlers -Ifrontends -I. -I.. \
-Dnsgtk \
$(shell pkg-config --cflags libcurl libparserutils libwapcaplet libdom libnsutils libutf8proc libidn) \
$(LIB_CFLAGS) \

View File

@ -20,8 +20,6 @@
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>
#include "content/fetch.h"
#include "content/llcache.h"
#include "utils/ring.h"
@ -94,12 +92,14 @@ char *path_to_url(const char *path)
/* utils/url.h */
char *url_to_path(const char *url)
{
char *url_path = curl_unescape(url, 0);
char *path;
char *url_path;
char *path = NULL;
if (url_unescape(url, 0, &url_path) == NSERROR_OK) {
/* return the absolute path including leading / */
path = strdup(url_path + (FILE_SCHEME_PREFIX_LEN - 1));
curl_free(url_path);
free(url_path);
}
return path;
}

View File

@ -27,8 +27,6 @@
#include <strings.h>
#include <time.h>
#include <curl/curl.h>
#include "utils/errors.h"
#include "utils/nsurl.h"
#include "netsurf/bitmap.h"

View File

@ -136,7 +136,9 @@ static nserror posix_nsurl_to_path(struct nsurl *url, char **path_out)
return NSERROR_BAD_PARAMETER;
}
res = url_unescape(lwc_string_data(urlpath), &path);
res = url_unescape(lwc_string_data(urlpath),
lwc_string_length(urlpath),
&path);
lwc_string_unref(urlpath);
if (res != NSERROR_OK) {
return res;

View File

@ -33,12 +33,12 @@
/* exported interface documented in utils/url.h */
nserror url_unescape(const char *str, char **result)
nserror url_unescape(const char *str, int length, char **result)
{
char *curlstr;
char *retstr;
curlstr = curl_unescape(str, 0);
curlstr = curl_unescape(str, length);
if (curlstr == NULL) {
return NSERROR_NOMEM;
}

View File

@ -46,9 +46,10 @@ nserror url_escape(const char *unescaped, size_t toskip, bool sptoplus,
* Convert an escaped string to plain.
*
* \param[in] str String to unescape.
* \parm[in] length Length of string or 0 to use strlen
* \param[out] result unescaped string owned by caller must be freed with free()
* \return NSERROR_OK on success
*/
nserror url_unescape(const char *str, char **result);
nserror url_unescape(const char *str, int length, char **result);
#endif