diff options
| -rw-r--r-- | ChangeLog | 23 | ||||
| -rw-r--r-- | file.c | 76 | ||||
| -rw-r--r-- | html.c | 4 | ||||
| -rw-r--r-- | html.h | 6 | ||||
| -rw-r--r-- | tagtable.tab | 2 | 
5 files changed, 74 insertions, 37 deletions
| @@ -1,5 +1,26 @@  2002-12-10  Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> +	* [w3m-dev 03548] close anchor before <img align=...> +	* file.c (process_img): use div_int +		(process_hr): use div_int +		(process_idattr): don't close_anchor +		(CLOSE_A): added +		(HTMLtagproc1): </p> close anchor +		  <dl>,<ul>,<ol>,<blockquote>,<li>,<dt>,<dd> close anchor +		  <noframes> close anchor +		  <pre> close anchor +		  <center> close anchor +		  <div> close anchor +		  add DIV_INT +		  <form> close anchor +	* html.c (TagMAP): add div_int +	* html.h (HTML_DIV_INT): added +		(HTML_N_DIV_INT): added +	* tagtable.tab (div_int): added +			(/div_int): added + +2002-12-10  Hironori SAKAMOTO <hsaka@mth.biglobe.ne.jp> +  	* [w3m-dev 03544] Can't display "1&2" in table  	* file.c (HTMLlineproc0): continue -> R_ST_NORMAL @@ -5611,4 +5632,4 @@ a	* [w3m-dev 03276] compile error on EWS4800  	* release-0-2-1  	* import w3m-0.2.1 -$Id: ChangeLog,v 1.604 2002/12/09 15:33:33 ukai Exp $ +$Id: ChangeLog,v 1.605 2002/12/09 15:40:34 ukai Exp $ @@ -1,4 +1,4 @@ -/* $Id: file.c,v 1.156 2002/12/09 15:33:34 ukai Exp $ */ +/* $Id: file.c,v 1.157 2002/12/09 15:40:35 ukai Exp $ */  #include "fm.h"  #include <sys/types.h>  #include "myctype.h" @@ -2992,13 +2992,13 @@ process_img(struct parsed_tag *tag, int width)      if (use_image) {  	switch (align) {  	case ALIGN_LEFT: -	    Strcat_charp(tmp, "<div align=left>"); +	    Strcat_charp(tmp, "<div_int align=left>");  	    break;  	case ALIGN_CENTER: -	    Strcat_charp(tmp, "<div align=center>"); +	    Strcat_charp(tmp, "<div_int align=center>");  	    break;  	case ALIGN_RIGHT: -	    Strcat_charp(tmp, "<div align=right>"); +	    Strcat_charp(tmp, "<div_int align=right>");  	    break;  	}      } @@ -3225,7 +3225,7 @@ process_img(struct parsed_tag *tag, int width)  	case ALIGN_RIGHT:  	case ALIGN_CENTER:  	case ALIGN_LEFT: -	    Strcat_charp(tmp, "</div>"); +	    Strcat_charp(tmp, "</div_int>");  	    break;  	}      } @@ -3708,13 +3708,13 @@ process_hr(struct parsed_tag *tag, int width, int indent_width)      parsedtag_get_value(tag, ATTR_ALIGN, &x);      switch (x) {      case ALIGN_CENTER: -	Strcat_charp(tmp, "<div align=center>"); +	Strcat_charp(tmp, "<div_int align=center>");  	break;      case ALIGN_RIGHT: -	Strcat_charp(tmp, "<div align=right>"); +	Strcat_charp(tmp, "<div_int align=right>");  	break;      case ALIGN_LEFT: -	Strcat_charp(tmp, "<div align=left>"); +	Strcat_charp(tmp, "<div_int align=left>");  	break;      }  #ifndef KANJI_SYMBOLS @@ -3729,7 +3729,7 @@ process_hr(struct parsed_tag *tag, int width, int indent_width)  #ifndef KANJI_SYMBOLS      Strcat_charp(tmp, "</_RULE>");  #endif				/* not KANJI_SYMBOLS */ -    Strcat_charp(tmp, "</div></nobr>"); +    Strcat_charp(tmp, "</div_int></nobr>");      return tmp;  } @@ -3924,10 +3924,13 @@ process_idattr(struct readbuffer *obuf, int cmd, struct parsed_tag *tag)  #define CLOSE_P if (obuf->flag & RB_P) { \        flushline(h_env, obuf, envs[h_env->envc].indent,0,h_env->limit);\        RB_RESTORE_FLAG(obuf);\ -      close_anchor(h_env, obuf);\        obuf->flag &= ~RB_P;\      } +#define CLOSE_A \ +    CLOSE_P; \ +    close_anchor(h_env, obuf); +  #define CLOSE_DT \      if (obuf->flag & RB_IN_DT) { \        obuf->flag &= ~RB_IN_DT; \ @@ -4067,7 +4070,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	return 1;      case HTML_P:      case HTML_N_P: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 1, h_env->limit);  	    do_blankline(h_env, obuf, envs[h_env->envc].indent, 0, @@ -4105,7 +4108,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)      case HTML_UL:      case HTML_OL:      case HTML_BLQ: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	    if (!(obuf->flag & RB_PREMODE) && @@ -4134,7 +4137,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)      case HTML_N_DL:      case HTML_N_BLQ:  	CLOSE_DT; -	CLOSE_P; +	CLOSE_A;  	if (h_env->envc > 0) {  	    flushline(h_env, obuf, envs[h_env->envc - 1].indent, 0,  		      h_env->limit); @@ -4150,7 +4153,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	close_anchor(h_env, obuf);  	return 1;      case HTML_DL: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	    if (!(obuf->flag & RB_PREMODE)) @@ -4163,7 +4166,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	obuf->flag |= RB_IGNORE_P;  	return 1;      case HTML_LI: -	CLOSE_P; +	CLOSE_A;  	CLOSE_DT;  	if (h_env->envc > 0) {  	    Str num; @@ -4242,7 +4245,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	obuf->flag |= RB_IGNORE_P;  	return 1;      case HTML_DT: -	CLOSE_P; +	CLOSE_A;  	if (h_env->envc == 0 ||  	    (h_env->envc_real < h_env->nenv &&  	     envs[h_env->envc].env != HTML_DL && @@ -4260,7 +4263,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	obuf->flag |= RB_IGNORE_P;  	return 1;      case HTML_DD: -	CLOSE_P; +	CLOSE_A;  	CLOSE_DT;  	if (envs[h_env->envc].env == HTML_DL_COMPACT) {  	    if (obuf->pos > envs[h_env->envc].indent) @@ -4309,13 +4312,13 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	}  	return 0;      case HTML_NOFRAMES: -	CLOSE_P; +	CLOSE_A;  	flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	obuf->flag |= (RB_NOFRAMES | RB_IGNORE_P);  	/* istr = str; */  	return 1;      case HTML_N_NOFRAMES: -	CLOSE_P; +	CLOSE_A;  	flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	obuf->flag &= ~RB_NOFRAMES;  	return 1; @@ -4342,8 +4345,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	return 1;      case HTML_PRE:  	x = parsedtag_exists(tag, ATTR_FOR_TABLE); -	if (!x) -	    CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	    if (!x) @@ -4353,7 +4355,6 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	else  	    fillline(obuf, envs[h_env->envc].indent);  	obuf->flag |= (RB_PRE | RB_IGNORE_P); -	close_anchor(h_env, obuf);  	/* istr = str; */  	return 1;      case HTML_N_PRE: @@ -4393,17 +4394,16 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	    obuf->flag &= ~RB_NOBR;  	return 0;      case HTML_PRE_PLAIN: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	    do_blankline(h_env, obuf, envs[h_env->envc].indent, 0,  			 h_env->limit);  	}  	obuf->flag |= (RB_PRE | RB_IGNORE_P); -	close_anchor(h_env, obuf);  	return 1;      case HTML_N_PRE_PLAIN: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	    do_blankline(h_env, obuf, envs[h_env->envc].indent, 0, @@ -4415,7 +4415,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)      case HTML_LISTING:      case HTML_XMP:      case HTML_PLAINTEXT: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	    do_blankline(h_env, obuf, envs[h_env->envc].indent, 0, @@ -4433,11 +4433,10 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	    obuf->end_tag = MAX_HTMLTAG;  	    break;  	} -	close_anchor(h_env, obuf);  	return 1;      case HTML_N_LISTING:      case HTML_N_XMP: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P)) {  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	    do_blankline(h_env, obuf, envs[h_env->envc].indent, 0, @@ -4588,31 +4587,42 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	/* should be processed in HTMLlineproc() */  	return 1;      case HTML_CENTER: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & (RB_PREMODE | RB_IGNORE_P)))  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	RB_SAVE_FLAG(obuf);  	RB_SET_ALIGN(obuf, RB_CENTER);  	return 1;      case HTML_N_CENTER: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_PREMODE))  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	RB_RESTORE_FLAG(obuf);  	return 1;      case HTML_DIV: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P))  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	set_alignment(obuf, tag);  	return 1;      case HTML_N_DIV: +	CLOSE_A; +	flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit); +	RB_RESTORE_FLAG(obuf); +	return 1; +    case HTML_DIV_INT: +	CLOSE_P; +	if (!(obuf->flag & RB_IGNORE_P)) +	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit); +	set_alignment(obuf, tag); +	return 1; +    case HTML_N_DIV_INT:  	CLOSE_P;  	flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	RB_RESTORE_FLAG(obuf);  	return 1;      case HTML_FORM: -	CLOSE_P; +	CLOSE_A;  	if (!(obuf->flag & RB_IGNORE_P))  	    flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	tmp = process_form(tag); @@ -4620,7 +4630,7 @@ HTMLtagproc1(struct parsed_tag *tag, struct html_feed_environ *h_env)  	    HTMLlineproc1(tmp->ptr, h_env);  	return 1;      case HTML_N_FORM: -	CLOSE_P; +	CLOSE_A;  	flushline(h_env, obuf, envs[h_env->envc].indent, 0, h_env->limit);  	obuf->flag |= RB_IGNORE_P;  	process_n_form(); @@ -1,4 +1,4 @@ -/* $Id: html.c,v 1.21 2002/12/08 14:23:44 ukai Exp $ */ +/* $Id: html.c,v 1.22 2002/12/09 15:40:36 ukai Exp $ */  #include "html.h"  /* Define HTML Tag Infomation Table */ @@ -254,6 +254,8 @@ TagInfo TagMAP[MAX_HTMLTAG] = {      {"/pre_plain", NULL, 0, TFLG_INT | TFLG_END},	/* 128 HTML_N_PRE_PLAIN         */      {"internal", NULL, 0, TFLG_INT},	/* 129 HTML_INTERNAL   */      {"/internal", NULL, 0, TFLG_INT | TFLG_END},	/* 130 HTML_N_INTERNAL   */ +    {"div_int", ALST_P, MAXA_P, TFLG_INT},	/*  131 HTML_DIV_INT    */ +    {"/div_int", NULL, 0, TFLG_INT | TFLG_END},	/*  132 HTML_N_DIV_INT  */  };  TagAttrInfo AttrMAP[MAX_TAGATTR] = { @@ -1,4 +1,4 @@ -/* $Id: html.h,v 1.14 2002/12/06 16:50:28 ukai Exp $ */ +/* $Id: html.h,v 1.15 2002/12/09 15:40:37 ukai Exp $ */  #ifndef _HTML_H  #define _HTML_H  #ifdef USE_SSL @@ -218,8 +218,10 @@ typedef struct {  #define HTML_N_PRE_PLAIN    128  #define HTML_INTERNAL       129  #define HTML_N_INTERNAL     130 +#define HTML_DIV_INT        131 +#define HTML_N_DIV_INT      132 -#define MAX_HTMLTAG	    131 +#define MAX_HTMLTAG	    133  /* Tag attribute */ diff --git a/tagtable.tab b/tagtable.tab index f421aa0..7bff629 100644 --- a/tagtable.tab +++ b/tagtable.tab @@ -168,3 +168,5 @@ textarea_int	HTML_TEXTAREA_INT  /textarea_int	HTML_N_TEXTAREA_INT  pre_plain	HTML_PRE_PLAIN  /pre_plain	HTML_N_PRE_PLAIN +div_int		HTML_DIV_INT +/div_int	HTML_N_DIV_INT | 
