mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-22 04:02:34 +03:00
reduce curl usage to fetcher, url unescaping and time parsing
This commit is contained in:
parent
c523bb47a0
commit
c313524998
@ -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"
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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>
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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"
|
||||||
|
@ -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) \
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user