diff options
Diffstat (limited to '')
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | etc.c | 15 | ||||
-rw-r--r-- | file.c | 27 |
3 files changed, 45 insertions, 7 deletions
@@ -1,5 +1,13 @@ 2002-11-28 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> + * [w3m-dev 03496] parse <!-- ... --> in <script> + * etc.c (read_token): check <pre> + * file.c (HTMLlineproc0): remove comment processing + check pre mode + comment processing move + +2002-11-28 Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> + * [w3m-dev 03495] local CGI can't work * local.c: #include "hash.h" (set_environ): env string put in hash @@ -5226,4 +5234,4 @@ a * [w3m-dev 03276] compile error on EWS4800 * release-0-2-1 * import w3m-0.2.1 -$Id: ChangeLog,v 1.568 2002/11/27 16:35:18 ukai Exp $ +$Id: ChangeLog,v 1.569 2002/11/27 16:39:13 ukai Exp $ @@ -1,4 +1,4 @@ -/* $Id: etc.c,v 1.40 2002/11/24 16:02:22 ukai Exp $ */ +/* $Id: etc.c,v 1.41 2002/11/27 16:39:17 ukai Exp $ */ #include "fm.h" #include <pwd.h> #include "myctype.h" @@ -755,8 +755,10 @@ read_token(Str buf, char **instr, int *status, int pre, int append) } if (prev_status == R_ST_NCMNT2 || prev_status == R_ST_NCMNT3 || prev_status == R_ST_IRRTAG || prev_status == R_ST_CMNT1) { - if (prev_status == R_ST_CMNT1 && !append) + if (prev_status == R_ST_CMNT1 && !append && !pre) Strclear(buf); + if (pre) + Strcat_char(buf, *p); p++; goto proc_end; } @@ -779,7 +781,10 @@ read_token(Str buf, char **instr, int *status, int pre, int append) } if (*status == R_ST_TAG0 && !REALLY_THE_BEGINNING_OF_A_TAG(p)) { /* it seems that this '<' is not a beginning of a tag */ +/* Strcat_charp(buf, "<"); +*/ + Strcat_char(buf, '<'); *status = R_ST_NORMAL; } else @@ -793,7 +798,9 @@ read_token(Str buf, char **instr, int *status, int pre, int append) break; case R_ST_CMNT: case R_ST_IRRTAG: - if (!append) + if (pre) + Strcat_char(buf, *p); + else if (!append) Strclear(buf); break; case R_ST_CMNT1: @@ -802,6 +809,8 @@ read_token(Str buf, char **instr, int *status, int pre, int append) case R_ST_NCMNT2: case R_ST_NCMNT3: /* do nothing */ + if (pre) + Strcat_char(buf, *p); break; } } @@ -1,4 +1,4 @@ -/* $Id: file.c,v 1.132 2002/11/26 18:03:24 ukai Exp $ */ +/* $Id: file.c,v 1.133 2002/11/27 16:39:18 ukai Exp $ */ #include "fm.h" #include <sys/types.h> #include "myctype.h" @@ -5421,6 +5421,7 @@ HTMLlineproc0(char *str, struct html_feed_environ *h_env, int internal) fclose(f); } +#if 0 /* comment processing */ if (obuf->status == R_ST_CMNT || obuf->status == R_ST_NCMNT3 || obuf->status == R_ST_IRRTAG) { @@ -5431,6 +5432,7 @@ HTMLlineproc0(char *str, struct html_feed_environ *h_env, int internal) if (obuf->status != R_ST_NORMAL) return; } +#endif tokbuf = Strnew(); @@ -5444,13 +5446,25 @@ HTMLlineproc0(char *str, struct html_feed_environ *h_env, int internal) while (*str != '\0') { int is_tag = FALSE; + int pre_mode = (obuf->table_level >= 0) ? + tbl_mode->pre_mode & TBLM_PLAIN : + obuf->flag & RB_PLAINMODE; if (obuf->flag & RB_PLAIN) goto read_as_plain; /* don't process tag */ + if (ST_IS_COMMENT(obuf->status)) { + read_token(h_env->tagbuf, &str, &obuf->status, pre_mode, 1); + if (obuf->status != R_ST_NORMAL) + return; + if (pre_mode) { + is_tag = TRUE; + q = h_env->tagbuf->ptr; + goto read_as_pre_mode; + } + continue; + } if (*str == '<' || ST_IS_TAG(obuf->status)) { - int pre_mode = (obuf->table_level >= 0) ? - tbl_mode->pre_mode & TBLM_PLAIN : obuf->flag & RB_PLAINMODE; /* * Tag processing */ @@ -5462,12 +5476,15 @@ HTMLlineproc0(char *str, struct html_feed_environ *h_env, int internal) if (!REALLY_THE_BEGINNING_OF_A_TAG(str)) { /* this is NOT a beginning of a tag */ obuf->status = R_ST_NORMAL; + if (pre_mode) + goto read_as_pre_mode; HTMLlineproc1("<", h_env); str++; continue; } read_token(h_env->tagbuf, &str, &obuf->status, pre_mode, 0); } +#if 0 if (ST_IS_COMMENT(obuf->status)) { if ((obuf->table_level >= 0) ? tbl_mode->pre_mode & TBLM_IGNORE : obuf->flag & RB_IGNORE) @@ -5476,6 +5493,7 @@ HTMLlineproc0(char *str, struct html_feed_environ *h_env, int internal) obuf->status = R_ST_NORMAL; return; } +#endif if (h_env->tagbuf->length == 0) continue; if (obuf->status != R_ST_NORMAL) { @@ -5501,6 +5519,7 @@ HTMLlineproc0(char *str, struct html_feed_environ *h_env, int internal) q = h_env->tagbuf->ptr; } + read_as_pre_mode: if (obuf->flag & (RB_INTXTA | RB_INSELECT | RB_IGNORE)) { cmd = HTML_UNKNOWN; if (!is_tag) { @@ -5519,6 +5538,8 @@ HTMLlineproc0(char *str, struct html_feed_environ *h_env, int internal) if (obuf->flag & RB_INTXTA) { if (cmd == HTML_N_TEXTAREA) goto proc_normal; + if (is_tag) + continue; feed_textarea(q); } else if (obuf->flag & RB_INSELECT) { |