[PATCH] * src/html-url.c: Parse <source srcset> attributes
"blankie" via Primary discussion list for GNU Wget <[email protected]> Mon, 01 Jan 2024 23:56:41 +1100
| Newsgroups | gmane.comp.web.wget.general |
|---|---|
| Message-ID | <[email protected]> |
Hello, Attached is a patch to fix https://savannah.gnu.org/bugs/?55087. This patch is slightly hacky (<source srcset> in a media element is allowed), but the code as-is also allows for <source src> in a <picture> and <source> outside of a <picture> or media element.
0001-src-html-url.c-Parse-source-srcset-attributes.patch
(text/x-patch, 2.8 KB)
From 1d51ad4f18b325c659073a55fc3fffa5bdd3f72f Mon Sep 17 00:00:00 2001 From: blankie <[email protected]> Date: Mon, 1 Jan 2024 23:27:49 +1100 Subject: [PATCH] * src/html-url.c: Parse <source srcset> attributes Bug-Id: 55087 --- src/html-url.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/html-url.c b/src/html-url.c index 896d6fc4..275a7740 100644 --- a/src/html-url.c +++ b/src/html-url.c @@ -55,7 +55,7 @@ typedef void (*tag_handler_t) (int, struct taginfo *, struct map_context *); DECLARE_TAG_HANDLER (tag_find_urls); DECLARE_TAG_HANDLER (tag_handle_base); DECLARE_TAG_HANDLER (tag_handle_form); -DECLARE_TAG_HANDLER (tag_handle_img); +DECLARE_TAG_HANDLER (tag_handle_img_and_source); DECLARE_TAG_HANDLER (tag_handle_link); DECLARE_TAG_HANDLER (tag_handle_meta); @@ -105,7 +105,7 @@ static struct known_tag { { TAG_FORM, "form", tag_handle_form }, { TAG_FRAME, "frame", tag_find_urls }, { TAG_IFRAME, "iframe", tag_find_urls }, - { TAG_IMG, "img", tag_handle_img }, + { TAG_IMG, "img", tag_handle_img_and_source }, { TAG_INPUT, "input", tag_find_urls }, { TAG_LAYER, "layer", tag_find_urls }, { TAG_LINK, "link", tag_handle_link }, @@ -118,7 +118,7 @@ static struct known_tag { { TAG_TH, "th", tag_find_urls }, { TAG_VIDEO, "video", tag_find_urls }, { TAG_AUDIO, "audio", tag_find_urls }, - { TAG_SOURCE, "source", tag_find_urls } + { TAG_SOURCE, "source", tag_handle_img_and_source } }; /* tag_url_attributes documents which attributes of which tags contain @@ -184,7 +184,7 @@ static const char *additional_attributes[] = { "content", /* used by tag_handle_meta */ "action", /* used by tag_handle_form */ "style", /* used by check_style_attr */ - "srcset", /* used by tag_handle_img */ + "srcset", /* used by tag_handle_img_and_source */ }; static struct hash_table *interesting_tags; @@ -679,12 +679,15 @@ tag_handle_meta (int tagid _GL_UNUSED, struct taginfo *tag, struct map_context * } } -/* Handle the IMG tag. This requires special handling for the srcset attr, - while the traditional src/lowsrc/href attributes can be handled generically. +/* Handle the IMG and SOURCE tags. These require special handling for the + srcset attr, while the traditional src/lowsrc/href attributes can be + handled generically. */ static void -tag_handle_img (int tagid, struct taginfo *tag, struct map_context *ctx) { +tag_handle_img_and_source (int tagid, struct taginfo *tag, + struct map_context *ctx) +{ int attrind; char *srcset; -- 2.43.0