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/form_internal.h"
#include "render/html.h" #include "render/html.h"
#include "render/box.h" #include "render/box.h"
#include "curl/curl.h"
#include "javascript/js.h" #include "javascript/js.h"
#include "desktop/browser_history.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; 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); lwc_string_unref(urlpath);
if (res != NSERROR_OK) { if (res != NSERROR_OK) {
return res; return res;

View File

@ -138,7 +138,9 @@ static nserror atari_nsurl_to_path(struct nsurl *url, char **path_out)
return NSERROR_BAD_PARAMETER; 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); lwc_string_unref(urlpath);
if (res != NSERROR_OK) { if (res != NSERROR_OK) {
return res; return res;

View File

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

View File

@ -33,7 +33,6 @@
#include <assert.h> #include <assert.h>
#include <string.h> #include <string.h>
#include <time.h> #include <time.h>
#include <curl/curl.h>
#include <libwapcaplet/libwapcaplet.h> #include <libwapcaplet/libwapcaplet.h>
#include "oslib/mimemap.h" #include "oslib/mimemap.h"
@ -53,6 +52,7 @@
#include "utils/utf8.h" #include "utils/utf8.h"
#include "utils/utils.h" #include "utils/utils.h"
#include "utils/string.h" #include "utils/string.h"
#include "utils/url.h"
#include "utils/corestrings.h" #include "utils/corestrings.h"
#include "netsurf/download.h" #include "netsurf/download.h"
#include "desktop/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); lwc_string *path = nsurl_get_component(url, NSURL_PATH);
if (path != NULL && lwc_string_length(path) != 0) { if (path != NULL && lwc_string_length(path) != 0) {
char *raw_path; char *raw_path;
raw_path = curl_unescape(lwc_string_data(path), if (url_unescape(lwc_string_data(path),
lwc_string_length(path)); lwc_string_length(path),
if (raw_path != NULL) { &raw_path) == NSERROR_OK) {
ftype = ro_filetype_from_unix_path(raw_path); 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; 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); lwc_string_unref(urlpath);
if (res != NSERROR_OK) { if (res != NSERROR_OK) {
return res; return res;

View File

@ -17,9 +17,7 @@
*/ */
#include <limits.h> #include <limits.h>
#include "utils/inet.h" /* get correct winsock ordering */
#include "utils/config.h"
#include <shlobj.h> #include <shlobj.h>
#include <windows.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; 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); lwc_string_unref(urlpath);
if (res != NSERROR_OK) { if (res != NSERROR_OK) {
return res; return res;

View File

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

View File

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

View File

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

View File

@ -27,8 +27,6 @@
#include <strings.h> #include <strings.h>
#include <time.h> #include <time.h>
#include <curl/curl.h>
#include "utils/errors.h" #include "utils/errors.h"
#include "utils/nsurl.h" #include "utils/nsurl.h"
#include "netsurf/bitmap.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; 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); lwc_string_unref(urlpath);
if (res != NSERROR_OK) { if (res != NSERROR_OK) {
return res; return res;

View File

@ -33,12 +33,12 @@
/* exported interface documented in utils/url.h */ /* 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 *curlstr;
char *retstr; char *retstr;
curlstr = curl_unescape(str, 0); curlstr = curl_unescape(str, length);
if (curlstr == NULL) { if (curlstr == NULL) {
return NSERROR_NOMEM; 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. * Convert an escaped string to plain.
* *
* \param[in] str String to unescape. * \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() * \param[out] result unescaped string owned by caller must be freed with free()
* \return NSERROR_OK on success * \return NSERROR_OK on success
*/ */
nserror url_unescape(const char *str, char **result); nserror url_unescape(const char *str, int length, char **result);
#endif #endif