]> sjero.net Git - wget/commitdiff
[svn] Convert URLs in <form action=...>.
authorhniksic <devnull@localhost>
Thu, 11 Apr 2002 17:51:45 +0000 (10:51 -0700)
committerhniksic <devnull@localhost>
Thu, 11 Apr 2002 17:51:45 +0000 (10:51 -0700)
Published in <sxsit6yf7jo.fsf@florida.arsdigita.de>.

src/ChangeLog
src/html-url.c

index f84d5294e3180ffb3b43d32ef39b9dbf59bb3ea6..56713018992a87e7f12b9febd32d7f2aec206c70 100644 (file)
@@ -1,3 +1,8 @@
+2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * html-url.c (tag_handle_form): New function.  Pick up form
+       actions and mark them for conversion only.
+
 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
 
        * progress.c (struct progress_implementation): Use PARAMS when
index fdafe0f1c46d19caf92f136f38f40da80fd87825..11789e59f017561f966b989a2a1d731b76d12c55 100644 (file)
@@ -48,6 +48,7 @@ typedef void (*tag_handler_t) PARAMS ((int, struct taginfo *,
 
 DECLARE_TAG_HANDLER (tag_find_urls);
 DECLARE_TAG_HANDLER (tag_handle_base);
+DECLARE_TAG_HANDLER (tag_handle_form);
 DECLARE_TAG_HANDLER (tag_handle_link);
 DECLARE_TAG_HANDLER (tag_handle_meta);
 
@@ -73,29 +74,31 @@ static struct {
   { "embed",   tag_find_urls },
 #define TAG_FIG                7
   { "fig",     tag_find_urls },
-#define TAG_FRAME      8
+#define TAG_FORM       8
+  { "form",    tag_handle_form },
+#define TAG_FRAME      9
   { "frame",   tag_find_urls },
-#define TAG_IFRAME     9
+#define TAG_IFRAME     10
   { "iframe",  tag_find_urls },
-#define TAG_IMG                10
+#define TAG_IMG                11
   { "img",     tag_find_urls },
-#define TAG_INPUT      11
+#define TAG_INPUT      12
   { "input",   tag_find_urls },
-#define TAG_LAYER      12
+#define TAG_LAYER      13
   { "layer",   tag_find_urls },
-#define TAG_LINK       13
+#define TAG_LINK       14
   { "link",    tag_handle_link },
-#define TAG_META       14
+#define TAG_META       15
   { "meta",    tag_handle_meta },
-#define TAG_OVERLAY    15
+#define TAG_OVERLAY    16
   { "overlay", tag_find_urls },
-#define TAG_SCRIPT     16
+#define TAG_SCRIPT     17
   { "script",  tag_find_urls },
-#define TAG_TABLE      17
+#define TAG_TABLE      18
   { "table",   tag_find_urls },
-#define TAG_TD         18
+#define TAG_TD         19
   { "td",      tag_find_urls },
-#define TAG_TH         19
+#define TAG_TH         20
   { "th",      tag_find_urls }
 };
 
@@ -141,10 +144,11 @@ static struct {
    from the information above.  However, some places in the code refer
    to the attributes not mentioned here.  We add them manually.  */
 static const char *additional_attributes[] = {
-  "rel",                       /* for TAG_LINK */
-  "http-equiv",                        /* for TAG_META */
-  "name",                      /* for TAG_META */
-  "content"                    /* for TAG_META */
+  "rel",                       /* used by tag_handle_link */
+  "http-equiv",                        /* used by tag_handle_meta */
+  "name",                      /* used by tag_handle_meta */
+  "content",                   /* used by tag_handle_meta */
+  "action"                     /* used by tag_handle_form */
 };
 
 static const char **interesting_tags;
@@ -475,6 +479,22 @@ tag_handle_base (int tagid, struct taginfo *tag, struct map_context *ctx)
     ctx->base = xstrdup (newbase);
 }
 
+/* Mark the URL found in <form action=...> for conversion. */
+
+static void
+tag_handle_form (int tagid, struct taginfo *tag, struct map_context *ctx)
+{
+  int attrind;
+  char *action = find_attr (tag, "action", &attrind);
+  if (action)
+    {
+      struct urlpos *action_urlpos = append_one_url (action, 0, tag,
+                                                    attrind, ctx);
+      if (action_urlpos)
+       action_urlpos->ignore_when_downloading = 1;
+    }
+}
+
 /* Handle the LINK tag.  It requires special handling because how its
    links will be followed in -p mode depends on the REL attribute.  */