summaryrefslogtreecommitdiff
path: root/content
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2019-05-05 22:46:40 +0100
committerVincent Sanders <vince@kyllikki.org>2019-05-05 22:50:25 +0100
commit35bc2ccbb89a6b499e0e3b6f7095afea214f0c59 (patch)
treecd494ae1e33ab55d0e644d11eb973ddde4decbb6 /content
parentf966580d22d47ab97bceb2f067fc2b9402af01b7 (diff)
downloadnetsurf-35bc2ccbb89a6b499e0e3b6f7095afea214f0c59.tar.gz
netsurf-35bc2ccbb89a6b499e0e3b6f7095afea214f0c59.tar.bz2
change content get_source_data interfaces to return uint8_t and size_t
previously these interfaces returned char * and unsigned int which was undesirable.
Diffstat (limited to 'content')
-rw-r--r--content/content.c14
-rw-r--r--content/content_protected.h7
-rw-r--r--content/handlers/css/css.c13
-rw-r--r--content/handlers/html/html.c6
-rw-r--r--content/handlers/html/html_script.c12
-rw-r--r--content/handlers/image/bmp.c4
-rw-r--r--content/handlers/image/gif.c4
-rw-r--r--content/handlers/image/ico.c4
-rw-r--r--content/handlers/image/jpeg.c10
-rw-r--r--content/handlers/image/nssprite.c4
-rw-r--r--content/handlers/image/png.c10
-rw-r--r--content/handlers/image/rsvg.c6
-rw-r--r--content/handlers/image/svg.c17
-rw-r--r--content/handlers/image/webp.c8
-rw-r--r--content/handlers/javascript/duktape/dukky.c15
-rw-r--r--content/handlers/javascript/js.h2
-rw-r--r--content/handlers/javascript/none/none.c2
-rw-r--r--content/handlers/text/textplain.c8
18 files changed, 77 insertions, 69 deletions
diff --git a/content/content.c b/content/content.c
index bb5c47b33..3a5628096 100644
--- a/content/content.c
+++ b/content/content.c
@@ -1239,27 +1239,21 @@ int content__get_available_width(struct content *c)
/* exported interface documented in content/content.h */
-const char *content_get_source_data(hlcache_handle *h, unsigned long *size)
+const uint8_t *content_get_source_data(hlcache_handle *h, size_t *size)
{
return content__get_source_data(hlcache_handle_get_content(h), size);
}
/* exported interface documented in content/content_protected.h */
-const char *content__get_source_data(struct content *c, unsigned long *size)
+const uint8_t *content__get_source_data(struct content *c, size_t *size)
{
- const uint8_t *data;
- size_t len;
-
assert(size != NULL);
+ /** \todo check if the content check should be an assert */
if (c == NULL)
return NULL;
- data = llcache_handle_get_source_data(c->llcache, &len);
-
- *size = (unsigned long) len;
-
- return (const char *) data;
+ return llcache_handle_get_source_data(c->llcache, size);
}
/* exported interface documented in content/content.h */
diff --git a/content/content_protected.h b/content/content_protected.h
index 99a05cf49..0101790d1 100644
--- a/content/content_protected.h
+++ b/content/content_protected.h
@@ -17,8 +17,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-/** \file
- * Content handling (interface).
+/**
+ * \file
+ * Protected interface to Content handling.
*
* The content functions manipulate struct contents, which correspond to URLs.
*/
@@ -255,7 +256,7 @@ int content__get_available_width(struct content *c);
* \param size Pointer to location to receive byte size of source.
* \return Pointer to source data.
*/
-const char *content__get_source_data(struct content *c, unsigned long *size);
+const uint8_t *content__get_source_data(struct content *c, size_t *size);
/**
* Invalidate content reuse data.
diff --git a/content/handlers/css/css.c b/content/handlers/css/css.c
index dda044d15..0dcbe9907 100644
--- a/content/handlers/css/css.c
+++ b/content/handlers/css/css.c
@@ -80,8 +80,6 @@ typedef struct {
* imports array */
} nscss_import_ctx;
-static bool nscss_process_data(struct content *c, const char *data,
- unsigned int size);
static bool nscss_convert(struct content *c);
static void nscss_destroy(struct content *c);
static nserror nscss_clone(const struct content *old, struct content **newc);
@@ -245,7 +243,8 @@ static nserror nscss_create_css_data(struct content_css_data *c,
* \param size Number of bytes to process
* \return true on success, false on failure
*/
-bool nscss_process_data(struct content *c, const char *data, unsigned int size)
+static bool
+nscss_process_data(struct content *c, const char *data, unsigned int size)
{
nscss_content *css = (nscss_content *) c;
css_error error;
@@ -374,8 +373,8 @@ nserror nscss_clone(const struct content *old, struct content **newc)
{
const nscss_content *old_css = (const nscss_content *) old;
nscss_content *new_css;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
nserror error;
new_css = calloc(1, sizeof(nscss_content));
@@ -402,7 +401,9 @@ nserror nscss_clone(const struct content *old, struct content **newc)
data = content__get_source_data(&new_css->base, &size);
if (size > 0) {
- if (nscss_process_data(&new_css->base, data, size) == false) {
+ if (nscss_process_data(&new_css->base,
+ (char *)data,
+ (unsigned int)size) == false) {
content_destroy(&new_css->base);
return NSERROR_CLONE_FAILED;
}
diff --git a/content/handlers/html/html.c b/content/handlers/html/html.c
index 4ffdb396a..a7fea6dfe 100644
--- a/content/handlers/html/html.c
+++ b/content/handlers/html/html.c
@@ -1114,8 +1114,8 @@ html_process_encoding_change(struct content *c,
dom_hubbub_parser_params parse_params;
dom_hubbub_error error;
const char *encoding;
- const char *source_data;
- unsigned long source_size;
+ const uint8_t *source_data;
+ size_t source_size;
/* Retrieve new encoding */
encoding = dom_hubbub_parser_get_encoding(html->parser,
@@ -1181,7 +1181,7 @@ html_process_encoding_change(struct content *c,
* it cannot be changed again.
*/
error = dom_hubbub_parser_parse_chunk(html->parser,
- (const uint8_t *)source_data,
+ source_data,
source_size);
return libdom_hubbub_error_to_nserror(error);
diff --git a/content/handlers/html/html_script.c b/content/handlers/html/html_script.c
index 1affb767c..203dc5089 100644
--- a/content/handlers/html/html_script.c
+++ b/content/handlers/html/html_script.c
@@ -42,7 +42,7 @@
#include "html/html.h"
#include "html/html_internal.h"
-typedef bool (script_handler_t)(struct jscontext *jscontext, const char *data, size_t size, const char *name);
+typedef bool (script_handler_t)(struct jscontext *jscontext, const uint8_t *data, size_t size, const char *name);
static script_handler_t *select_script_handler(content_type ctype)
@@ -90,8 +90,8 @@ nserror html_script_exec(html_content *c, bool allow_defer)
if (content_get_status(s->data.handle) ==
CONTENT_STATUS_DONE) {
/* external script is now available */
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
data = content_get_source_data(
s->data.handle, &size );
script_handler(c->jscontext, data, size,
@@ -305,8 +305,8 @@ convert_script_sync_cb(hlcache_handle *script,
script_handler = select_script_handler(content_get_type(s->data.handle));
if (script_handler != NULL && parent->jscontext != NULL) {
/* script has a handler */
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
data = content_get_source_data(s->data.handle, &size );
script_handler(parent->jscontext, data, size,
nsurl_access(hlcache_handle_get_url(s->data.handle)));
@@ -532,7 +532,7 @@ exec_inline_script(html_content *c, dom_node *node, dom_string *mimetype)
if (script_handler != NULL) {
script_handler(c->jscontext,
- dom_string_data(script),
+ (const uint8_t *)dom_string_data(script),
dom_string_byte_length(script),
"?inline script?");
}
diff --git a/content/handlers/image/bmp.c b/content/handlers/image/bmp.c
index 48a37fb24..75d8880f3 100644
--- a/content/handlers/image/bmp.c
+++ b/content/handlers/image/bmp.c
@@ -122,8 +122,8 @@ static bool nsbmp_convert(struct content *c)
nsbmp_content *bmp = (nsbmp_content *) c;
bmp_result res;
uint32_t swidth;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
char *title;
/* set the bmp data */
diff --git a/content/handlers/image/gif.c b/content/handlers/image/gif.c
index 253265caa..ee85a6309 100644
--- a/content/handlers/image/gif.c
+++ b/content/handlers/image/gif.c
@@ -236,8 +236,8 @@ static bool nsgif_convert(struct content *c)
{
nsgif_content *gif = (nsgif_content *) c;
int res;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
char *title;
/* Get the animation */
diff --git a/content/handlers/image/ico.c b/content/handlers/image/ico.c
index 85aab9f64..467533376 100644
--- a/content/handlers/image/ico.c
+++ b/content/handlers/image/ico.c
@@ -120,8 +120,8 @@ static bool nsico_convert(struct content *c)
nsico_content *ico = (nsico_content *) c;
struct bmp_image *bmp;
bmp_result res;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
char *title;
/* set the ico data */
diff --git a/content/handlers/image/jpeg.c b/content/handlers/image/jpeg.c
index e2f5f8f26..52cdb2201 100644
--- a/content/handlers/image/jpeg.c
+++ b/content/handlers/image/jpeg.c
@@ -168,8 +168,8 @@ static void nsjpeg_error_exit(j_common_ptr cinfo)
static struct bitmap *
jpeg_cache_convert(struct content *c)
{
- uint8_t *source_data; /* Jpeg source data */
- unsigned long source_size; /* length of Jpeg source data */
+ const uint8_t *source_data; /* Jpeg source data */
+ size_t source_size; /* length of Jpeg source data */
struct jpeg_decompress_struct cinfo;
struct jpeg_error_mgr jerr;
jmp_buf setjmp_buffer;
@@ -188,7 +188,7 @@ jpeg_cache_convert(struct content *c)
nsjpeg_term_source };
/* obtain jpeg source data and perfom minimal sanity checks */
- source_data = (uint8_t *)content__get_source_data(c, &source_size);
+ source_data = content__get_source_data(c, &source_size);
if ((source_data == NULL) ||
(source_size < MIN_JPEG_SIZE)) {
@@ -315,8 +315,8 @@ static bool nsjpeg_convert(struct content *c)
nsjpeg_skip_input_data, jpeg_resync_to_restart,
nsjpeg_term_source };
union content_msg_data msg_data;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
char *title;
/* check image header is valid and get width/height */
diff --git a/content/handlers/image/nssprite.c b/content/handlers/image/nssprite.c
index 269c24356..916bcbd34 100644
--- a/content/handlers/image/nssprite.c
+++ b/content/handlers/image/nssprite.c
@@ -98,8 +98,8 @@ static bool nssprite_convert(struct content *c)
struct rosprite_mem_context* ctx = NULL;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
char *title;
data = content__get_source_data(c, &size);
diff --git a/content/handlers/image/png.c b/content/handlers/image/png.c
index 7a4ce3010..841d5de52 100644
--- a/content/handlers/image/png.c
+++ b/content/handlers/image/png.c
@@ -367,8 +367,8 @@ static bool nspng_process_data(struct content *c, const char *data,
}
struct png_cache_read_data_s {
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
};
/** PNG library read fucntion to read data from a memory array
@@ -551,8 +551,8 @@ static nserror nspng_clone(const struct content *old_c, struct content **new_c)
{
nspng_content *clone_png_c;
nserror error;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
clone_png_c = calloc(1, sizeof(nspng_content));
if (clone_png_c == NULL)
@@ -573,7 +573,7 @@ static nserror nspng_clone(const struct content *old_c, struct content **new_c)
data = content__get_source_data(&clone_png_c->base, &size);
if (size > 0) {
- if (nspng_process_data(&clone_png_c->base, data, size) == false) {
+ if (nspng_process_data(&clone_png_c->base, (const char *)data, size) == false) {
content_destroy(&clone_png_c->base);
return NSERROR_NOMEM;
}
diff --git a/content/handlers/image/rsvg.c b/content/handlers/image/rsvg.c
index 2ba1b49f5..ee7373795 100644
--- a/content/handlers/image/rsvg.c
+++ b/content/handlers/image/rsvg.c
@@ -262,8 +262,8 @@ static nserror rsvg_clone(const struct content *old, struct content **newc)
{
rsvg_content *svg;
nserror error;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
svg = calloc(1, sizeof(rsvg_content));
if (svg == NULL)
@@ -284,7 +284,7 @@ static nserror rsvg_clone(const struct content *old, struct content **newc)
data = content__get_source_data(&svg->base, &size);
if (size > 0) {
- if (rsvg_process_data(&svg->base, data, size) == false) {
+ if (rsvg_process_data(&svg->base, (const char *)data, size) == false) {
content_destroy(&svg->base);
return NSERROR_NOMEM;
}
diff --git a/content/handlers/image/svg.c b/content/handlers/image/svg.c
index 99722495f..3f4e00c89 100644
--- a/content/handlers/image/svg.c
+++ b/content/handlers/image/svg.c
@@ -126,8 +126,8 @@ static bool svg_convert(struct content *c)
static void svg_reformat(struct content *c, int width, int height)
{
svg_content *svg = (svg_content *) c;
- const char *source_data;
- unsigned long source_size;
+ const uint8_t *source_data;
+ size_t source_size;
assert(svg->diagram);
@@ -135,9 +135,12 @@ static void svg_reformat(struct content *c, int width, int height)
if (width != svg->current_width || height != svg->current_height) {
source_data = content__get_source_data(c, &source_size);
- svgtiny_parse(svg->diagram, source_data, source_size,
- nsurl_access(content_get_url(c)),
- width, height);
+ svgtiny_parse(svg->diagram,
+ (const char *)source_data,
+ source_size,
+ nsurl_access(content_get_url(c)),
+ width,
+ height);
svg->current_width = width;
svg->current_height = height;
@@ -222,7 +225,7 @@ svg_redraw_internal(struct content *c,
return false;
}
}
- }
+ }
#undef BGR
@@ -361,5 +364,3 @@ static const char *svg_types[] = {
CONTENT_FACTORY_REGISTER_TYPES(svg, svg_types, svg_content_handler);
-
-
diff --git a/content/handlers/image/webp.c b/content/handlers/image/webp.c
index 66a86c9f4..cbcb5ce55 100644
--- a/content/handlers/image/webp.c
+++ b/content/handlers/image/webp.c
@@ -88,7 +88,7 @@ static struct bitmap *
webp_cache_convert(struct content *c)
{
const uint8_t *source_data; /* webp source data */
- unsigned long source_size; /* length of webp source data */
+ size_t source_size; /* length of webp source data */
VP8StatusCode webpres;
WebPBitstreamFeatures webpfeatures;
unsigned int bmap_flags;
@@ -97,7 +97,7 @@ webp_cache_convert(struct content *c)
size_t rowstride;
struct bitmap *bitmap = NULL;
- source_data = (uint8_t *)content__get_source_data(c, &source_size);
+ source_data = content__get_source_data(c, &source_size);
webpres = WebPGetFeatures(source_data, source_size, &webpfeatures);
@@ -156,12 +156,12 @@ webp_cache_convert(struct content *c)
static bool webp_convert(struct content *c)
{
int res;
- unsigned long data_size;
const uint8_t* data;
+ size_t data_size;
int width;
int height;
- data = (uint8_t *)content__get_source_data(c, &data_size);
+ data = content__get_source_data(c, &data_size);
res = WebPGetInfo(data, data_size, &width, &height);
if (res == 0) {
diff --git a/content/handlers/javascript/duktape/dukky.c b/content/handlers/javascript/duktape/dukky.c
index d1bd4ec49..e9e579d4d 100644
--- a/content/handlers/javascript/duktape/dukky.c
+++ b/content/handlers/javascript/duktape/dukky.c
@@ -761,10 +761,16 @@ void dukky_push_generics(duk_context *ctx, const char *generic)
/* ..., generic */
}
-bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name)
+/* exported interface documented in js.h */
+bool
+js_exec(jscontext *ctx, const uint8_t *txt, size_t txtlen, const char *name)
{
assert(ctx);
- if (txt == NULL || txtlen == 0) return false;
+
+ if (txt == NULL || txtlen == 0) {
+ return false;
+ }
+
duk_set_top(CTX, 0);
NSLOG(dukky, DEEPDEBUG, "Running %"PRIsizet" bytes from %s", txtlen, name);
/* NSLOG(dukky, DEEPDEBUG, "\n%s\n", txt); */
@@ -775,7 +781,10 @@ bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name)
} else {
duk_push_string(CTX, "?unknown source?");
}
- if (duk_pcompile_lstring_filename(CTX, DUK_COMPILE_EVAL, txt, txtlen) != 0) {
+ if (duk_pcompile_lstring_filename(CTX,
+ DUK_COMPILE_EVAL,
+ (const char *)txt,
+ txtlen) != 0) {
NSLOG(dukky, INFO, "Failed to compile JavaScript input");
goto handle_error;
}
diff --git a/content/handlers/javascript/js.h b/content/handlers/javascript/js.h
index 89a87afe3..31ab8f766 100644
--- a/content/handlers/javascript/js.h
+++ b/content/handlers/javascript/js.h
@@ -67,7 +67,7 @@ void js_destroycontext(jscontext *ctx);
jsobject *js_newcompartment(jscontext *ctx, void *win_priv, void *doc_priv);
/* execute some javascript in a context */
-bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name);
+bool js_exec(jscontext *ctx, const uint8_t *txt, size_t txtlen, const char *name);
/* fire an event at a dom node */
diff --git a/content/handlers/javascript/none/none.c b/content/handlers/javascript/none/none.c
index e1c992ebf..80a9ce49c 100644
--- a/content/handlers/javascript/none/none.c
+++ b/content/handlers/javascript/none/none.c
@@ -51,7 +51,7 @@ jsobject *js_newcompartment(jscontext *ctx, void *win_priv, void *doc_priv)
return NULL;
}
-bool js_exec(jscontext *ctx, const char *txt, size_t txtlen, const char *name)
+bool js_exec(jscontext *ctx, const uint8_t *txt, size_t txtlen, const char *name)
{
return true;
}
diff --git a/content/handlers/text/textplain.c b/content/handlers/text/textplain.c
index 692ba7ebe..9e9e3e9e0 100644
--- a/content/handlers/text/textplain.c
+++ b/content/handlers/text/textplain.c
@@ -554,8 +554,8 @@ static nserror textplain_clone(const struct content *old, struct content **newc)
const textplain_content *old_text = (textplain_content *) old;
textplain_content *text;
nserror error;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
text = calloc(1, sizeof(textplain_content));
if (text == NULL)
@@ -576,7 +576,9 @@ static nserror textplain_clone(const struct content *old, struct content **newc)
data = content__get_source_data(&text->base, &size);
if (size > 0) {
- if (textplain_process_data(&text->base, data, size) == false) {
+ if (textplain_process_data(&text->base,
+ (const char *)data,
+ size) == false) {
content_destroy(&text->base);
return NSERROR_NOMEM;
}