From 35bc2ccbb89a6b499e0e3b6f7095afea214f0c59 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Sun, 5 May 2019 22:46:40 +0100 Subject: [PATCH] change content get_source_data interfaces to return uint8_t and size_t previously these interfaces returned char * and unsigned int which was undesirable. --- content/content.c | 14 ++--- content/content_protected.h | 7 ++- content/handlers/css/css.c | 13 ++-- content/handlers/html/html.c | 6 +- content/handlers/html/html_script.c | 12 ++-- content/handlers/image/bmp.c | 4 +- content/handlers/image/gif.c | 4 +- content/handlers/image/ico.c | 4 +- content/handlers/image/jpeg.c | 10 +-- content/handlers/image/nssprite.c | 4 +- content/handlers/image/png.c | 10 +-- content/handlers/image/rsvg.c | 6 +- content/handlers/image/svg.c | 17 ++--- content/handlers/image/webp.c | 8 +-- content/handlers/javascript/duktape/dukky.c | 15 ++++- content/handlers/javascript/js.h | 2 +- content/handlers/javascript/none/none.c | 2 +- content/handlers/text/textplain.c | 8 ++- desktop/save_complete.c | 65 ++++++++++++-------- frontends/amiga/arexx.c | 8 ++- frontends/amiga/clipboard.c | 21 ++++--- frontends/amiga/dt_anim.c | 6 +- frontends/amiga/dt_picture.c | 12 ++-- frontends/amiga/dt_sound.c | 6 +- frontends/amiga/file.c | 21 ++++--- frontends/amiga/iff_dr2d.c | 21 ++++--- frontends/gtk/viewsource.c | 9 +-- frontends/riscos/content-handlers/artworks.c | 32 +++++----- frontends/riscos/content-handlers/draw.c | 8 +-- frontends/riscos/content-handlers/sprite.c | 7 ++- frontends/riscos/gui.c | 4 +- frontends/riscos/save.c | 8 +-- frontends/riscos/theme_install.c | 61 +++++++++--------- include/netsurf/content.h | 2 +- 34 files changed, 240 insertions(+), 197 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 . */ -/** \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; } diff --git a/desktop/save_complete.c b/desktop/save_complete.c index ef794d4d7..c6f311acb 100644 --- a/desktop/save_complete.c +++ b/desktop/save_complete.c @@ -152,9 +152,12 @@ static bool save_complete_ctx_has_content(save_complete_ctx *ctx, return false; } -static bool save_complete_save_buffer(save_complete_ctx *ctx, - const char *leafname, const char *data, size_t data_len, - lwc_string *mime_type) +static bool +save_complete_save_buffer(save_complete_ctx *ctx, + const char *leafname, + const uint8_t *data, + size_t data_len, + lwc_string *mime_type) { nserror ret; FILE *fp; @@ -196,14 +199,14 @@ static bool save_complete_save_buffer(save_complete_ctx *ctx, * \param osize updated with the size of the result. * \return converted source, or NULL on out of memory. */ -static char * +static uint8_t * save_complete_rewrite_stylesheet_urls(save_complete_ctx *ctx, - const char *source, - unsigned long size, + const uint8_t *source, + size_t size, const nsurl *base, - unsigned long *osize) + size_t *osize) { - char *rewritten; + uint8_t *rewritten; unsigned long offset = 0; unsigned int imports = 0; nserror error; @@ -231,13 +234,16 @@ save_complete_rewrite_stylesheet_urls(save_complete_ctx *ctx, offset = 0; while (offset < size) { - const char *import_url = NULL; + const uint8_t *import_url = NULL; char *import_url_copy; int import_url_len = 0; nsurl *url = NULL; regmatch_t match[11]; - int m = regexec(&save_complete_import_re, source + offset, - 11, match, 0); + int m = regexec(&save_complete_import_re, + (const char *)source + offset, + 11, + match, + 0); if (m) break; @@ -259,7 +265,8 @@ save_complete_rewrite_stylesheet_urls(save_complete_ctx *ctx, } assert(import_url != NULL); - import_url_copy = strndup(import_url, import_url_len); + import_url_copy = strndup((const char *)import_url, + import_url_len); if (import_url_copy == NULL) { free(rewritten); return NULL; @@ -315,13 +322,13 @@ save_complete_rewrite_stylesheet_urls(save_complete_ctx *ctx, return rewritten; } -static bool save_complete_save_stylesheet(save_complete_ctx *ctx, - hlcache_handle *css) +static bool +save_complete_save_stylesheet(save_complete_ctx *ctx, hlcache_handle *css) { - const char *css_data; - unsigned long css_size; - char *source; - unsigned long source_len; + const uint8_t *css_data; + size_t css_size; + uint8_t *source; + size_t source_len; struct nscss_import *imports; uint32_t import_count; lwc_string *type; @@ -342,8 +349,12 @@ static bool save_complete_save_stylesheet(save_complete_ctx *ctx, return false; css_data = content_get_source_data(css, &css_size); - source = save_complete_rewrite_stylesheet_urls(ctx, css_data, css_size, - hlcache_handle_get_url(css), &source_len); + source = save_complete_rewrite_stylesheet_urls( + ctx, + css_data, + css_size, + hlcache_handle_get_url(css), + &source_len); if (source == NULL) { guit->misc->warning("NoMemory", 0); return false; @@ -408,11 +419,11 @@ static bool save_complete_save_html_stylesheets(save_complete_ctx *ctx, return true; } -static bool save_complete_save_html_object(save_complete_ctx *ctx, - hlcache_handle *obj) +static bool +save_complete_save_html_object(save_complete_ctx *ctx, hlcache_handle *obj) { - const char *obj_data; - unsigned long obj_size; + const uint8_t *obj_data; + size_t obj_size; lwc_string *type; bool result; char filename[32]; @@ -898,13 +909,13 @@ static bool save_complete_handle_element(save_complete_ctx *ctx, } if (content != NULL) { - char *rewritten; - unsigned long len; + uint8_t *rewritten; + size_t len; /* Rewrite @import rules */ rewritten = save_complete_rewrite_stylesheet_urls( ctx, - dom_string_data(content), + (const uint8_t *)dom_string_data(content), dom_string_byte_length(content), ctx->base, &len); diff --git a/frontends/amiga/arexx.c b/frontends/amiga/arexx.c index acb0348fd..5be8a4f2e 100644 --- a/frontends/amiga/arexx.c +++ b/frontends/amiga/arexx.c @@ -346,8 +346,6 @@ RXHOOKF(rx_open) RXHOOKF(rx_save) { BPTR fh = 0; - ULONG source_size; - const char *source_data; struct gui_window *gw = cur_gw; cmd->ac_RC = 0; @@ -361,9 +359,13 @@ RXHOOKF(rx_save) if((fh = FOpen((char *)cmd->ac_ArgList[0], MODE_NEWFILE, 0))) { + const uint8_t *source_data; + size_t source_size; struct hlcache_handle *h = browser_window_get_content(gw->bw); - if((source_data = content_get_source_data(h, &source_size))) + source_data = content_get_source_data(h, &source_size); + if (source_data != NULL) { FWrite(fh, source_data, 1, source_size); + } FClose(fh); SetComment((char *)cmd->ac_ArgList[0], nsurl_access(browser_window_access_url(gw->bw))); diff --git a/frontends/amiga/clipboard.c b/frontends/amiga/clipboard.c index 27b801540..79dda3901 100644 --- a/frontends/amiga/clipboard.c +++ b/frontends/amiga/clipboard.c @@ -349,15 +349,22 @@ bool ami_easy_clipboard_bitmap(struct bitmap *bitmap) #ifdef WITH_NS_SVG bool ami_easy_clipboard_svg(struct hlcache_handle *c) { - const char *source_data; - ULONG source_size; + const uint8_t *source_data; + size_t source_size; - if(ami_mime_compare(c, "svg") == false) return false; - if((source_data = content_get_source_data(c, &source_size)) == NULL) return false; + if (ami_mime_compare(c, "svg") == false) { + return false; + } + source_data = content_get_source_data(c, &source_size); + if (source_data == NULL) { + return false; + } - if(!(OpenIFF(iffh,IFFF_WRITE))) - { - ami_svg_to_dr2d(iffh, source_data, source_size, nsurl_access(hlcache_handle_get_url(c))); + if (!(OpenIFF(iffh,IFFF_WRITE))) { + ami_svg_to_dr2d(iffh, + (const char *)source_data, + source_size, + nsurl_access(hlcache_handle_get_url(c))); CloseIFF(iffh); } diff --git a/frontends/amiga/dt_anim.c b/frontends/amiga/dt_anim.c index bd049206c..8d7e8955c 100644 --- a/frontends/amiga/dt_anim.c +++ b/frontends/amiga/dt_anim.c @@ -167,15 +167,15 @@ bool amiga_dt_anim_convert(struct content *c) amiga_dt_anim_content *plugin = (amiga_dt_anim_content *) c; union content_msg_data msg_data; int width, height; - const uint8 *data; + const uint8_t *data; + size_t size; UBYTE *bm_buffer; - ULONG size; struct BitMapHeader *bmh; unsigned int bm_flags = BITMAP_NEW | BITMAP_OPAQUE; struct adtFrame adt_frame; APTR clut; - data = (uint8 *)content__get_source_data(c, &size); + data = content__get_source_data(c, &size); if((plugin->dto = NewDTObject(NULL, DTA_SourceType, DTST_MEMORY, diff --git a/frontends/amiga/dt_picture.c b/frontends/amiga/dt_picture.c index 88ce1c834..660b2379e 100644 --- a/frontends/amiga/dt_picture.c +++ b/frontends/amiga/dt_picture.c @@ -131,11 +131,11 @@ nserror amiga_dt_picture_create(const content_handler *handler, static Object *amiga_dt_picture_newdtobject(struct amiga_dt_picture_content *adt) { - const uint8 *data; - ULONG size; + const uint8_t *data; + size_t size; if(adt->dto == NULL) { - data = (uint8 *)content__get_source_data((struct content *)adt, &size); + data = content__get_source_data((struct content *)adt, &size); adt->dto = NewDTObject(NULL, DTA_SourceType, DTST_MEMORY, @@ -152,12 +152,12 @@ static Object *amiga_dt_picture_newdtobject(struct amiga_dt_picture_content *adt static char *amiga_dt_picture_datatype(struct content *c) { - const uint8 *data; - ULONG size; + const uint8_t *data; + size_t size; struct DataType *dt; char *filetype = NULL; - data = (uint8 *)content__get_source_data(c, &size); + data = content__get_source_data(c, &size); if((dt = ObtainDataType(DTST_MEMORY, NULL, DTA_SourceAddress, data, diff --git a/frontends/amiga/dt_sound.c b/frontends/amiga/dt_sound.c index f3b365ddb..e0a794fa9 100644 --- a/frontends/amiga/dt_sound.c +++ b/frontends/amiga/dt_sound.c @@ -150,10 +150,10 @@ bool amiga_dt_sound_convert(struct content *c) amiga_dt_sound_content *plugin = (amiga_dt_sound_content *) c; int width = 50, height = 50; - const uint8 *data; - ULONG size; + const uint8_t *data; + size_t size; - data = (uint8 *)content__get_source_data(c, &size); + data = content__get_source_data(c, &size); plugin->dto = NewDTObject(NULL, DTA_SourceType, DTST_MEMORY, diff --git a/frontends/amiga/file.c b/frontends/amiga/file.c index 0fd43781d..845491c78 100644 --- a/frontends/amiga/file.c +++ b/frontends/amiga/file.c @@ -146,8 +146,9 @@ void ami_file_save(int type, char *fname, struct Window *win, struct browser_window *bw) { BPTR lock, fh; - const char *source_data; - ULONG source_size; + const uint8_t *source_data; + char *selection; + size_t source_size; struct bitmap *bm; ami_update_pointer(win, GUI_POINTER_WAIT); @@ -155,7 +156,8 @@ void ami_file_save(int type, char *fname, struct Window *win, if(ami_download_check_overwrite(fname, win, 0)) { switch(type) { case AMINS_SAVE_SOURCE: - if((source_data = content_get_source_data(object, &source_size))) { + source_data = content_get_source_data(object, &source_size); + if(source_data) { BPTR fh; if((fh = FOpen(fname, MODE_NEWFILE,0))) { FWrite(fh, source_data, 1, source_size); @@ -197,12 +199,17 @@ void ami_file_save(int type, char *fname, struct Window *win, break; case AMINS_SAVE_SELECTION: - if((source_data = browser_window_get_selection(bw))) { - if((fh = FOpen(fname, MODE_NEWFILE,0))) { - FWrite(fh, source_data, 1, strlen(source_data)); + selection = browser_window_get_selection(bw); + if(selection) { + fh = FOpen(fname, MODE_NEWFILE,0); + if (fh) { + FWrite(fh, + selection, + 1, + strlen(selection)); FClose(fh); } - free((void *)source_data); + free(selection); } break; } diff --git a/frontends/amiga/iff_dr2d.c b/frontends/amiga/iff_dr2d.c index a4c5855a1..5de1463f0 100644 --- a/frontends/amiga/iff_dr2d.c +++ b/frontends/amiga/iff_dr2d.c @@ -310,22 +310,27 @@ bool ami_svg_to_dr2d(struct IFFHandle *iffh, const char *buffer, bool ami_save_svg(struct hlcache_handle *c,char *filename) { struct IFFHandle *iffh; - const char *source_data; - ULONG source_size; + const uint8_t *source_data; + size_t source_size; - if(!ami_download_check_overwrite(filename, NULL, 0)) return false; + if (!ami_download_check_overwrite(filename, NULL, 0)) return false; - if((iffh = AllocIFF())) { - if((iffh->iff_Stream = Open(filename,MODE_NEWFILE))) { + if ((iffh = AllocIFF())) { + if ((iffh->iff_Stream = Open(filename,MODE_NEWFILE))) { InitIFFasDOS(iffh); } else return false; } - if((OpenIFF(iffh,IFFF_WRITE))) return false; + if ((OpenIFF(iffh,IFFF_WRITE))) return false; - if((source_data = content_get_source_data(c, &source_size))) - ami_svg_to_dr2d(iffh, source_data, source_size, nsurl_access(hlcache_handle_get_url(c))); + source_data = content_get_source_data(c, &source_size); + if (source_data != NULL) { + ami_svg_to_dr2d(iffh, + (const char *)source_data, + source_size, + nsurl_access(hlcache_handle_get_url(c))); + } if(iffh) CloseIFF(iffh); if(iffh->iff_Stream) Close((BPTR)iffh->iff_Stream); diff --git a/frontends/gtk/viewsource.c b/frontends/gtk/viewsource.c index 87ff6976a..7c11862c6 100644 --- a/frontends/gtk/viewsource.c +++ b/frontends/gtk/viewsource.c @@ -34,8 +34,8 @@ nserror nsgtk_viewsource(GtkWindow *parent, struct browser_window *bw) { nserror ret; struct hlcache_handle *hlcontent; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; char *ndata = NULL; size_t ndata_len; char *filename; @@ -67,8 +67,9 @@ nserror nsgtk_viewsource(GtkWindow *parent, struct browser_window *bw) } sprintf(title, "Source of %s - NetSurf", nsurl_access(browser_window_access_url(bw))); - ret = utf8_from_enc(source_data, - content_get_encoding(hlcontent, CONTENT_ENCODING_NORMAL), + ret = utf8_from_enc((const char *)source_data, + content_get_encoding(hlcontent, + CONTENT_ENCODING_NORMAL), source_size, &ndata, &ndata_len); diff --git a/frontends/riscos/content-handlers/artworks.c b/frontends/riscos/content-handlers/artworks.c index 8ec4edcae..fcae271ee 100644 --- a/frontends/riscos/content-handlers/artworks.c +++ b/frontends/riscos/content-handlers/artworks.c @@ -170,8 +170,8 @@ bool artworks_convert(struct content *c) { artworks_content *aw = (artworks_content *) c; union content_msg_data msg_data; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; void *init_workspace; void *init_routine; os_error *error; @@ -224,7 +224,7 @@ bool artworks_convert(struct content *c) source_data = content__get_source_data(c, &source_size); /* initialise (convert file to new format if required) */ - error = awrender_init(&source_data, &source_size, + error = awrender_init((const char **)&source_data, &source_size, init_routine, init_workspace); if (error) { NSLOG(netsurf, INFO, "awrender_init: 0x%x : %s", @@ -313,8 +313,8 @@ bool artworks_redraw(struct content *c, struct content_redraw_data *data, }; artworks_content *aw = (artworks_content *) c; struct awinfo_block info; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; os_error *error; os_trfm matrix; int vals[24]; @@ -389,17 +389,17 @@ bool artworks_redraw(struct content *c, struct content_redraw_data *data, source_data = content__get_source_data(c, &source_size); - error = awrender_render(source_data, - &info, - &matrix, - vals, - &aw->block, - &aw->size, - 110, /* fully anti-aliased */ - 0, - source_size, - aw->render_routine, - aw->render_workspace); + error = awrender_render((const char *)source_data, + &info, + &matrix, + vals, + &aw->block, + &aw->size, + 110, /* fully anti-aliased */ + 0, + source_size, + aw->render_routine, + aw->render_workspace); if (error) { NSLOG(netsurf, INFO, "awrender_render: 0x%x: %s", diff --git a/frontends/riscos/content-handlers/draw.c b/frontends/riscos/content-handlers/draw.c index bb66f9dbb..a436ccee7 100644 --- a/frontends/riscos/content-handlers/draw.c +++ b/frontends/riscos/content-handlers/draw.c @@ -112,8 +112,8 @@ bool draw_convert(struct content *c) { draw_content *draw = (draw_content *) c; union content_msg_data msg_data; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; const void *data; os_box bbox; os_error *error; @@ -180,8 +180,8 @@ bool draw_redraw(struct content *c, struct content_redraw_data *data, { draw_content *draw = (draw_content *) c; os_trfm matrix; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; const void *src_data; os_error *error; diff --git a/frontends/riscos/content-handlers/sprite.c b/frontends/riscos/content-handlers/sprite.c index 3556aa555..650d8e9aa 100644 --- a/frontends/riscos/content-handlers/sprite.c +++ b/frontends/riscos/content-handlers/sprite.c @@ -16,7 +16,8 @@ * along with this program. If not, see . */ -/** \file +/** + * \file * Content for image/x-riscos-sprite (RISC OS implementation). * * No conversion is necessary: we can render RISC OS sprites directly under @@ -112,8 +113,8 @@ bool sprite_convert(struct content *c) os_error *error; int w, h; union content_msg_data msg_data; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; const void *sprite_data; char *title; diff --git a/frontends/riscos/gui.c b/frontends/riscos/gui.c index be1bc8d9a..93bad1638 100644 --- a/frontends/riscos/gui.c +++ b/frontends/riscos/gui.c @@ -1980,8 +1980,8 @@ void ro_gui_view_source(struct hlcache_handle *c) int objtype; bool done = false; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; if (!c) { ro_warn_user("MiscError", "No document source"); diff --git a/frontends/riscos/save.c b/frontends/riscos/save.c index 76ce6d3e5..86797602b 100644 --- a/frontends/riscos/save.c +++ b/frontends/riscos/save.c @@ -908,8 +908,8 @@ static bool ro_gui_save_object_native(struct hlcache_handle *h, char *path) if (file_type == osfile_TYPE_SPRITE || file_type == osfile_TYPE_DRAW) { /* Native sprite or drawfile */ - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; os_error *error; source_data = content_get_source_data(h, &source_size); @@ -960,8 +960,8 @@ static bool ro_gui_save_content(struct hlcache_handle *h, char *path, bool force_overwrite) { os_error *error; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; /* does the user want to check for collisions when saving? */ if (!force_overwrite) { diff --git a/frontends/riscos/theme_install.c b/frontends/riscos/theme_install.c index fbca9e4fa..a235fe471 100644 --- a/frontends/riscos/theme_install.c +++ b/frontends/riscos/theme_install.c @@ -47,8 +47,6 @@ wimp_w dialog_theme_install; static void theme_install_close(wimp_w w); static nserror theme_install_callback(struct hlcache_handle *handle, const hlcache_event *event, void *pw); -static bool theme_install_read(const char *source_data, - unsigned long source_size); /** @@ -79,6 +77,33 @@ void theme_install_start(struct hlcache_handle *c) } +/** + * Fill in theme_install_descriptor from received theme data. + * + * \param source_data received data + * \param source_size size of data + * \return true if data is a correct theme, false on error + * + * If the data is a correct theme, theme_install_descriptor is filled in. + */ + +static bool +theme_install_read(const uint8_t *source_data, size_t source_size) +{ + const void *data = source_data; + + if (source_size < sizeof(struct theme_file_header)) + return false; + if (!ro_gui_theme_read_file_header(&theme_install_descriptor, + (struct theme_file_header *) data)) + return false; + if (source_size - sizeof(struct theme_file_header) != + theme_install_descriptor.compressed_size) + return false; + return true; +} + + /** * Callback for fetchcache() for theme install fetches. */ @@ -90,8 +115,8 @@ nserror theme_install_callback(struct hlcache_handle *handle, case CONTENT_MSG_DONE: { - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; int author_indent = 0; char buffer[256]; @@ -135,30 +160,6 @@ nserror theme_install_callback(struct hlcache_handle *handle, } -/** - * Fill in theme_install_descriptor from received theme data. - * - * \param source_data received data - * \param source_size size of data - * \return true if data is a correct theme, false on error - * - * If the data is a correct theme, theme_install_descriptor is filled in. - */ - -bool theme_install_read(const char *source_data, unsigned long source_size) -{ - const void *data = source_data; - - if (source_size < sizeof(struct theme_file_header)) - return false; - if (!ro_gui_theme_read_file_header(&theme_install_descriptor, - (struct theme_file_header *) data)) - return false; - if (source_size - sizeof(struct theme_file_header) != - theme_install_descriptor.compressed_size) - return false; - return true; -} /** @@ -174,8 +175,8 @@ bool ro_gui_theme_install_apply(wimp_w w) struct theme_descriptor *theme_install; os_error *error; char *fix; - const char *source_data; - unsigned long source_size; + const uint8_t *source_data; + size_t source_size; assert(theme_install_content); diff --git a/include/netsurf/content.h b/include/netsurf/content.h index 5eee59acd..d8adca040 100644 --- a/include/netsurf/content.h +++ b/include/netsurf/content.h @@ -94,7 +94,7 @@ lwc_string *content_get_mime_type(struct hlcache_handle *h); * \param size Pointer to location to receive byte size of source * \return Pointer to source data */ -const char *content_get_source_data(struct hlcache_handle *h, unsigned long *size); +const uint8_t *content_get_source_data(struct hlcache_handle *h, size_t *size); /**