aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--file.c38
-rw-r--r--html.c9
3 files changed, 44 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 65502d3..aaebef9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2002-02-07 Hironori Sakamoto <hsaka@mth.biglobe.ne.jp>
+
+ * [w3m-dev 03006] fix form order in table
+ * file.c (process_form): static
+ fix form index order
+ method should be quoted
+ * file.c (process_form): added
+ * file.c (HTMLlineproc2body): add form_id
+ * html.c (ALST_FORM_INT): added
+ * html.c (form_int): update
+
2002-02-07 Fumitoshi UKAI <ukai@debian.or.jp>
* [w3m-dev 03005] fix Bad cert ident
@@ -2854,4 +2865,4 @@
* release-0-2-1
* import w3m-0.2.1
-$Id: ChangeLog,v 1.304 2002/02/06 17:24:14 ukai Exp $
+$Id: ChangeLog,v 1.305 2002/02/07 14:15:59 ukai Exp $
diff --git a/file.c b/file.c
index f2e77d4..c3f6ebc 100644
--- a/file.c
+++ b/file.c
@@ -1,4 +1,4 @@
-/* $Id: file.c,v 1.67 2002/02/06 16:20:25 ukai Exp $ */
+/* $Id: file.c,v 1.68 2002/02/07 14:16:00 ukai Exp $ */
#include "fm.h"
#include <sys/types.h>
#include "myctype.h"
@@ -3593,8 +3593,8 @@ check_accept_charset(char *s)
}
#endif /* JP_CHARSET */
-Str
-process_form(struct parsed_tag *tag)
+static Str
+process_form_int(struct parsed_tag *tag, int fid)
{
char *p, *q, *r, *s, *tg, *n;
char cs = 0;
@@ -3617,8 +3617,16 @@ process_form(struct parsed_tag *tag)
n = NULL;
parsedtag_get_value(tag, ATTR_NAME, &n);
- form_max++;
- form_sp++;
+ if (fid < 0) {
+ form_max++;
+ form_sp++;
+ fid = form_max;
+ }
+ else { /* <form_int> */
+ if (form_max < fid)
+ form_max = fid;
+ form_sp = fid;
+ }
if (forms_size == 0) {
forms_size = INITIAL_FORM_SIZE;
forms = New_N(FormList *, forms_size);
@@ -3629,11 +3637,11 @@ process_form(struct parsed_tag *tag)
forms = New_Reuse(FormList *, forms, forms_size);
form_stack = New_Reuse(int, form_stack, forms_size);
}
- form_stack[form_sp] = form_max;
+ form_stack[form_sp] = fid;
if (w3m_halfdump) {
Str tmp = Sprintf("<form_int fid=\"%d\" action=\"%s\" method=\"%s\"",
- form_max, html_quote(q), p);
+ fid, html_quote(q), html_quote(p));
if (s)
Strcat(tmp, Sprintf(" enctype=\"%s\"", html_quote(s)));
if (tg)
@@ -3648,13 +3656,17 @@ process_form(struct parsed_tag *tag)
return tmp;
}
- forms[form_max] =
- newFormList(q, p, &cs, s, tg, n,
- (form_max > 0) ? forms[form_max - 1] : NULL);
+ forms[fid] = newFormList(q, p, &cs, s, tg, n, NULL);
return NULL;
}
Str
+process_form(struct parsed_tag *tag)
+{
+ return process_form_int(tag, -1);
+}
+
+Str
process_n_form(void)
{
if (form_sp >= 0)
@@ -4578,7 +4590,7 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
int frameset_sp = -1;
union frameset_element *idFrame = NULL;
char *id = NULL;
- int hseq;
+ int hseq, form_id;
Str line;
char *endp;
#ifndef KANJI_SYMBOLS
@@ -4824,13 +4836,13 @@ HTMLlineproc2body(Buffer *buf, Str (*feed) (), int llimit)
{
FormList *form;
int top = 0, bottom = 0;
- int form_id = -1;
int textareanumber = -1;
#ifdef MENU_SELECT
int selectnumber = -1;
#endif
-
hseq = 0;
+ form_id = -1;
+
parsedtag_get_value(tag, ATTR_HSEQ, &hseq);
parsedtag_get_value(tag, ATTR_FID, &form_id);
parsedtag_get_value(tag, ATTR_TOP_MARGIN, &top);
diff --git a/html.c b/html.c
index 09becf6..8c69f90 100644
--- a/html.c
+++ b/html.c
@@ -1,4 +1,4 @@
-/* $Id: html.c,v 1.9 2002/02/05 12:31:27 ukai Exp $ */
+/* $Id: html.c,v 1.10 2002/02/07 14:16:00 ukai Exp $ */
#include "html.h"
/* Define HTML Tag Infomation Table */
@@ -94,6 +94,11 @@ unsigned char ALST_RULE[] = { ATTR_TYPE };
#define MAXA_RULE 1
unsigned char ALST_TITLE_ALT[] = { ATTR_TITLE };
#define MAXA_TITLE_ALT 1
+unsigned char ALST_FORM_INT[] =
+ { ATTR_METHOD, ATTR_ACTION, ATTR_CHARSET, ATTR_ACCEPT_CHARSET,
+ ATTR_ENCTYPE, ATTR_TARGET, ATTR_NAME, ATTR_FID
+};
+#define MAXA_FORM_INT 8
unsigned char ALST_INPUT_ALT[] =
{ ATTR_HSEQ, ATTR_FID, ATTR_NO_EFFECT, ATTR_TYPE, ATTR_NAME, ATTR_VALUE,
ATTR_CHECKED, ATTR_ACCEPT, ATTR_SIZE, ATTR_MAXLENGTH, ATTR_READONLY,
@@ -232,7 +237,7 @@ TagInfo TagMAP[MAX_HTMLTAG] = {
{"pre_int", NULL, 0, TFLG_INT}, /* 116 HTML_PRE_INT */
{"/pre_int", NULL, 0, TFLG_INT | TFLG_END}, /* 117 HTML_N_PRE_INT */
{"title_alt", ALST_TITLE_ALT, MAXA_TITLE_ALT, TFLG_INT}, /* 118 HTML_TITLE_ALT */
- {"form_int", ALST_FORM, MAXA_FORM, TFLG_INT}, /* 119 HTML_FORM_INT */
+ {"form_int", ALST_FORM_INT, MAXA_FORM_INT, TFLG_INT}, /* 119 HTML_FORM_INT */
{"/form_int", NULL, 0, TFLG_INT | TFLG_END}, /* 120 HTML_N_FORM_INT */
{"dl_compact", NULL, 0, TFLG_INT}, /* 121 HTML_DL_COMPACT */
{"input_alt", ALST_INPUT_ALT, MAXA_INPUT_ALT, TFLG_INT}, /* 122 HTML_INPUT_ALT */