[w3m-dev 04129] Re: form の value の改行の扱い
Hideyuki SHIRAI (白井秀行) <[email protected]> Wed, 10 Nov 2004 12:57:14 +0900 (JST)
| Newsgroups | gmane.comp.web.w3m.devel |
|---|---|
| Organization | Resident at Meadowy park. |
| Message-ID | <[email protected]> |
From: Akinori Ito <[email protected]> Subject: [w3m-dev 04126] Re: form value Message-ID: <[email protected]> Date: Fri, 05 Nov 2004 14:40:25 +0900 > > https://bugzilla.mozilla.org/show_bug.cgi?id=15204 #53 > > > > ? > > > Mozilla input type="hidden" value > w3m-dev -- (mailto:[email protected]) --- ../h/parsetagx.c 2004-11-09 03:38:02.000000000 +0900 +++ parsetagx.c 2004-11-09 14:19:22.000000000 +0900 @@ -159,7 +159,7 @@ /* Parse tag arguments */ SKIP_BLANKS(q); while (1) { - Str value = NULL; + Str value = NULL, value_tmp = NULL; if (*q == '>' || *q == '\0') goto done_parse_tag; p = attrname; @@ -174,14 +174,13 @@ SKIP_BLANKS(q); if (*q == '=') { /* get value */ - value = Strnew(); + value_tmp = Strnew(); q++; SKIP_BLANKS(q); if (*q == '"') { q++; while (*q && *q != '"') { - if (*q != '\n') - Strcat_char(value, *q); + Strcat_char(value_tmp, *q); if (!tag->need_reconstruct && is_html_quote(*q)) tag->need_reconstruct = TRUE; q++; @@ -192,8 +191,7 @@ else if (*q == '\'') { q++; while (*q && *q != '\'') { - if (*q != '\n') - Strcat_char(value, *q); + Strcat_char(value_tmp, *q); if (!tag->need_reconstruct && is_html_quote(*q)) tag->need_reconstruct = TRUE; q++; @@ -203,7 +201,7 @@ } else if (*q) { while (*q && !IS_SPACE(*q) && *q != '>') { - Strcat_char(value, *q); + Strcat_char(value_tmp, *q); if (!tag->need_reconstruct && is_html_quote(*q)) tag->need_reconstruct = TRUE; q++; @@ -218,6 +216,29 @@ break; } } + + if (value_tmp) { + int j, hidden=FALSE; + for (j=0; j<i; j++) { + if (tag->attrid[j] == ATTR_TYPE && + strcmp("hidden",tag->value[j]) == 0) { + hidden=TRUE; + break; + } + } + if ((tag_id == HTML_INPUT || tag_id == HTML_INPUT_ALT) && + attr_id == ATTR_VALUE && hidden) { + value = value_tmp; + } else { + char *x; + value = Strnew(); + for (x = value_tmp->ptr; *x; x++) { + if (*x != '\n') + Strcat_char(value, *x); + } + } + } + if (i != nattr) { if (!internal && ((AttrMAP[attr_id].flag & AFLG_INT) ||