about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>1998-02-13 12:01:00 -0500
committerThomas E. Dickey <dickey@invisible-island.net>1998-02-13 12:01:00 -0500
commitc82d2a4041724afe1dce249c78c4f034ca6a8d69 (patch)
tree2ba37d862e4b417a690a34a4dfa731a9042addd9 /src
parent4b034492d7e0a45781e340312e0570e5052c42d9 (diff)
downloadlynx-snapshots-c82d2a4041724afe1dce249c78c4f034ca6a8d69.tar.gz
snapshot of project "lynx", label v2-7-1ac-0_114
Diffstat (limited to 'src')
-rw-r--r--src/GridText.c92
-rw-r--r--src/HTFWriter.c29
-rw-r--r--src/HTML.c2745
-rw-r--r--src/HTML.h9
-rw-r--r--src/LYCharSets.c28
-rw-r--r--src/LYCharUtils.c2219
-rw-r--r--src/LYCharUtils.h6
-rw-r--r--src/LYClean.c19
-rw-r--r--src/LYCurses.c26
-rw-r--r--src/LYCurses.h4
-rw-r--r--src/LYGlobalDefs.h2
-rw-r--r--src/LYMain.c14
-rw-r--r--src/LYMainLoop.c23
-rw-r--r--src/LYPrint.c33
-rw-r--r--src/LYReadCFG.c9
-rw-r--r--src/LYStrings.c2
-rw-r--r--src/UCAux.c68
-rw-r--r--src/UCdomap.c147
-rw-r--r--src/chrtrans/README.format5
-rw-r--r--src/chrtrans/README.tables6
-rw-r--r--src/chrtrans/cp1253_uni.tbl3
-rw-r--r--src/chrtrans/cp1255_uni.tbl3
-rw-r--r--src/chrtrans/cp1256_uni.tbl3
-rw-r--r--src/chrtrans/cp437_uni.tbl7
-rw-r--r--src/chrtrans/cp737_uni.tbl3
-rw-r--r--src/chrtrans/cp775_uni.tbl3
-rw-r--r--src/chrtrans/cp850_uni.tbl7
-rw-r--r--src/chrtrans/cp852_uni.tbl7
-rw-r--r--src/chrtrans/cp862_uni.tbl2
-rw-r--r--src/chrtrans/cp864_uni.tbl2
-rw-r--r--src/chrtrans/cp869_uni.tbl2
-rw-r--r--src/chrtrans/def7_uni.tbl60
-rw-r--r--src/chrtrans/koi8r_uni.tbl8
-rw-r--r--src/chrtrans/mac_uni.tbl2
-rw-r--r--src/chrtrans/next_uni.tbl7
-rw-r--r--src/chrtrans/utf8_uni.tbl2
-rw-r--r--src/chrtrans/viscii_uni.tbl8
-rw-r--r--src/makefile.dos2
38 files changed, 2279 insertions, 3338 deletions
diff --git a/src/GridText.c b/src/GridText.c
index b7080263..7df08b26 100644
--- a/src/GridText.c
+++ b/src/GridText.c
@@ -771,7 +771,7 @@ PRIVATE int display_line ARGS2(
 		    addch('_');
 		    i++;
 		} else {
-		    lynx_start_underline_color ();
+		    start_underline();
 		}
 		break;
 
@@ -780,16 +780,16 @@ PRIVATE int display_line ARGS2(
 		    addch('_');
 		    i++;
 		} else {
-		    lynx_stop_underline_color ();
+		    stop_underline();
 		}
 		break;
 
 	    case LY_BOLD_START_CHAR:
-		lynx_start_bold_color ();
+		start_bold();
 		break;
 
 	    case LY_BOLD_END_CHAR:
-		lynx_stop_bold_color ();
+		stop_bold ();
 		break;
 #endif
 
@@ -883,8 +883,8 @@ PRIVATE int display_line ARGS2(
     addch('\n');
 
 #ifndef USE_COLOR_STYLE
-    lynx_stop_underline_color ();
-    lynx_stop_bold_color ();
+    stop_underline();
+    stop_bold();
 #else
     while (current_style < line->numstyles)
     {
@@ -984,8 +984,8 @@ PRIVATE void display_title ARGS1(
 		}
 		tmp[j] = '\0';
 	    }
-	    FREE(title);
-	    title = (char *)tmp;
+	    StrAllocCopy(title, (CONST char *)tmp);
+	    FREE(tmp);
 	}
     }
     move(0, 0);
@@ -1035,7 +1035,8 @@ PRIVATE void display_page ARGS3(
     TextAnchor *Anchor_ptr = NULL;
     FormInfo *FormInfo_ptr;
     BOOL display_flag = FALSE;
-    HTAnchor *link_dest, *link_dest_intl = NULL;
+    HTAnchor *link_dest;
+    HTAnchor *link_dest_intl = NULL;
     static int last_nlinks = 0;
     static int charset_last_displayed = -1;
 
@@ -1052,7 +1053,7 @@ PRIVATE void display_page ARGS3(
 	    refresh();
 	    clear();
 	}
-	addstr("\n\nError accessing document.\nNo data available!\n");
+	addstr("\n\nError accessing document!\nNo data available!\n");
 	refresh();
 	nlinks = 0;  /* set number of links to 0 */
 	return;
@@ -1399,15 +1400,7 @@ PRIVATE void display_page ARGS3(
 			    link_dest_intl = NULL;
 			if (link_dest_intl) {
 			    char *cp2 = HTAnchor_address(link_dest_intl);
-#if 0
-			    cp = strchr(cp2, '#');
-			    if (cp && cp != cp2 &&
-				0!=strncmp(cp2, "LYNXIMGMAP:", 11)) {
-				StrAllocCopy(cp_AnchorAddress, cp);
-				FREE(cp2);
-			    } else
-#endif
-				cp_AnchorAddress = cp2;
+			    cp_AnchorAddress = cp2;
 			} else
 #endif
 			    cp_AnchorAddress = HTAnchor_address(link_dest);
@@ -1642,10 +1635,6 @@ PRIVATE void split_line ARGS2(
 	      previous->styles[previous->numstyles-2].direction == STACK_ON) ||
 	     (previous->styles[LastStyle].direction == ABS_OFF &&
 	      previous->styles[previous->numstyles-2].direction == ABS_ON) ||
-#if 0
-	     (previous->styles[LastStyle].direction == STACK_ON &&
-	      previous->styles[previous->numstyles-2].direction == STACK_OFF) ||
-#endif
 	     (previous->styles[LastStyle].direction == ABS_ON &&
 	      previous->styles[previous->numstyles-2].direction == ABS_OFF)
 		)) {
@@ -2417,7 +2406,7 @@ PUBLIC void HText_appendCharacter ARGS2(
 	/*
 	 *  Can split here. - FM
 	 */
-	text->permissible_split = (int)line->size;
+	text->permissible_split = (int)text->last_line->size;
 	/*
 	 *  There are some pages written in
 	 *  different kanji codes. - TA
@@ -2538,7 +2527,7 @@ check_IgnoreExcess:
 	    /*
 	     *  Can split here. - FM
 	     */
-	    text->permissible_split = (int)line->size;
+	    text->permissible_split = (int)text->last_line->size;
 	}
     }
 }
@@ -2642,6 +2631,7 @@ PUBLIC int HText_beginAnchor ARGS3(
     a->next = 0;
     a->anchor = anc;
     a->extent = 0;
+    a->link_type = HYPERTEXT_ANCHOR;
     text->last_anchor = a;
 
 #ifndef DONT_TRACK_INTERNAL_LINKS
@@ -2652,10 +2642,8 @@ PUBLIC int HText_beginAnchor ARGS3(
 #endif
 	if (HTAnchor_followMainLink((HTAnchor*)anc)) {
 	a->number = ++(text->last_anchor_number);
-	a->link_type = HYPERTEXT_ANCHOR;
     } else {
 	a->number = 0;
-	a->link_type = HYPERTEXT_ANCHOR;
     }
 
     /*
@@ -3061,7 +3049,7 @@ PUBLIC void HText_endAnchor ARGS2(
 	    }
 	} else {
 	    /*
-	     *  The anchor's content does not restricted to only
+	     *  The anchor's content is not restricted to only
 	     *  white and special characters, so we'll show it
 	     *  as a link. - FM
 	     */
@@ -3501,8 +3489,9 @@ PUBLIC int HTGetLinkInfo ARGS6(
 	char **,	hightext,
 	char **,	lname)
 {
-    TextAnchor * a;
-    HTAnchor *link_dest, *link_dest_intl = NULL;
+    TextAnchor *a;
+    HTAnchor *link_dest;
+    HTAnchor *link_dest_intl = NULL;
     int anchors_this_line = 0, anchors_this_screen = 0;
     int prev_anchor_line = -1, prev_prev_anchor_line = -1;
 
@@ -3630,21 +3619,9 @@ PUBLIC int HTGetLinkInfo ARGS6(
 			}
 			if (link_dest_intl) {
 			    char *cp2 = HTAnchor_address(link_dest_intl);
-#if 0
-			    char *cp = strchr(cp2, '#');
-			    if (cp && cp != cp2 &&
-				0!=strncmp(cp2, "LYNXIMGMAP:", 11)) {
-				StrAllocCopy(*lname, cp);
-				FREE(cp2);
-				return(WWW_INTERN_LINK_TYPE);
-			    } else {
-#endif
-				FREE(*lname);
-				*lname = cp2;
-				return(WWW_INTERN_LINK_TYPE);
-#if 0
-			    }
-#endif
+			    FREE(*lname);
+			    *lname = cp2;
+			    return(WWW_INTERN_LINK_TYPE);
 			} else
 #endif
 			    cp_freeme = HTAnchor_address(link_dest);
@@ -5054,11 +5031,11 @@ PUBLIC void www_user_search ARGS3(
 	}
 
 	if (case_sensitive && LYno_attr_char_strstr(line->data, target)) {
-	    tentative_result=count;
+	    tentative_result = count;
 	    break;
 	} else if (!case_sensitive &&
 		   LYno_attr_char_case_strstr(line->data, target)) {
-	    tentative_result=count;
+	    tentative_result = count;
 	    break;
 	} else if (line == HTMainText->last_line) {  /* next line */
 	    break;
@@ -5217,7 +5194,7 @@ PUBLIC void www_user_search ARGS3(
 		break;
 	    } else if (!case_sensitive &&
 		       LYno_attr_char_case_strstr(line->data, target)) {
-	        tentative_result=count;
+	        tentative_result = count;
 		break;
 	    } else if (count > start_line) {  /* next line */
 		_user_message(STRING_NOT_FOUND, target);
@@ -6785,11 +6762,11 @@ PRIVATE double get_trans_q ARGS2(
     int,		cs_from,
     char *,		givenmime)
 {
-    double dq = 0.0, df = 1.0;
-    UCTQ_t tq;
+    double df = 1.0;
+    BOOL tq;
     char *p;
     if (!givenmime || !(*givenmime))
-	return dq;
+	return 0.0;
     if ((p = strchr(givenmime,';')) != NULL) {
 	*p++ = '\0';
     }
@@ -6799,9 +6776,8 @@ PRIVATE double get_trans_q ARGS2(
     else
 	tq = UCCanTranslateFromTo(cs_from,
 				  UCGetLYhndl_byMIME(givenmime));
-    if (tq <= TQ_NO)
-	return dq;
-    dq = 1.0;
+    if (!tq)
+	return 0.0;
     if (p && *p) {
 	char *pair, *field = p, *pval, *ptok;
 	/* Get all the parameters to the Charset */
@@ -7083,9 +7059,9 @@ PUBLIC void HText_SubmitForm ARGS4(
 		    /* those specials will be trivial */
 		} else if (UCNeedNotTranslate(form_ptr->value_cs, target_cs)) {
 		    /* already ok */
-		} else if (UCCanTranslateFromTo(form_ptr->value_cs, target_cs) != TQ_NO) {
+		} else if (UCCanTranslateFromTo(form_ptr->value_cs, target_cs)) {
 		    /* also ok */
-		} else if (UCCanTranslateFromTo(target_cs, form_ptr->value_cs) != TQ_NO) {
+		} else if (UCCanTranslateFromTo(target_cs, form_ptr->value_cs)) {
 		    target_cs = form_ptr->value_cs;	/* try this */
 		    target_csname = NULL; /* will be set after loop */
 		} else {
@@ -7103,9 +7079,9 @@ PUBLIC void HText_SubmitForm ARGS4(
 		    /* those specials will be trivial */
 		} else if (UCNeedNotTranslate(form_ptr->name_cs, target_cs)) {
 		    /* already ok */
-		} else if (UCCanTranslateFromTo(form_ptr->name_cs, target_cs) != TQ_NO) {
+		} else if (UCCanTranslateFromTo(form_ptr->name_cs, target_cs)) {
 		    /* also ok */
-		} else if (UCCanTranslateFromTo(target_cs, form_ptr->name_cs) != TQ_NO) {
+		} else if (UCCanTranslateFromTo(target_cs, form_ptr->name_cs)) {
 		    target_cs = form_ptr->value_cs;	/* try this */
 		    target_csname = NULL; /* will be set after loop */
 		} else {
diff --git a/src/HTFWriter.c b/src/HTFWriter.c
index 04c624a2..19d13a1f 100644
--- a/src/HTFWriter.c
+++ b/src/HTFWriter.c
@@ -890,6 +890,35 @@ Prepend_BASE:
 		anchor->address, (temp ? temp : anchor->address));
 	FREE(temp);
     }
+        if (LYPrependCharsetToSource &&
+	!strncasecomp(pres->rep->name, "text/html", 9) &&
+	!anchor->content_encoding) {
+	/*
+	 *  Add the document's charset as a META CHARSET tag
+	 *  at the top of the file, so HTTP charset header
+	 *  will not be forgotten when a document saved as local file.
+	 *  We add this line only(!) if HTTP charset present. - LP
+	 *  Note that the markup will be technically invalid if a DOCTYPE
+	 *  declaration, or HTML or HEAD tags, are present, and thus the
+	 *  file may need editing for perfection. - FM
+	 */
+
+/* ++++ Not checked in detail - whether we may use anchor->charset
+or should find something else in HTAnchor.c or HTMime.c - LP.
++++++++++ */
+
+	char *temp = NULL;
+
+	if (anchor->charset && *anchor->charset) {
+	    StrAllocCopy(temp, anchor->charset);
+	    collapse_spaces(temp);
+		fprintf(ret_obj->fp,
+		"<META HTTP-EQUIV=\"Content-Type\" "
+		"CONTENT=\"text/html; charset=%s\">\n\n",
+		temp);
+	}
+	FREE(temp);
+    }
     return ret_obj;
 }
 
diff --git a/src/HTML.c b/src/HTML.c
index 831d02b1..9ea85b1f 100644
--- a/src/HTML.c
+++ b/src/HTML.c
@@ -76,8 +76,8 @@ extern HTStyleSheet * styleSheet;	/* Application-wide */
 
 /*	Module-wide style cache
 */
-PRIVATE int 		got_styles = 0;
-PRIVATE HTStyle *styles[HTML_ELEMENTS+31]; /* adding 24 nested list styles  */
+PRIVATE int		got_styles = 0;
+PUBLIC  HTStyle *styles[HTML_ELEMENTS+31]; /* adding 24 nested list styles  */
 					   /* and 3 header alignment styles */
 					   /* and 3 div alignment styles    */
 PRIVATE HTStyle *default_style;
@@ -98,26 +98,21 @@ PRIVATE void HTML_end_element PARAMS((HTStructured *me,
 /*		Forward declarations of routines
 */
 PRIVATE void get_styles NOPARAMS;
-PRIVATE void actually_set_style PARAMS((HTStructured * me));
 PRIVATE void change_paragraph_style PARAMS((HTStructured * me,
 					    HTStyle * style));
 
-/*	Style buffering avoids dummy paragraph begin/ends.
-*/
-#define UPDATE_STYLE if (me->style_change) { actually_set_style(me); }
-
 /*	Set an internal flag that the next call to a stack-affecting method
 **	is only internal and the stack manipulation should be skipped. - kw
 */
 #define SET_SKIP_STACK(el_num) if (HTML_dtd.tags[el_num].contents != SGML_EMPTY) \
-                          			{ me->skip_stack++; }
+						{ me->skip_stack++; }
 
 extern int hash_code PARAMS((char* i));
 
 PUBLIC void strtolower ARGS1(char*, i)
 {
-        if (!i) return;
-        while (*i) { *i=tolower(*i); i++; }
+	if (!i) return;
+	while (*i) { *i=tolower(*i); i++; }
 }
 
 /*		Flattening the style structure
@@ -132,16 +127,16 @@ a sequence of styles.
 /*
 **  If style really needs to be set, call this.
 */
-PRIVATE void actually_set_style ARGS1(HTStructured *, me)
+PUBLIC void actually_set_style ARGS1(HTStructured *, me)
 {
     if (!me->text) {			/* First time through */
 	LYGetChartransInfo(me);
 	UCSetTransParams(&me->T,
 		     me->UCLYhndl, me->UCI,
 			 HTAnchor_getUCLYhndl(me->node_anchor,
-			 		      UCT_STAGE_HTEXT),
+					      UCT_STAGE_HTEXT),
 			 HTAnchor_getUCInfoStage(me->node_anchor,
-			 			 UCT_STAGE_HTEXT));
+						 UCT_STAGE_HTEXT));
 	me->text = HText_new2(me->node_anchor, me->target);
 	HText_beginAppend(me->text);
 	HText_setStyle(me->text, me->new_style);
@@ -161,7 +156,7 @@ PRIVATE void actually_set_style ARGS1(HTStructured *, me)
 PRIVATE void change_paragraph_style ARGS2(HTStructured *, me, HTStyle *,style)
 {
     if (me->new_style != style) {
-    	me->style_change = YES;
+	me->style_change = YES;
 	me->new_style = style;
     }
     me->in_word = NO;
@@ -169,7 +164,7 @@ PRIVATE void change_paragraph_style ARGS2(HTStructured *, me, HTStyle *,style)
 
 /*_________________________________________________________________________
 **
-**			A C T I O N 	R O U T I N E S
+**			A C T I O N	R O U T I N E S
 */
 
 /*	Character handling
@@ -178,19 +173,19 @@ PRIVATE void change_paragraph_style ARGS2(HTStructured *, me, HTStyle *,style)
 PUBLIC void HTML_put_character ARGS2(HTStructured *, me, char, c)
 {
     /*
-     *  Ignore all non-MAP content when just
-     *  scanning a document for MAPs. - FM
+     *	Ignore all non-MAP content when just
+     *	scanning a document for MAPs. - FM
      */
     if (LYMapsOnly)
-        return;
+	return;
 
     /*
-     *  Do EOL conversion if needed. - FM
+     *	Do EOL conversion if needed. - FM
      *
-     *  Convert EOL styles:
-     *   macintosh:  cr    --> lf
-     *   ascii:      cr-lf --> lf
-     *   unix:       lf    --> lf
+     *	Convert EOL styles:
+     *	 macintosh:  cr    --> lf
+     *	 ascii:      cr-lf --> lf
+     *	 unix:	     lf    --> lf
      */
     if ((me->lastraw == '\r') && c == '\n') {
 	me->lastraw = -1;
@@ -201,59 +196,59 @@ PUBLIC void HTML_put_character ARGS2(HTStructured *, me, char, c)
 	c = '\n';
 
     /*
-     *  Handle SGML_LITTERAL tags that have HTChunk elements. - FM
+     *	Handle SGML_LITTERAL tags that have HTChunk elements. - FM
      */
     switch (me->sp[0].tag_number) {
 
     case HTML_COMMENT:
-    	return;	/* Do Nothing */
+	return; /* Do Nothing */
 
     case HTML_TITLE:
-        if (c == LY_SOFT_HYPHEN)
+	if (c == LY_SOFT_HYPHEN)
 	    return;
 	if (c != '\n' && c != '\t' && c != '\r')
-    	    HTChunkPutc(&me->title, c);
+	    HTChunkPutc(&me->title, c);
 	else
-    	    HTChunkPutc(&me->title, ' ');
+	    HTChunkPutc(&me->title, ' ');
 	return;
 
     case HTML_STYLE:
 	HTChunkPutc(&me->style_block, c);
-        return;
+	return;
 
     case HTML_SCRIPT:
 	HTChunkPutc(&me->script, c);
-        return;
+	return;
 
     case HTML_OBJECT:
-    	HTChunkPutc(&me->object, c);
+	HTChunkPutc(&me->object, c);
 	return;
 
     case HTML_TEXTAREA:
-    	HTChunkPutc(&me->textarea, c);
+	HTChunkPutc(&me->textarea, c);
 	return;
 
     case HTML_SELECT:
     case HTML_OPTION:
-    	HTChunkPutc(&me->option, c);
+	HTChunkPutc(&me->option, c);
 	return;
 
     case HTML_MATH:
-    	HTChunkPutc(&me->math, c);
+	HTChunkPutc(&me->math, c);
 	return;
 
     default:
 	if (me->inSELECT) {
 	    /*
-	     *  If we are within a SELECT not caught by the cases
-	     *  above - HTML_SELECT or HTML_OPTION may not be the
-	     *  last element pushed on the style stack if there were
-	     *  invalid markup tags within a SELECT element.  For error
-	     *  recovery, treat text as part of the OPTION text, it is
-	     *  probably meant to show up as user-visible text.
-	     *  Having A as an open element while in SELECT is really sick,
-	     *  don't make anchor text part of the option text in that case
-	     *  since the option text will probably just be discarded. - kw
+	     *	If we are within a SELECT not caught by the cases
+	     *	above - HTML_SELECT or HTML_OPTION may not be the
+	     *	last element pushed on the style stack if there were
+	     *	invalid markup tags within a SELECT element.  For error
+	     *	recovery, treat text as part of the OPTION text, it is
+	     *	probably meant to show up as user-visible text.
+	     *	Having A as an open element while in SELECT is really sick,
+	     *	don't make anchor text part of the option text in that case
+	     *	since the option text will probably just be discarded. - kw
 	     */
 	    if (me->sp[0].tag_number == HTML_A)
 		break;
@@ -264,7 +259,7 @@ PUBLIC void HTML_put_character ARGS2(HTStructured *, me, char, c)
     } /* end first switch */
 
     /*
-     *  Handle all other tag content. - FM
+     *	Handle all other tag content. - FM
      */
     switch (me->sp[0].tag_number) {
 
@@ -298,16 +293,16 @@ PUBLIC void HTML_put_character ARGS2(HTStructured *, me, char, c)
 	break;
 
     default:
-        /*
+	/*
 	 *  Free format text.
 	 */
 	if (!strcmp(me->sp->style->name,"Preformatted")) {
 	    if (c != '\r' &&
-	        !(c == '\n' && me->inLABEL && !me->inP) &&
+		!(c == '\n' && me->inLABEL && !me->inP) &&
 		!(c == '\n' && !me->inPRE)) {
 		me->inP = TRUE;
 		me->inLABEL = FALSE;
-	        HText_appendCharacter(me->text, c);
+		HText_appendCharacter(me->text, c);
 	    }
 	    me->inPRE = TRUE;
 
@@ -316,30 +311,30 @@ PUBLIC void HTML_put_character ARGS2(HTStructured *, me, char, c)
 	    if (c != '\r') {
 		me->inP = TRUE;
 		me->inLABEL = FALSE;
-	        HText_appendCharacter(me->text, c);
+		HText_appendCharacter(me->text, c);
 	    }
 
 	} else {
 	    if (me->style_change) {
-	        if ((c == '\n') || (c == ' '))
+		if ((c == '\n') || (c == ' '))
 		    return;	/* Ignore it */
-	        UPDATE_STYLE;
+		UPDATE_STYLE;
 	    }
 	    if (c == '\n') {
-	        if (me->in_word) {
-	            if (HText_getLastChar(me->text) != ' ') {
+		if (me->in_word) {
+		    if (HText_getLastChar(me->text) != ' ') {
 			me->inP = TRUE;
 			me->inLABEL = FALSE;
-		        HText_appendCharacter(me->text, ' ');
+			HText_appendCharacter(me->text, ' ');
 		    }
 		    me->in_word = NO;
-	        }
+		}
 
 	    } else if (c == ' ' || c == '\t') {
-	        if (HText_getLastChar(me->text) != ' ') {
+		if (HText_getLastChar(me->text) != ' ') {
 		    me->inP = TRUE;
 		    me->inLABEL = FALSE;
-	            HText_appendCharacter(me->text, ' ');
+		    HText_appendCharacter(me->text, ' ');
 		}
 
 	    } else if (c == '\r') {
@@ -348,14 +343,14 @@ PUBLIC void HTML_put_character ARGS2(HTStructured *, me, char, c)
 	    } else {
 		me->inP = TRUE;
 		me->inLABEL = FALSE;
-	        HText_appendCharacter(me->text, c);
-	        me->in_word = YES;
+		HText_appendCharacter(me->text, c);
+		me->in_word = YES;
 	    }
 	}
     } /* end second switch */
 
     if (c == '\n' || c == '\t') {
-     	HText_setLastChar(me->text, ' '); /* set it to a generic seperater */
+	HText_setLastChar(me->text, ' '); /* set it to a generic seperater */
 
 	/*
 	 *  \r's are ignored.  In order to keep collapsing spaces
@@ -363,9 +358,9 @@ PUBLIC void HTML_put_character ARGS2(HTStructured *, me, char, c)
 	 *  seperater if there was one
 	 */
     } else if (c == '\r' && HText_getLastChar(me->text) == ' ') {
-     	HText_setLastChar(me->text, ' '); /* set it to a generic seperater */
+	HText_setLastChar(me->text, ' '); /* set it to a generic seperater */
     } else {
-     	HText_setLastChar(me->text, c);
+	HText_setLastChar(me->text, c);
     }
 }
 
@@ -383,19 +378,19 @@ PUBLIC void HTML_put_string ARGS2(HTStructured *, me, CONST char *, s)
     switch (me->sp[0].tag_number) {
 
     case HTML_COMMENT:
-    	break;					/* Do Nothing */
+	break;					/* Do Nothing */
 
     case HTML_TITLE:
-    	HTChunkPuts(&me->title, s);
+	HTChunkPuts(&me->title, s);
 	break;
 
     case HTML_STYLE:
 	HTChunkPuts(&me->style_block, s);
-        break;
+	break;
 
     case HTML_SCRIPT:
-    	HTChunkPuts(&me->script, s);
-        break;
+	HTChunkPuts(&me->script, s);
+	break;
 
     case HTML_PRE:				/* Formatted text */
     case HTML_LISTING:				/* Litteral text */
@@ -404,32 +399,32 @@ PUBLIC void HTML_put_string ARGS2(HTStructured *, me, CONST char *, s)
 	/*
 	 *  We guarrantee that the style is up-to-date in begin_litteral
 	 */
-    	HText_appendText(me->text, s);
+	HText_appendText(me->text, s);
 	break;
 
     case HTML_OBJECT:
-    	HTChunkPuts(&me->object, s);
+	HTChunkPuts(&me->object, s);
 	break;
 
     case HTML_TEXTAREA:
-    	HTChunkPuts(&me->textarea, s);
+	HTChunkPuts(&me->textarea, s);
 	break;
 
     case HTML_SELECT:
     case HTML_OPTION:
-    	HTChunkPuts(&me->option, s);
+	HTChunkPuts(&me->option, s);
 	break;
 
     case HTML_MATH:
-    	HTChunkPuts(&me->math, s);
+	HTChunkPuts(&me->math, s);
 	break;
 
     default:					/* Free format text? */
 	if (!me->sp->style->freeFormat) {
 	    /*
-	     *  If we are within a preformatted text style not caught
-	     *  by the cases above (HTML_PRE or similar may not be the
-	     *  last element pushed on the style stack). - kw
+	     *	If we are within a preformatted text style not caught
+	     *	by the cases above (HTML_PRE or similar may not be the
+	     *	last element pushed on the style stack). - kw
 	     */
 	    HText_appendText(me->text, s);
 	    break;
@@ -447,9 +442,9 @@ PUBLIC void HTML_put_string ARGS2(HTStructured *, me, CONST char *, s)
 	    for (; *p; p++) {
 		if (*p == 13 && p[1] != 10) {
 		    /*
-		     *  Treat any '\r' which is not followed by '\n'
-		     *  as '\n', to account for macintosh lineend in
-		     *  ALT attributes etc. - kw
+		     *	Treat any '\r' which is not followed by '\n'
+		     *	as '\n', to account for macintosh lineend in
+		     *	ALT attributes etc. - kw
 		     */
 		    c = '\n';
 		} else {
@@ -462,7 +457,7 @@ PUBLIC void HTML_put_string ARGS2(HTStructured *, me, CONST char *, s)
 		}
 		if (c == '\n') {
 		    if (me->in_word) {
-		        if (HText_getLastChar(me->text) != ' ')
+			if (HText_getLastChar(me->text) != ' ')
 			    HText_appendCharacter(me->text, ' ');
 			me->in_word = NO;
 		    }
@@ -479,21 +474,21 @@ PUBLIC void HTML_put_string ARGS2(HTStructured *, me, CONST char *, s)
 		}
 
 		/* set the Last Character */
-    		if (c == '\n' || c == '\t') {
+		if (c == '\n' || c == '\t') {
 		    /* set it to a generic seperater */
-        	    HText_setLastChar(me->text, ' ');
-    		} else if (c == '\r' &&
+		    HText_setLastChar(me->text, ' ');
+		} else if (c == '\r' &&
 			   HText_getLastChar(me->text) == ' ') {
 		    /*
-		     *  \r's are ignored.  In order to keep collapsing
-		     *  spaces correctly, we must default back to the
-		     *  previous seperator, if there was one.  So we
-		     *  set LastChar to a generic seperater.
+		     *	\r's are ignored.  In order to keep collapsing
+		     *	spaces correctly, we must default back to the
+		     *	previous seperator, if there was one.  So we
+		     *	set LastChar to a generic seperater.
 		     */
-       		    HText_setLastChar(me->text, ' ');
-    		} else {
-       		    HText_setLastChar(me->text, c);
-    		}
+		    HText_setLastChar(me->text, ' ');
+		} else {
+		    HText_setLastChar(me->text, c);
+		}
 
 	    } /* for */
 	}
@@ -509,27 +504,27 @@ PUBLIC void HTML_write ARGS3(HTStructured *, me, CONST char*, s, int, l)
     CONST char* e = s+l;
 
     if (LYMapsOnly)
-        return;
+	return;
 
     for (p = s; s < e; p++)
-        HTML_put_character(me, *p);
+	HTML_put_character(me, *p);
 }
 
 /*
  *  "Internal links" are hyperlinks whose source and destination are
  *  within the same document, and for which the destination is given
  *  as a URL Reference with an empty URL, but possibly with a non-empty
- *  #fragment.  (This terminology re URL-Reference vs. URL follows the
+ *  #fragment.	(This terminology re URL-Reference vs. URL follows the
  *  Fielding URL syntax and semantics drafts).
  *  Differences:
  *  (1) The document's base (in whatever way it is given) is not used for
- *      resolving internal link references.
+ *	resolving internal link references.
  *  (2) Activating an internal link should not result in a new retrieval
- *      of a copy of the document.
+ *	of a copy of the document.
  *  (3) Internal links are the only way to refer with a hyperlink to a document
- *      (or a location in it) which is only known as the result of a POST
- *      request (doesn't have a URL from which the document can be retrieved
- *      with GET), and can only be used from within that document.
+ *	(or a location in it) which is only known as the result of a POST
+ *	request (doesn't have a URL from which the document can be retrieved
+ *	with GET), and can only be used from within that document.
  *
  * *If DONT_TRACK_INTERNAL_LINKS is not defined, we keep track of whether a
  *  link destination was given as an internal link.  This information is
@@ -540,12 +535,12 @@ PUBLIC void HTML_write ARGS3(HTStructured *, me, CONST char*, s, int, l)
  *  of the base URL.
  *  Examples:  (replace [...] to have a valid absolute URL)
  *  In document retrieved from [...]/mypath/mydoc.htm w/ base [...]/otherpath/
- *  a. HREF="[...]/mypath/mydoc.htm"      -> [...]/mypath/mydoc.htm
+ *  a. HREF="[...]/mypath/mydoc.htm"	  -> [...]/mypath/mydoc.htm
  *  b. HREF="[...]/mypath/mydoc.htm#frag" -> [...]/mypath/mydoc.htm#frag
- *  c. HREF="mydoc.htm"                   -> [...]/otherpath/mydoc.htm
- *  d. HREF="mydoc.htm#frag"              -> [...]/otherpath/mydoc.htm#frag
- *  e. HREF=""                -> [...]/mypath/mydoc.htm      (marked internal)
- *  f. HREF="#frag"           -> [...]/mypath/mydoc.htm#frag (marked internal)
+ *  c. HREF="mydoc.htm" 		  -> [...]/otherpath/mydoc.htm
+ *  d. HREF="mydoc.htm#frag"		  -> [...]/otherpath/mydoc.htm#frag
+ *  e. HREF=""		      -> [...]/mypath/mydoc.htm      (marked internal)
+ *  f. HREF="#frag"	      -> [...]/mypath/mydoc.htm#frag (marked internal)
  *
  * *If DONT_TRACK_INTERNAL_LINKS is defined, URL-less URL-References are
  *  resolved differently from URL-References with a non-empty URL (using the
@@ -562,7 +557,7 @@ PUBLIC void HTML_write ARGS3(HTStructured *, me, CONST char*, s, int, l)
 #ifndef DONT_TRACK_INTERNAL_LINKS
 /* A flag is used to keep track of whether an "URL reference" encountered
    had a real "URL" or not. In the latter case, it will be marked as
-   "internal".  The flag is set before we start messing around with the
+   "internal".	The flag is set before we start messing around with the
    string (resolution of relative URLs etc.). This variable only used
    locally here, don't confuse with LYinternal_flag which is for
    for overriding non-caching similar to LYoverride_no_cache. - kw */
@@ -589,15 +584,13 @@ char prevailing_class[TEMPSTRINGSIZE];
     int hcode;
 #endif
 
-#define CHECK_ID(code) LYCheckForID(me, present, value, (int)code)
-
 /*	Start Element
 **	-------------
 */
 PRIVATE void HTML_start_element ARGS6(
 	HTStructured *, 	me,
 	int,			element_number,
-	CONST BOOL*,	 	present,
+	CONST BOOL*,		present,
 	CONST char **,		value,
 	int,			tag_charset,
 	char **,		include)
@@ -607,20 +600,21 @@ PRIVATE void HTML_start_element ARGS6(
     char *href = NULL;
     char *map_href = NULL;
     char *title = NULL;
-    char *I_value = NULL, *I_name = NULL;
+    char *I_value = NULL;
+    char *I_name = NULL;
     char *temp = NULL;
     int dest_char_set  = -1;
     HTParentAnchor *dest = NULL;	     /* An anchor's destination */
-    BOOL dest_ismap = FALSE;	     	     /* Is dest an image map script? */
+    BOOL dest_ismap = FALSE;		     /* Is dest an image map script? */
     BOOL UseBASE = TRUE;		     /* Resoved vs. BASE if present? */
-    HTChildAnchor *ID_A = NULL;		     /* HTML_foo_ID anchor */
+    HTChildAnchor *ID_A = NULL; 	     /* HTML_foo_ID anchor */
     int url_type = 0, i = 0;
     BOOL intern_flag = FALSE;
     char *cp = NULL;
     int ElementNumber = element_number;
 
     if (LYMapsOnly) {
-        if (!(ElementNumber == HTML_MAP || ElementNumber == HTML_AREA ||
+	if (!(ElementNumber == HTML_MAP || ElementNumber == HTML_AREA ||
 	      ElementNumber == HTML_BASE)) {
 	    return;
 	}
@@ -635,70 +629,66 @@ PRIVATE void HTML_start_element ARGS6(
 
 /* this should be done differently */
 #if defined(USE_COLOR_STYLE)
-        strcat (Style_className, ";");
-        strcat (Style_className, HTML_dtd.tags[element_number].name);
-        strcpy (myHash, HTML_dtd.tags[element_number].name);
-        if (class_string[0])
-        {
-                strcat (Style_className, ".");
-                strcat (Style_className, class_string);
-                strcat (myHash, ".");
-                strcat (myHash, class_string);
+	strcat (Style_className, ";");
+	strcat (Style_className, HTML_dtd.tags[element_number].name);
+	strcpy (myHash, HTML_dtd.tags[element_number].name);
+	if (class_string[0])
+	{
+		strcat (Style_className, ".");
+		strcat (Style_className, class_string);
+		strcat (myHash, ".");
+		strcat (myHash, class_string);
 #ifdef PREVAIL
-                strcpy (prevailing_class, class_string);
+		strcpy (prevailing_class, class_string);
 #endif
-        }
+	}
 #ifdef PREVAIL
-        else if (prevailing_class[0])
-        {
-                strcat (Style_className, ".");
-                strcat (Style_className, prevailing_class);
-                strcat (myHash, ".");
-                strcat (myHash, prevailing_class);
-        }
+	else if (prevailing_class[0])
+	{
+		strcat (Style_className, ".");
+		strcat (Style_className, prevailing_class);
+		strcat (myHash, ".");
+		strcat (myHash, prevailing_class);
+	}
 #endif /* PREVAIL */
-        class_string[0]='\0';
-        strtolower(myHash);
-        hcode=hash_code(myHash);
-        strtolower(Style_className);
-
-        if (TRACE)
-        {
-                fprintf(stderr, "CSSTRIM:%s -> %d", myHash, hcode);
-                if (hashStyles[hcode].code!=hcode)
-                {
-                        char *rp=strrchr(myHash, '.');
-                        fprintf(stderr, " (undefined) %s\n", myHash);
-                        if (rp)
-                        {
-                                int hcd;
-                                *rp='\0'; /* trim the class */
-                                hcd = hash_code(myHash);
-                                fprintf(stderr, "CSS:%s -> %d", myHash, hcd);
-                                if (hashStyles[hcd].code!=hcd)
-                                        fprintf(stderr, " (undefined) %s\n", myHash);
-                                else
-                                        fprintf(stderr, " ca=%d\n", hashStyles[hcd].color);
-                        }
-                }
-                else
-                        fprintf(stderr, " ca=%d\n", hashStyles[hcode].color);
-        }
+	class_string[0]='\0';
+	strtolower(myHash);
+	hcode=hash_code(myHash);
+	strtolower(Style_className);
+
+	if (TRACE)
+	{
+		fprintf(stderr, "CSSTRIM:%s -> %d", myHash, hcode);
+		if (hashStyles[hcode].code!=hcode)
+		{
+			char *rp=strrchr(myHash, '.');
+			fprintf(stderr, " (undefined) %s\n", myHash);
+			if (rp)
+			{
+				int hcd;
+				*rp='\0'; /* trim the class */
+				hcd = hash_code(myHash);
+				fprintf(stderr, "CSS:%s -> %d", myHash, hcd);
+				if (hashStyles[hcd].code!=hcd)
+					fprintf(stderr, " (undefined) %s\n", myHash);
+				else
+					fprintf(stderr, " ca=%d\n", hashStyles[hcd].color);
+			}
+		}
+		else
+			fprintf(stderr, " ca=%d\n", hashStyles[hcode].color);
+	}
 
     if (displayStyles[element_number + STARTAT].color > -2) /* actually set */
     {
-        if (TRACE)
-                fprintf(stderr, "CSSTRIM: start_element: top <%s>\n", HTML_dtd.tags[element_number].name);
-        HText_characterStyle(me->text, hcode, 1);
+	if (TRACE)
+		fprintf(stderr, "CSSTRIM: start_element: top <%s>\n", HTML_dtd.tags[element_number].name);
+	HText_characterStyle(me->text, hcode, 1);
     }
 #endif /* USE_COLOR_STYLE */
 
-#if 0
-	me->inStyle[element_number]=1; /* this is a goodthing(tm) */
-#endif
-
     /*
-     *  Handle the start tag. - FM
+     *	Handle the start tag. - FM
      */
     switch (ElementNumber) {
 
@@ -709,20 +699,20 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_BASE:
-        if (present && present[HTML_BASE_HREF] &&
+	if (present && present[HTML_BASE_HREF] && !local_host_only &&
 	    value[HTML_BASE_HREF] && *value[HTML_BASE_HREF]) {
 	    char *base = NULL;
 	    char *related = NULL;
 
 	    StrAllocCopy(base, value[HTML_BASE_HREF]);
 	    if (!(url_type = LYLegitimizeHREF(me, (char**)&base,
-	    				      TRUE, TRUE))) {
-	        if (TRACE)
+					      TRUE, TRUE))) {
+		if (TRACE)
 		    fprintf(stderr,
-		    	    "HTML: BASE '%s' is not an absolute URL.\n",
+			    "HTML: BASE '%s' is not an absolute URL.\n",
 			    (base ? base : ""));
 		if (me->inBadBASE == FALSE)
-	            HTAlert(BASE_NOT_ABSOLUTE);
+		    HTAlert(BASE_NOT_ABSOLUTE);
 		me->inBadBASE = TRUE;
 	    }
 
@@ -746,40 +736,40 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Get parent's address for defaulted fields.
+	     *	Get parent's address for defaulted fields.
 	     */
 	    StrAllocCopy(related, me->node_anchor->address);
 
 	    /*
-	     *  Create the access field.
+	     *	Create the access field.
 	     */
 	    if ((temp = HTParse(base, related,
-	    			PARSE_ACCESS+PARSE_PUNCTUATION)) &&
+				PARSE_ACCESS+PARSE_PUNCTUATION)) &&
 		*temp != '\0') {
-	        StrAllocCopy(me->base_href, temp);
+		StrAllocCopy(me->base_href, temp);
 	    } else {
 		FREE(temp);
-	        StrAllocCopy(me->base_href, (temp = HTParse(related, "",
+		StrAllocCopy(me->base_href, (temp = HTParse(related, "",
 					 PARSE_ACCESS+PARSE_PUNCTUATION)));
 	    }
 	    FREE(temp);
 
 	    /*
-	     *  Create the host[:port] field.
+	     *	Create the host[:port] field.
 	     */
 	    if ((temp = HTParse(base, "",
-	    			PARSE_HOST+PARSE_PUNCTUATION)) &&
-	    	!strncmp(temp, "//", 2)) {
-	        StrAllocCat(me->base_href, temp);
+				PARSE_HOST+PARSE_PUNCTUATION)) &&
+		!strncmp(temp, "//", 2)) {
+		StrAllocCat(me->base_href, temp);
 		if (!strcmp(me->base_href, "file://")) {
 		    StrAllocCat(me->base_href, "localhost");
 		}
 	    } else {
-	        if (!strcmp(me->base_href, "file:")) {
+		if (!strcmp(me->base_href, "file:")) {
 		    StrAllocCat(me->base_href, "//localhost");
 		} else if (strcmp(me->base_href, "news:")) {
 		    FREE(temp);
-	            StrAllocCat(me->base_href, (temp = HTParse(related, "",
+		    StrAllocCat(me->base_href, (temp = HTParse(related, "",
 					    PARSE_HOST+PARSE_PUNCTUATION)));
 		}
 	    }
@@ -787,25 +777,25 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(related);
 
 	    /*
-	     *  Create the path field.
+	     *	Create the path field.
 	     */
 	    if ((temp = HTParse(base, "",
-	    			PARSE_PATH+PARSE_PUNCTUATION)) &&
+				PARSE_PATH+PARSE_PUNCTUATION)) &&
 		*temp != '\0') {
-	        StrAllocCat(me->base_href, temp);
+		StrAllocCat(me->base_href, temp);
 	    } else if (!strcmp(me->base_href, "news:")) {
-	        StrAllocCat(me->base_href, "*");
+		StrAllocCat(me->base_href, "*");
 	    } else if (!strncmp(me->base_href, "news:", 5) ||
-	    	       !strncmp(me->base_href, "nntp:", 5) ||
+		       !strncmp(me->base_href, "nntp:", 5) ||
 		       !strncmp(me->base_href, "snews:", 6)) {
-	        StrAllocCat(me->base_href, "/*");
+		StrAllocCat(me->base_href, "/*");
 	    } else {
-	        StrAllocCat(me->base_href, "/");
+		StrAllocCat(me->base_href, "/");
 	    }
 	    FREE(temp);
 	    FREE(base);
 
-            me->inBASE = TRUE;
+	    me->inBASE = TRUE;
 	    StrAllocCopy(me->node_anchor->content_base, me->base_href);
 	}
 	break;
@@ -816,7 +806,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_TITLE:
-        HTChunkClear(&me->title);
+	HTChunkClear(&me->title);
 	break;
 
     case HTML_LINK:
@@ -824,7 +814,7 @@ PRIVATE void HTML_start_element ARGS6(
 	if (present && present[HTML_LINK_HREF]) {
 	    CHECK_FOR_INTERN(value[HTML_LINK_HREF]);
 	    /*
-	     *  Prepare to do housekeeping on the reference. - FM
+	     *	Prepare to do housekeeping on the reference. - FM
 	     */
 	    if (!value[HTML_LINK_HREF]) {
 		if (me->inBASE && me->base_href && *me->base_href) {
@@ -838,7 +828,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Check whether a base tag is in effect. - FM
+	     *	Check whether a base tag is in effect. - FM
 	     */
 	    if ((me->inBASE && *href != '\0' && *href != '#') &&
 		(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
@@ -850,31 +840,31 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(temp);
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&href,
 			       ((*href != '\0' && *href != '#' &&
-			         me->inBASE) ?
+				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 
 	    /*
-	     *  Handle links with a REV attribute. - FM
+	     *	Handle links with a REV attribute. - FM
 	     */
 	    if (present &&
-	        present[HTML_LINK_REV] && value[HTML_LINK_REV]) {
+		present[HTML_LINK_REV] && value[HTML_LINK_REV]) {
 		/*
 		 *  Handle REV="made" or REV="owner". - LM & FM
 		 */
-	        if (!strcasecomp("made", value[HTML_LINK_REV]) ||
+		if (!strcasecomp("made", value[HTML_LINK_REV]) ||
 		    !strcasecomp("owner", value[HTML_LINK_REV])) {
 		    /*
-		     *  Load the owner element. - FM
+		     *	Load the owner element. - FM
 		     */
 		    if (!is_url(href)) {
-		        temp = HTParse(href,
+			temp = HTParse(href,
 				       (me->inBASE ?
 				     me->base_href : me->node_anchor->address),
-				        PARSE_ALL);
+					PARSE_ALL);
 			StrAllocCopy(href, temp);
 			FREE(temp);
 			LYFillLocalFileURL((char **)&href,
@@ -884,16 +874,16 @@ PRIVATE void HTML_start_element ARGS6(
 		    }
 		    HTAnchor_setOwner(me->node_anchor, href);
 		    if (TRACE)
-		        fprintf(stderr,
+			fprintf(stderr,
 				"HTML: DOC OWNER '%s' found\n", href);
 		    FREE(href);
 
 		    /*
-		     *  Load the RevTitle element if a TITLE attribute
-		     *  and value are present. - FM
+		     *	Load the RevTitle element if a TITLE attribute
+		     *	and value are present. - FM
 		     */
 		    if (present && present[HTML_LINK_TITLE] &&
-		        value[HTML_LINK_TITLE] &&
+			value[HTML_LINK_TITLE] &&
 			*value[HTML_LINK_TITLE] != '\0') {
 			StrAllocCopy(title, value[HTML_LINK_TITLE]);
 			TRANSLATE_AND_UNESCAPE_ENTITIES(&title, TRUE, FALSE);
@@ -908,17 +898,17 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Handle REL links. - FM
+	     *	Handle REL links. - FM
 	     */
 	    if (present &&
-	        present[HTML_LINK_REL] && value[HTML_LINK_REL]) {
+		present[HTML_LINK_REL] && value[HTML_LINK_REL]) {
 		/*
 		 *  Ignore style sheets, for now. - FM
 		 */
 		if (!strcasecomp(value[HTML_LINK_REL], "StyleSheet") ||
 		    !strcasecomp(value[HTML_LINK_REL], "Style")) {
 		    if (TRACE) {
-		        fprintf(stderr,
+			fprintf(stderr,
 				"HTML: StyleSheet link found.\n");
 		    }
 #ifdef LINKEDSTYLES
@@ -1004,11 +994,11 @@ PRIVATE void HTML_start_element ARGS6(
 		    !strcasecomp(value[HTML_LINK_REL], "Chapter") ||
 		    !strcasecomp(value[HTML_LINK_REL], "Documentation") ||
 		    !strcasecomp(value[HTML_LINK_REL], "Biblioentry") ||
- 		    !strcasecomp(value[HTML_LINK_REL], "Bibliography")) {
+		    !strcasecomp(value[HTML_LINK_REL], "Bibliography")) {
 		    StrAllocCopy(title, value[HTML_LINK_REL]);
 		} else {
 		    if (TRACE) {
-		        fprintf(stderr,
+			fprintf(stderr,
 				"HTML: LINK with REL=\"%s\" ignored.\n",
 				 value[HTML_LINK_REL]);
 		    }
@@ -1019,17 +1009,17 @@ PRIVATE void HTML_start_element ARGS6(
 	} else if (present &&
 		   present[HTML_LINK_REL] && value[HTML_LINK_REL]) {
 	    /*
-	     *  If no HREF was specified, handle special REL links
-	     *  with self-designated HREFs. - FM
+	     *	If no HREF was specified, handle special REL links
+	     *	with self-designated HREFs. - FM
 	     */
 	    if (!strcasecomp(value[HTML_LINK_REL], "Home")) {
-	        StrAllocCopy(href, LynxHome);
+		StrAllocCopy(href, LynxHome);
 	    } else if (!strcasecomp(value[HTML_LINK_REL], "Help")) {
-	        StrAllocCopy(href, helpfile);
+		StrAllocCopy(href, helpfile);
 	    } else if (!strcasecomp(value[HTML_LINK_REL], "Index")) {
-	        StrAllocCopy(href, indexfile);
+		StrAllocCopy(href, indexfile);
 	    } else {
-	        if (TRACE) {
+		if (TRACE) {
 		    fprintf(stderr,
 			    "HTML: LINK with REL=\"%s\" and no HREF ignored.\n",
 			    value[HTML_LINK_REL]);
@@ -1040,9 +1030,9 @@ PRIVATE void HTML_start_element ARGS6(
 	}
 	if (href) {
 	    /*
-	     *  Create a title (link name) from the TITLE value,
-	     *  if present, or default to the REL value that was
-	     *  loaded into title. - FM
+	     *	Create a title (link name) from the TITLE value,
+	     *	if present, or default to the REL value that was
+	     *	loaded into title. - FM
 	     */
 	    if (present && present[HTML_LINK_TITLE] &&
 		value[HTML_LINK_TITLE] && *value[HTML_LINK_TITLE] != '\0') {
@@ -1052,13 +1042,13 @@ PRIVATE void HTML_start_element ARGS6(
 		LYTrimTail(title);
 	    }
 	    if (!(title && *title)) {
-	        FREE(href);
+		FREE(href);
 		FREE(title);
 		break;
 	    }
 
 	    if (me->inA) {
-	        /*
+		/*
 		 *  Ugh!  The LINK tag, which is a HEAD element,
 		 *  is in an Anchor, which is BODY element.  All
 		 *  we can do is close the Anchor and cross our
@@ -1069,25 +1059,25 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Create anchors for the links that simulate
-	     *  a toolbar. - FM
+	     *	Create anchors for the links that simulate
+	     *	a toolbar. - FM
 	     */
 	    me->CurrentA = HTAnchor_findChildAndLink(
 				me->node_anchor,	/* Parent */
-		    		NULL,			/* Tag */
-		    		href,			/* Addresss */
-		    		INTERN_LT);		/* Type */
+				NULL,			/* Tag */
+				href,			/* Addresss */
+				INTERN_LT);		/* Type */
 	    if ((dest = HTAnchor_parent(
 			    HTAnchor_followMainLink((HTAnchor*)me->CurrentA)
-			    	      )) != NULL) {
+				      )) != NULL) {
 		if (!HTAnchor_title(dest))
 		    HTAnchor_setTitle(dest, title);
 		dest = NULL;
-	        if (present[HTML_LINK_CHARSET] &&
+		if (present[HTML_LINK_CHARSET] &&
 		    value[HTML_LINK_CHARSET] && *value[HTML_LINK_CHARSET] != '\0') {
 		    dest_char_set = UCGetLYhndl_byMIME(value[HTML_LINK_CHARSET]);
 		    if (dest_char_set < 0)
-		        dest_char_set = UCLYhndl_for_unrec;
+			dest_char_set = UCLYhndl_for_unrec;
 		}
 		if (dest && dest_char_set >= 0)
 		    HTAnchor_setUCInfoStage(dest, dest_char_set,
@@ -1110,7 +1100,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 	    HText_beginAnchor(me->text, me->inUnderline, me->CurrentA);
 	    if (me->inBoldH == FALSE)
-	        HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
+		HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
 #ifdef USE_COLOR_STYLE
 	    if (present && present[HTML_LINK_CLASS] &&
 	    value && *value[HTML_LINK_CLASS]!='\0')
@@ -1128,12 +1118,10 @@ PRIVATE void HTML_start_element ARGS6(
 		HText_characterStyle(me->text, hash_code(tmp), 0);
 	    }
 	    else
-		HTML_put_string(me, title);
-#else
-	    HTML_put_string(me, title);
 #endif
+	    HTML_put_string(me, title);
 	    if (me->inBoldH == FALSE)
-	        HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
+		HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 	    HText_endAnchor(me->text, 0);
 	}
 	FREE(href);
@@ -1148,46 +1136,46 @@ PRIVATE void HTML_start_element ARGS6(
 	    char * isindex_href = NULL;
 
 	    /*
-	     *  Lynx was supporting ACTION, which never made it into
-	     *  the HTTP 2.0 specs.  HTTP 3.0 uses HREF, so we'll
-	     *  use that too, but allow use of ACTION as an alternate
-	     *  until people have fully switched over. - FM
+	     *	Lynx was supporting ACTION, which never made it into
+	     *  the HTML 2.0 specs.  HTML 3.0 uses HREF, so we'll
+	     *	use that too, but allow use of ACTION as an alternate
+	     *	until people have fully switched over. - FM
 	     */
 	    if (present[HTML_ISINDEX_HREF] && value[HTML_ISINDEX_HREF])
-	        StrAllocCopy(isindex_href, value[HTML_ISINDEX_HREF]);
+		StrAllocCopy(isindex_href, value[HTML_ISINDEX_HREF]);
 	    else
-	        StrAllocCopy(isindex_href, value[HTML_ISINDEX_ACTION]);
+		StrAllocCopy(isindex_href, value[HTML_ISINDEX_ACTION]);
 	    url_type = LYLegitimizeHREF(me, (char**)&isindex_href,
-	    				TRUE, TRUE);
+					TRUE, TRUE);
 
 	    /*
-	     *  Check whether a base tag is in effect.
+	     *	Check whether a base tag is in effect.
 	     */
 	    if (me->inBASE && *isindex_href != '\0' && *isindex_href != '#')
 		action = HTParse(isindex_href, me->base_href, PARSE_ALL);
 	    if (!(action && *action))
-	        action = HTParse(isindex_href,
+		action = HTParse(isindex_href,
 				 me->node_anchor->address, PARSE_ALL);
 	    FREE(isindex_href);
 
 	    if (action && *action) {
-   	        HTAnchor_setIndex(me->node_anchor, action);
+		HTAnchor_setIndex(me->node_anchor, action);
 	    } else {
-	        HTAnchor_setIndex(me->node_anchor, me->node_anchor->address);
+		HTAnchor_setIndex(me->node_anchor, me->node_anchor->address);
 	    }
 	    FREE(action);
 
 	} else {
 	    if (me->inBASE)
-	        /*
-	         *  Use base.
-	         */
-   	        HTAnchor_setIndex(me->node_anchor, me->base_href);
+		/*
+		 *  Use base.
+		 */
+		HTAnchor_setIndex(me->node_anchor, me->base_href);
 	    else
-	        /*
-	         *  Use index's address.
-	         */
-   	        HTAnchor_setIndex(me->node_anchor, me->node_anchor->address);
+		/*
+		 *  Use index's address.
+		 */
+		HTAnchor_setIndex(me->node_anchor, me->node_anchor->address);
 	}
 	/*
 	 *  Support HTML 3.0 PROMPT attribute. - FM
@@ -1200,10 +1188,10 @@ PRIVATE void HTML_start_element ARGS6(
 	    LYTrimHead(temp);
 	    LYTrimTail(temp);
 	    if (*temp != '\0') {
-	        StrAllocCat(temp, " ");
+		StrAllocCat(temp, " ");
 		HTAnchor_setPrompt(me->node_anchor, temp);
 	    } else {
-	        HTAnchor_setPrompt(me->node_anchor,
+		HTAnchor_setPrompt(me->node_anchor,
 				   "Enter a database query: ");
 	    }
 	    FREE(temp);
@@ -1213,12 +1201,12 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_NEXTID:
-    	/* if (present && present[NEXTID_N] && value[NEXTID_N])
+	/* if (present && present[NEXTID_N] && value[NEXTID_N])
 		HText_setNextId(me->text, atoi(value[NEXTID_N])); */
-    	break;
+	break;
 
     case HTML_STYLE:
-    	/*
+	/*
 	 *  We're getting it as Litteral text, which, for now,
 	 *  we'll just ignore. - FM
 	 */
@@ -1226,7 +1214,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_SCRIPT:
-    	/*
+	/*
 	 *  We're getting it as Litteral text, which, for now,
 	 *  we'll just ignore. - FM
 	 */
@@ -1257,7 +1245,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
 
 	    /*
-	     *  Check whether a base tag is in effect. - FM
+	     *	Check whether a base tag is in effect. - FM
 	     */
 	    if ((me->inBASE && *href != '\0' && *href != '#') &&
 		(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
@@ -1269,11 +1257,11 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(temp);
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&href,
 			       ((*href != '\0' && *href != '#' &&
-			         me->inBASE) ?
+				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 
 	    if (me->inA) {
@@ -1287,10 +1275,10 @@ PRIVATE void HTML_start_element ARGS6(
 				INTERN_LT);		/* Type */
 	    LYEnsureSingleSpace(me);
 	    if (me->inUnderline == FALSE)
-	        HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
+		HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
 	    HTML_put_string(me, "FRAME:");
 	    if (me->inUnderline == FALSE)
-	        HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
+		HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
 	    HTML_put_character(me, ' ');
 	    me->in_word = NO;
 	    CHECK_ID(HTML_FRAME_ID);
@@ -1329,7 +1317,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
 
 	    /*
-	     *  Check whether a base tag is in effect. - FM
+	     *	Check whether a base tag is in effect. - FM
 	     */
 	    if ((me->inBASE && *href != '\0' && *href != '#') &&
 		(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
@@ -1341,11 +1329,11 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(temp);
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&href,
 			       ((*href != '\0' && *href != '#' &&
-			         me->inBASE) ?
+				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 
 	    if (me->inA)
@@ -1358,10 +1346,10 @@ PRIVATE void HTML_start_element ARGS6(
 	    LYEnsureDoubleSpace(me);
 	    LYResetParagraphAlignment(me);
 	    if (me->inUnderline == FALSE)
-	        HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
+		HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
 	    HTML_put_string(me, "IFRAME:");
 	    if (me->inUnderline == FALSE)
-	        HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
+		HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
 	    HTML_put_character(me, ' ');
 	    me->in_word = NO;
 	    CHECK_ID(HTML_IFRAME_ID);
@@ -1382,11 +1370,17 @@ PRIVATE void HTML_start_element ARGS6(
 
     case HTML_BANNER:
     case HTML_MARQUEE:
-    	change_paragraph_style(me, styles[HTML_BANNER]);
+	change_paragraph_style(me, styles[HTML_BANNER]);
 	UPDATE_STYLE;
 	if (me->sp->tag_number == ElementNumber)
 	    LYEnsureDoubleSpace(me);
-	if (!HText_hasToolbar(me->text) &&
+	/*
+	 *  Treat this as a toolbar if we don't have one
+	 *  yet, and we are in the first half of the
+	 *  first page. - FM
+	 */
+	if ((!HText_hasToolbar(me->text) &&
+	     HText_getLines(me->text) < (display_lines/2)) &&
 	    (ID_A = HTAnchor_findChildAndLink(
 					me->node_anchor,	/* Parent */
 					LYToolbarName,		/* Tag */
@@ -1404,29 +1398,29 @@ PRIVATE void HTML_start_element ARGS6(
 	if (me->Division_Level < (MAX_NESTING - 1)) {
 	    me->Division_Level++;
 	} else if (TRACE) {
-            fprintf(stderr,
+	    fprintf(stderr,
 		"HTML: ****** Maximum nesting of %d divisions exceeded!\n",
-            	MAX_NESTING);
+		MAX_NESTING);
 	}
 	if (ElementNumber == HTML_CENTER) {
 	    me->DivisionAlignments[me->Division_Level] = HT_CENTER;
-    	    change_paragraph_style(me, styles[HTML_DCENTER]);
+	    change_paragraph_style(me, styles[HTML_DCENTER]);
 	    UPDATE_STYLE;
 	    me->current_default_alignment = styles[HTML_DCENTER]->alignment;
 	} else if (present && present[HTML_DIV_ALIGN] &&
 		   value[HTML_DIV_ALIGN] && *value[HTML_DIV_ALIGN]) {
 	    if (!strcasecomp(value[HTML_DIV_ALIGN], "center")) {
-	        me->DivisionAlignments[me->Division_Level] = HT_CENTER;
+		me->DivisionAlignments[me->Division_Level] = HT_CENTER;
 		change_paragraph_style(me, styles[HTML_DCENTER]);
 		UPDATE_STYLE;
 		me->current_default_alignment = styles[HTML_DCENTER]->alignment;
 	    } else if (!strcasecomp(value[HTML_DIV_ALIGN], "right")) {
-	        me->DivisionAlignments[me->Division_Level] = HT_RIGHT;
+		me->DivisionAlignments[me->Division_Level] = HT_RIGHT;
 		change_paragraph_style(me, styles[HTML_DRIGHT]);
 		UPDATE_STYLE;
 		me->current_default_alignment = styles[HTML_DRIGHT]->alignment;
 	    } else {
-	        me->DivisionAlignments[me->Division_Level] = HT_LEFT;
+		me->DivisionAlignments[me->Division_Level] = HT_LEFT;
 		change_paragraph_style(me, styles[HTML_DLEFT]);
 		UPDATE_STYLE;
 		me->current_default_alignment = styles[HTML_DLEFT]->alignment;
@@ -1456,7 +1450,7 @@ PRIVATE void HTML_start_element ARGS6(
 	if (i_prior_style != -1) {
 	    HTML_end_element(me, i_prior_style);
 	}
-	i_prior_style = element_number;
+	i_prior_style = ElementNumber;
 	 */
 
 	/*
@@ -1476,14 +1470,14 @@ PRIVATE void HTML_start_element ARGS6(
 		UPDATE_STYLE;
 	    }
 	    /*
-	     *  Some authors use H# headers as a substitute for
-	     *  FONT, so check if this one immediately followed
-	     *  an LI.  If so, both me->inP and me->in_word will
-	     *  be FALSE (though the line might not be empty due
-	     *  to a bullet and/or nbsp) and we can assume it is
-	     *  just for a FONT change.  We thus will not create
-	     *  another line break nor add to the current left
-	     *  indentation. - FM
+	     *	Some authors use H# headers as a substitute for
+	     *	FONT, so check if this one immediately followed
+	     *	an LI.	If so, both me->inP and me->in_word will
+	     *	be FALSE (though the line might not be empty due
+	     *	to a bullet and/or nbsp) and we can assume it is
+	     *	just for a FONT change.  We thus will not create
+	     *	another line break nor add to the current left
+	     *	indentation. - FM
 	     */
 	    if (!(me->inP == FALSE && me->in_word == NO)) {
 		HText_appendParagraph(me->text);
@@ -1499,14 +1493,14 @@ PRIVATE void HTML_start_element ARGS6(
 	if (present && present[HTML_H_ALIGN] &&
 	    value[HTML_H_ALIGN] && *value[HTML_H_ALIGN]) {
 	    if (!strcasecomp(value[HTML_H_ALIGN], "center"))
-	        change_paragraph_style(me, styles[HTML_HCENTER]);
+		change_paragraph_style(me, styles[HTML_HCENTER]);
 	    else if (!strcasecomp(value[HTML_H_ALIGN], "right"))
-	        change_paragraph_style(me, styles[HTML_HRIGHT]);
+		change_paragraph_style(me, styles[HTML_HRIGHT]);
 	    else if (!strcasecomp(value[HTML_H_ALIGN], "left") ||
-	    	     !strcasecomp(value[HTML_H_ALIGN], "justify"))
-	        change_paragraph_style(me, styles[HTML_HLEFT]);
+		     !strcasecomp(value[HTML_H_ALIGN], "justify"))
+		change_paragraph_style(me, styles[HTML_HLEFT]);
 	    else
-	        change_paragraph_style(me, styles[ElementNumber]);
+		change_paragraph_style(me, styles[ElementNumber]);
 	} else if (me->Division_Level >= 0) {
 	    if (me->DivisionAlignments[me->Division_Level] == HT_CENTER) {
 		change_paragraph_style(me, styles[HTML_HCENTER]);
@@ -1516,7 +1510,7 @@ PRIVATE void HTML_start_element ARGS6(
 		change_paragraph_style(me, styles[HTML_HRIGHT]);
 	    }
 	} else {
-    	    change_paragraph_style(me, styles[ElementNumber]);
+	    change_paragraph_style(me, styles[ElementNumber]);
 	}
 	UPDATE_STYLE;
 	CHECK_ID(HTML_H_ID);
@@ -1525,95 +1519,18 @@ PRIVATE void HTML_start_element ARGS6(
 	     (ElementNumber == HTML_H1 && bold_H1 == TRUE)) &&
 	    (styles[ElementNumber]->font&HT_BOLD)) {
 	    if (me->inBoldA == FALSE && me->inBoldH == FALSE) {
-	        HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
+		HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
 	    }
 	    me->inBoldH = TRUE;
 	}
 	break;
 
     case HTML_P:
-	/*
-	 *  FIG content should be a true block, which like P inherits
-	 *  the current style.  APPLET is like character elements or
-	 *  an ALT attribute, unless it content contains a block element.
-	 *  If we encounter a P in either's content, we set flags to treat
-	 *  the content as a block.  - FM
-	 */
-	if (me->inFIG)
-	    me->inFIGwithP = TRUE;
-
-	if (me->inAPPLET)
-	    me->inAPPLETwithP = TRUE;
-
-	UPDATE_STYLE;
-	if (me->List_Nesting_Level >= 0) {
-	    /*
-	     *  We're in a list.  Treat P as an instruction to
-	     *  create one blank line, if not already present,
-	     *  then fall through to handle attributes, with
-	     *  the "second line" margins. - FM
-	     */
-	    if (me->inP) {
-	        if (me->inFIG || me->inAPPLET ||
-		    me->inCAPTION || me->inCREDIT ||
-		    me->sp->style->spaceAfter > 0 ||
-		    me->sp->style->spaceBefore > 0) {
-	            LYEnsureDoubleSpace(me);
-		} else {
-	            LYEnsureSingleSpace(me);
-		}
-	    }
-	} else if (me->sp[0].tag_number == HTML_ADDRESS) {
-	    /*
-	     *  We're in an ADDRESS. Treat P as an instruction
-	     *  to start a newline, if needed, then fall through
-	     *  to handle attributes. - FM
-	     */
-	    if (HText_LastLineSize(me->text, FALSE)) {
-		HText_setLastChar(me->text, ' ');  /* absorb white space */
-	        HText_appendCharacter(me->text, '\r');
-	    }
-	} else if (!(me->inLABEL && !me->inP)) {
-	    HText_appendParagraph(me->text);
-	    me->inLABEL = FALSE;
-	}
-	me->in_word = NO;
-
-	if (LYoverride_default_alignment(me)) {
-	    me->sp->style->alignment = styles[me->sp[0].tag_number]->alignment;
-	} else if (me->List_Nesting_Level >= 0 ||
-		   ((me->Division_Level < 0) &&
-		    (!strcmp(me->sp->style->name, "Normal") ||
-		     !strcmp(me->sp->style->name, "Preformatted")))) {
-	        me->sp->style->alignment = HT_LEFT;
-	} else {
-	    me->sp->style->alignment = me->current_default_alignment;
-	}
-	if (present && present[HTML_P_ALIGN] && value[HTML_P_ALIGN]) {
-	    if (!strcasecomp(value[HTML_P_ALIGN], "center") &&
-	        !(me->List_Nesting_Level >= 0 && !me->inP))
-	        me->sp->style->alignment = HT_CENTER;
-	    else if (!strcasecomp(value[HTML_P_ALIGN], "right") &&
-	        !(me->List_Nesting_Level >= 0 && !me->inP))
-	        me->sp->style->alignment = HT_RIGHT;
-	    else if (!strcasecomp(value[HTML_P_ALIGN], "left") ||
-	    	     !strcasecomp(value[HTML_P_ALIGN], "justify"))
-	        me->sp->style->alignment = HT_LEFT;
-	}
-
-	CHECK_ID(HTML_P_ID);
-
-	/*
-	 *  Mark that we are starting a new paragraph
-	 *  and don't have any of its text yet. - FM
-	 *
-	 */
-	me->inP = FALSE;
-
+	LYHandleP(me, present, value, (char **)&include, TRUE);
 	break;
 
     case HTML_BR:
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	CHECK_ID(HTML_GEN_ID);
 	if ((LYCollapseBRs == FALSE) ||
 	    HText_LastLineSize(me->text, FALSE)) {
@@ -1625,14 +1542,14 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_WBR:
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	CHECK_ID(HTML_GEN_ID);
 	HText_setBreakPoint(me->text);
 	break;
 
     case HTML_HY:
     case HTML_SHY:
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	CHECK_ID(HTML_GEN_ID);
 	HText_appendCharacter(me->text, LY_SOFT_HYPHEN);
 	break;
@@ -1642,27 +1559,27 @@ PRIVATE void HTML_start_element ARGS6(
 	    int width;
 
 	    /*
-	     *  Start a new line only if we had printable
-	     *  characters following the previous newline,
-	     *  or remove the previous line if both it and
-	     *  the last line are blank. - FM
+	     *	Start a new line only if we had printable
+	     *	characters following the previous newline,
+	     *	or remove the previous line if both it and
+	     *	the last line are blank. - FM
 	     */
 	    UPDATE_STYLE;
 	    if (HText_LastLineSize(me->text, FALSE)) {
 		HText_setLastChar(me->text, ' ');  /* absorb white space */
 		HText_appendCharacter(me->text, '\r');
 	    } else if (!HText_PreviousLineSize(me->text, FALSE)) {
-	        HText_RemovePreviousLine(me->text);
+		HText_RemovePreviousLine(me->text);
 	    }
 	    me->in_word = NO;
 	    me->inP = FALSE;
 
 	    /*
-	     *  Add an ID link if needed. - FM
+	     *	Add an ID link if needed. - FM
 	     */
 	    CHECK_ID(HTML_HR_ID);
 
-           /*
+	   /*
 	    *  Center lines within the current margins, if
 	    *  a right or left ALIGNment is not specified.
 	    *  If WIDTH="#%" is given and not garbage,
@@ -1670,7 +1587,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    *  use the default width. - FM
 	    */
 	    if (present && present[HTML_HR_ALIGN] && value[HTML_HR_ALIGN]) {
-	        if (!strcasecomp(value[HTML_HR_ALIGN], "right")) {
+		if (!strcasecomp(value[HTML_HR_ALIGN], "right")) {
 		    me->sp->style->alignment = HT_RIGHT;
 		} else if (!strcasecomp(value[HTML_HR_ALIGN], "left")) {
 		    me->sp->style->alignment = HT_LEFT;
@@ -1678,14 +1595,14 @@ PRIVATE void HTML_start_element ARGS6(
 		    me->sp->style->alignment = HT_CENTER;
 		}
 	    } else {
-	        me->sp->style->alignment = HT_CENTER;
+		me->sp->style->alignment = HT_CENTER;
 	    }
 	    width = LYcols - 1 -
 		    me->new_style->leftIndent - me->new_style->rightIndent;
 	    if (present && present[HTML_HR_WIDTH] && value[HTML_HR_WIDTH] &&
-	        isdigit(*value[HTML_HR_WIDTH]) &&
-	        value[HTML_HR_WIDTH][strlen(value[HTML_HR_WIDTH])-1] == '%') {
-	        char *percent = NULL;
+		isdigit(*value[HTML_HR_WIDTH]) &&
+		value[HTML_HR_WIDTH][strlen(value[HTML_HR_WIDTH])-1] == '%') {
+		char *percent = NULL;
 		int Percent, Width;
 		StrAllocCopy(percent, value[HTML_HR_WIDTH]);
 		percent[strlen(percent)-1] = '\0';
@@ -1695,28 +1612,28 @@ PRIVATE void HTML_start_element ARGS6(
 		else {
 		    Width = (width * Percent) / 100;
 		    if (Width < 1)
-		        width = 1;
+			width = 1;
 		    else
-	                width = Width;
+			width = Width;
 		}
 		FREE(percent);
 	    } else {
-	        width -= 5;
+		width -= 5;
 	    }
 	    for (i = 0; i < width; i++)
-	        HTML_put_character(me, '_');
+		HTML_put_character(me, '_');
 	    HText_appendCharacter(me->text, '\r');
 	    me->in_word = NO;
 	    me->inP = FALSE;
 
 	    /*
-	     *  Reset the alignment appropriately
-	     *  for the division and/or block. - FM
+	     *	Reset the alignment appropriately
+	     *	for the division and/or block. - FM
 	     */
 	    if (me->List_Nesting_Level < 0 &&
-	        me->Division_Level >= 0) {
-	        me->sp->style->alignment =
-	    			me->DivisionAlignments[me->Division_Level];
+		me->Division_Level >= 0) {
+		me->sp->style->alignment =
+				me->DivisionAlignments[me->Division_Level];
 	    } else if (!strcmp(me->sp->style->name, "HeadingCenter") ||
 		       !strcmp(me->sp->style->name, "Heading1")) {
 		me->sp->style->alignment = HT_CENTER;
@@ -1727,24 +1644,24 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Add a blank line and set the second line
-	     *  indentation for lists and addresses, or a
-	     *  paragraph separator for other blocks. - FM
+	     *	Add a blank line and set the second line
+	     *	indentation for lists and addresses, or a
+	     *	paragraph separator for other blocks. - FM
 	     */
 	    if (me->List_Nesting_Level >= 0 ||
 		me->sp[0].tag_number == HTML_ADDRESS) {
 		HText_setLastChar(me->text, ' ');  /* absorb white space */
 		HText_appendCharacter(me->text, '\r');
 	    } else {
-	        HText_appendParagraph(me->text);
+		HText_appendParagraph(me->text);
 	    }
 	}
 	break;
 
     case HTML_TAB:
-        if (!present) { /* Bad tag.  Must have at least one attribute. - FM */
+	if (!present) { /* Bad tag.  Must have at least one attribute. - FM */
 	    if (TRACE)
-	        fprintf(stderr,
+		fprintf(stderr,
 			"HTML: TAB tag has no attributes. Ignored.\n");
 	    break;
 	}
@@ -1754,25 +1671,25 @@ PRIVATE void HTML_start_element ARGS6(
 	    (strcasecomp(value[HTML_TAB_ALIGN], "left") ||
 	     !(present[HTML_TAB_TO] || present[HTML_TAB_INDENT]))) {
 	    /*
-	     *  Just ensure a collapsible space, until we have
-	     *  the ALIGN and DP attributes implemented. - FM
+	     *	Just ensure a collapsible space, until we have
+	     *	the ALIGN and DP attributes implemented. - FM
 	     */
 	    HTML_put_character(me, ' ');
 	    if (TRACE)
-	        fprintf(stderr,
+		fprintf(stderr,
 		     "HTML: ALIGN not 'left'. Using space instead of TAB.\n");
 
 	} else if (!LYoverride_default_alignment(me) &&
 		   me->current_default_alignment != HT_LEFT) {
 	    /*
-	     *  Just ensure a collapsible space, until we
-	     *  can replace HText_getCurrentColumn() in
-	     *  GridText.c with code which doesn't require
-	     *  that the alignment be HT_LEFT. - FM
+	     *	Just ensure a collapsible space, until we
+	     *	can replace HText_getCurrentColumn() in
+	     *	GridText.c with code which doesn't require
+	     *	that the alignment be HT_LEFT. - FM
 	     */
 	    HTML_put_character(me, ' ');
 	    if (TRACE)
-	        fprintf(stderr,
+		fprintf(stderr,
 			"HTML: Not HT_LEFT. Using space instead of TAB.\n");
 
 	} else if ((present[HTML_TAB_TO] &&
@@ -1785,7 +1702,7 @@ PRIVATE void HTML_start_element ARGS6(
 
 	    column = HText_getCurrentColumn(me->text);
 	    if (present[HTML_TAB_TO]) {
-	        /*
+		/*
 		 *  TO has priority over INDENT if both are present. - FM
 		 */
 		StrAllocCopy(temp, value[HTML_TAB_TO]);
@@ -1800,23 +1717,23 @@ PRIVATE void HTML_start_element ARGS6(
 		 *  The INDENT value is in "en" (enval per column) units.
 		 *  Divide it by enval, rounding odd values up. - FM
 		 */
-	        target =
-		   (int)(((1.0 * atoi(value[HTML_TAB_INDENT])) / enval)+(0.5));
+		target =
+		   (int)(((1.0 * atoi(value[HTML_TAB_INDENT]))/enval)+(0.5));
 	    }
 	    FREE(temp);
 	    /*
-	     *  If we are being directed to a column too far to the left
-	     *  or right, just add a collapsible space, otherwise, add the
-	     *  appropriate number of spaces. - FM
+	     *	If we are being directed to a column too far to the left
+	     *	or right, just add a collapsible space, otherwise, add the
+	     *	appropriate number of spaces. - FM
 	     */
 	    if (target < column ||
 		target > HText_getMaximumColumn(me->text)) {
-	        HTML_put_character(me, ' ');
+		HTML_put_character(me, ' ');
 		if (TRACE)
 		    fprintf(stderr,
 		 "HTML: Column out of bounds. Using space instead of TAB.\n");
 	    } else {
-	        for (i = column; i < target; i++)
+		for (i = column; i < target; i++)
 		    HText_appendCharacter(me->text, ' ');
 		HText_setLastChar(me->text, ' ');  /* absorb white space */
 	    }
@@ -1832,7 +1749,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    StrAllocCopy(temp, value[HTML_TAB_ID]);
 	    TRANSLATE_AND_UNESCAPE_TO_STD(&temp);
 	    if (*temp)
-	        HText_setTabID(me->text, temp);
+		HText_setTabID(me->text, temp);
 	    FREE(temp);
 	}
 	break;
@@ -1842,7 +1759,7 @@ PRIVATE void HTML_start_element ARGS6(
 
     case HTML_FONT:
 
-        /*
+	/*
 	 *  FONT *may* have been declared SGML_EMPTY in HTMLDTD.c, and
 	 *  SGML_character() in SGML.c *may* check for a FONT end
 	 *  tag to call HTML_end_element() directly (with a
@@ -1882,21 +1799,21 @@ PRIVATE void HTML_start_element ARGS6(
 	 *  Ignore this if inside of a bold anchor or header.
 	 *  Can't display both underline and bold at same time.
 	 */
-	if (me->inBoldA == TRUE || me->inBoldH == TRUE)	{
+	if (me->inBoldA == TRUE || me->inBoldH == TRUE) {
 	    if (TRACE)
-	        fprintf(stderr,"Underline Level is %d\n", me->Underline_Level);
+		fprintf(stderr,"Underline Level is %d\n", me->Underline_Level);
 	    break;
 	}
 	if (me->inUnderline == FALSE) {
 	    HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
 	    me->inUnderline = TRUE;
 	    if (TRACE)
-	        fprintf(stderr,"Beginning underline\n");
+		fprintf(stderr,"Beginning underline\n");
 	} else {
 	    if (TRACE)
-	        fprintf(stderr,"Underline Level is %d\n", me->Underline_Level);
+		fprintf(stderr,"Underline Level is %d\n", me->Underline_Level);
 	}
-    	break;
+	break;
 
     case HTML_ABBREV:	/* Miscellaneous character containers */
     case HTML_ACRONYM:
@@ -1941,7 +1858,7 @@ PRIVATE void HTML_start_element ARGS6(
 
     case HTML_Q:
 	CHECK_ID(HTML_GEN_ID);
-        /*
+	/*
 	 *  Should check LANG and/or DIR attributes, and the
 	 *  me->node_anchor->charset and/or yet to be added
 	 *  structure elements, to determine whether we should
@@ -1956,7 +1873,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_PRE:				/* Formatted text */
-        /*
+	/*
 	**  Set our inPRE flag to FALSE so that a newline
 	**  immediately following the PRE start tag will
 	**  be ignored.  HTML_put_character() will set it
@@ -1970,13 +1887,13 @@ PRIVATE void HTML_start_element ARGS6(
 	change_paragraph_style(me, styles[ElementNumber]);
 	UPDATE_STYLE;
 	CHECK_ID(HTML_GEN_ID);
-    	if (me->comment_end)
-    	    HText_appendText(me->text, me->comment_end);
+	if (me->comment_end)
+	    HText_appendText(me->text, me->comment_end);
 	break;
 
     case HTML_BLOCKQUOTE:
     case HTML_BQ:
-    	change_paragraph_style(me, styles[ElementNumber]);
+	change_paragraph_style(me, styles[ElementNumber]);
 	UPDATE_STYLE;
 	if (me->sp->tag_number == ElementNumber)
 	    LYEnsureDoubleSpace(me);
@@ -1984,7 +1901,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_NOTE:
-    	change_paragraph_style(me, styles[ElementNumber]);
+	change_paragraph_style(me, styles[ElementNumber]);
 	UPDATE_STYLE;
 	if (me->sp->tag_number == ElementNumber)
 	    LYEnsureDoubleSpace(me);
@@ -1993,32 +1910,32 @@ PRIVATE void HTML_start_element ARGS6(
 	    char *note = NULL;
 
 	    /*
-	     *  Indicate the type of NOTE.
+	     *	Indicate the type of NOTE.
 	     */
 	    if (present && present[HTML_NOTE_CLASS] &&
-	        value[HTML_NOTE_CLASS] &&
-	        (!strcasecomp(value[HTML_NOTE_CLASS], "CAUTION") ||
+		value[HTML_NOTE_CLASS] &&
+		(!strcasecomp(value[HTML_NOTE_CLASS], "CAUTION") ||
 		 !strcasecomp(value[HTML_NOTE_CLASS], "WARNING"))) {
-	        StrAllocCopy(note, value[HTML_NOTE_CLASS]);
+		StrAllocCopy(note, value[HTML_NOTE_CLASS]);
 		for (i = 0; note[i] != '\0'; i++)
 		    note[i] = TOUPPER(note[i]);
 		StrAllocCat(note, ":");
 	    } else if (present && present[HTML_NOTE_ROLE] &&
-	    	       value[HTML_NOTE_ROLE] &&
-	    	       (!strcasecomp(value[HTML_NOTE_ROLE], "CAUTION") ||
-		        !strcasecomp(value[HTML_NOTE_ROLE], "WARNING"))) {
-	        StrAllocCopy(note, value[HTML_NOTE_ROLE]);
+		       value[HTML_NOTE_ROLE] &&
+		       (!strcasecomp(value[HTML_NOTE_ROLE], "CAUTION") ||
+			!strcasecomp(value[HTML_NOTE_ROLE], "WARNING"))) {
+		StrAllocCopy(note, value[HTML_NOTE_ROLE]);
 		for (i = 0; note[i] != '\0'; i++)
 		    note[i] = TOUPPER(note[i]);
 		StrAllocCat(note, ":");
 	    } else {
-	        StrAllocCopy(note, "NOTE:");
+		StrAllocCopy(note, "NOTE:");
 	    }
 	    if (me->inUnderline == FALSE)
-	        HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
+		HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
 	    HTML_put_string(me, note);
 	    if (me->inUnderline == FALSE)
-	        HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
+		HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
 	    HTML_put_character(me, ' ');
 	    FREE(note);
 	}
@@ -2028,7 +1945,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_ADDRESS:
-    	change_paragraph_style(me, styles[ElementNumber]);
+	change_paragraph_style(me, styles[ElementNumber]);
 	UPDATE_STYLE;
 	if (me->sp->tag_number == ElementNumber)
 	    LYEnsureDoubleSpace(me);
@@ -2038,16 +1955,16 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_DL:
 	me->List_Nesting_Level++;  /* increment the List nesting level */
 	if (me->List_Nesting_Level <= 0) {
-            change_paragraph_style(me, present && present[HTML_DL_COMPACT]
-    			              ? styles[HTML_DLC] : styles[HTML_DL]);
+	    change_paragraph_style(me, present && present[HTML_DL_COMPACT]
+				      ? styles[HTML_DLC] : styles[HTML_DL]);
 
 	} else if (me->List_Nesting_Level >= 6) {
-            change_paragraph_style(me, present && present[HTML_DL_COMPACT]
-    			              ? styles[HTML_DLC6] : styles[HTML_DL6]);
+	    change_paragraph_style(me, present && present[HTML_DL_COMPACT]
+				      ? styles[HTML_DLC6] : styles[HTML_DL6]);
 
 	} else {
-            change_paragraph_style(me, present && present[HTML_DL_COMPACT]
-    		 ? styles[(HTML_DLC1 - 1) + me->List_Nesting_Level]
+	    change_paragraph_style(me, present && present[HTML_DL_COMPACT]
+		 ? styles[(HTML_DLC1 - 1) + me->List_Nesting_Level]
 		 : styles[(HTML_DL1 - 1) + me->List_Nesting_Level]);
 	}
 	UPDATE_STYLE;	  /* update to the new style */
@@ -2055,24 +1972,24 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_DLC:
-        me->List_Nesting_Level++;  /* increment the List nesting level */
-        if (me->List_Nesting_Level <= 0) {
-            change_paragraph_style(me, styles[HTML_DLC]);
+	me->List_Nesting_Level++;  /* increment the List nesting level */
+	if (me->List_Nesting_Level <= 0) {
+	    change_paragraph_style(me, styles[HTML_DLC]);
 
-        } else if (me->List_Nesting_Level >= 6) {
-            change_paragraph_style(me, styles[HTML_DLC6]);
+	} else if (me->List_Nesting_Level >= 6) {
+	    change_paragraph_style(me, styles[HTML_DLC6]);
 
-        } else {
-            change_paragraph_style(me,
-                            styles[(HTML_DLC1 - 1) + me->List_Nesting_Level]);
-        }
+	} else {
+	    change_paragraph_style(me,
+			    styles[(HTML_DLC1 - 1) + me->List_Nesting_Level]);
+	}
 	UPDATE_STYLE;	  /* update to the new style */
 	CHECK_ID(HTML_DL_ID);
-        break;
+	break;
 
     case HTML_DT:
 	CHECK_ID(HTML_GEN_ID);
-        if (!me->style_change) {
+	if (!me->style_change) {
 	    HText_appendParagraph(me->text);
 	    me->in_word = NO;
 	    me->sp->style->alignment = HT_LEFT;
@@ -2083,12 +2000,12 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_DD:
 	CHECK_ID(HTML_GEN_ID);
 	HText_setLastChar(me->text, ' ');  /* absorb white space */
-        if (!me->style_change)  {
+	if (!me->style_change)	{
 	    if (HText_LastLineSize(me->text, FALSE)) {
 		HText_appendCharacter(me->text, '\r');
 	    }
 	} else {
-            UPDATE_STYLE;
+	    UPDATE_STYLE;
 	    HText_appendCharacter(me->text, '\t');
 	}
 	me->sp->style->alignment = HT_LEFT;
@@ -2108,61 +2025,61 @@ PRIVATE void HTML_start_element ARGS6(
 	 *  or want to continue the numbering from a previous
 	 *  OL in this nest. - FM
 	 */
-        if (present && (present[HTML_OL_SEQNUM] || present[HTML_OL_START])) {
+	if (present && (present[HTML_OL_SEQNUM] || present[HTML_OL_START])) {
 	    int seqnum;
 
 	    /*
-	     *  Give preference to the valid HTML 3.0 SEQNUM attribute name
-	     *  over the Netscape START attribute name (too bad the Netscape
-	     *  developers didn't read the HTML 3.0 specs before re-inventing
-	     *  the "wheel" as "we'll"). - FM
+	     *	Give preference to the valid HTML 3.0 SEQNUM attribute name
+	     *	over the Netscape START attribute name (too bad the Netscape
+	     *	developers didn't read the HTML 3.0 specs before re-inventing
+	     *	the "wheel" as "we'll"). - FM
 	     */
 	    if (present[HTML_OL_SEQNUM] &&
-	        value[HTML_OL_SEQNUM] && *value[HTML_OL_SEQNUM]) {
+		value[HTML_OL_SEQNUM] && *value[HTML_OL_SEQNUM]) {
 		seqnum = atoi(value[HTML_OL_SEQNUM]);
 	    } else if (present[HTML_OL_START] &&
-	    	       value[HTML_OL_START] && *value[HTML_OL_START]) {
+		       value[HTML_OL_START] && *value[HTML_OL_START]) {
 		seqnum = atoi(value[HTML_OL_START]);
 	    } else {
-	        seqnum = 1;
+		seqnum = 1;
 	    }
 
 	    /*
-	     *  Don't allow negative numbers less than
-	     *  or equal to our flags, or numbers less
-	     *  than 1 if an Alphabetic or Roman TYPE. - FM
+	     *	Don't allow negative numbers less than
+	     *	or equal to our flags, or numbers less
+	     *	than 1 if an Alphabetic or Roman TYPE. - FM
 	     */
 	    if (present[HTML_OL_TYPE] && value[HTML_OL_TYPE]) {
-	        if (*value[HTML_OL_TYPE] == 'A') {
+		if (*value[HTML_OL_TYPE] == 'A') {
 		    me->OL_Type[(me->List_Nesting_Level < 11 ?
 				    me->List_Nesting_Level+1 : 11)] = 'A';
 		    if (seqnum < 1)
-		        seqnum = 1;
+			seqnum = 1;
 		} else if (*value[HTML_OL_TYPE] == 'a') {
 		    me->OL_Type[(me->List_Nesting_Level < 11 ?
 				    me->List_Nesting_Level+1 : 11)] = 'a';
 		    if (seqnum < 1)
-		        seqnum = 1;
+			seqnum = 1;
 		} else if (*value[HTML_OL_TYPE] == 'I') {
 		    me->OL_Type[(me->List_Nesting_Level < 11 ?
 				    me->List_Nesting_Level+1 : 11)] = 'I';
 		    if (seqnum < 1)
-		        seqnum = 1;
+			seqnum = 1;
 		} else if (*value[HTML_OL_TYPE] == 'i') {
 		    me->OL_Type[(me->List_Nesting_Level < 11 ?
 				    me->List_Nesting_Level+1 : 11)] = 'i';
 		    if (seqnum < 1)
-		        seqnum = 1;
+			seqnum = 1;
 		} else {
 		  if (seqnum <= OL_VOID)
 		      seqnum = OL_VOID + 1;
 		}
 	    } else if (seqnum <= OL_VOID) {
-	        seqnum = OL_VOID + 1;
+		seqnum = OL_VOID + 1;
 	    }
 
 	    me->OL_Counter[(me->List_Nesting_Level < 11 ?
-	    		       me->List_Nesting_Level+1 : 11)] = seqnum;
+			       me->List_Nesting_Level+1 : 11)] = seqnum;
 
 	} else if (present && present[HTML_OL_CONTINUE]) {
 	    me->OL_Counter[me->List_Nesting_Level < 11 ?
@@ -2172,7 +2089,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    me->OL_Counter[(me->List_Nesting_Level < 11 ?
 			       me->List_Nesting_Level+1 : 11)] = 1;
 	    if (present && present[HTML_OL_TYPE] && value[HTML_OL_TYPE]) {
-	        if (*value[HTML_OL_TYPE] == 'A') {
+		if (*value[HTML_OL_TYPE] == 'A') {
 		    me->OL_Type[(me->List_Nesting_Level < 11 ?
 				    me->List_Nesting_Level+1 : 11)] = 'A';
 		} else if (*value[HTML_OL_TYPE] == 'a') {
@@ -2190,14 +2107,14 @@ PRIVATE void HTML_start_element ARGS6(
 	me->List_Nesting_Level++;
 
 	if (me->List_Nesting_Level <= 0) {
-       	    change_paragraph_style(me, styles[ElementNumber]);
+	    change_paragraph_style(me, styles[ElementNumber]);
 
 	} else if (me->List_Nesting_Level >= 6) {
-       	    change_paragraph_style(me, styles[HTML_OL6]);
+	    change_paragraph_style(me, styles[HTML_OL6]);
 
 	} else {
-            change_paragraph_style(me,
-		          styles[HTML_OL1 + me->List_Nesting_Level - 1]);
+	    change_paragraph_style(me,
+			  styles[HTML_OL1 + me->List_Nesting_Level - 1]);
 	}
 	UPDATE_STYLE;  /* update to the new style */
 	CHECK_ID(HTML_OL_ID);
@@ -2208,36 +2125,36 @@ PRIVATE void HTML_start_element ARGS6(
 
 	if (me->List_Nesting_Level <= 0) {
 	    if (!(present && present[HTML_UL_PLAIN]) &&
-	        !(present && present[HTML_UL_TYPE] &&
+		!(present && present[HTML_UL_TYPE] &&
 		  value[HTML_UL_TYPE] &&
 		  0==strcasecomp(value[HTML_UL_TYPE], "PLAIN"))) {
-       	        change_paragraph_style(me, styles[ElementNumber]);
+		change_paragraph_style(me, styles[ElementNumber]);
 	    } else {
-       	        change_paragraph_style(me, styles[HTML_DIR]);
+		change_paragraph_style(me, styles[HTML_DIR]);
 		ElementNumber = HTML_DIR;
 	    }
 
 	} else if (me->List_Nesting_Level >= 6) {
 	    if (!(present && present[HTML_UL_PLAIN]) &&
-	        !(present && present[HTML_UL_TYPE] &&
+		!(present && present[HTML_UL_TYPE] &&
 		  value[HTML_UL_TYPE] &&
 		  0==strcasecomp(value[HTML_UL_TYPE], "PLAIN"))) {
-       	        change_paragraph_style(me, styles[HTML_OL6]);
+		change_paragraph_style(me, styles[HTML_OL6]);
 	    } else {
-       	        change_paragraph_style(me, styles[HTML_MENU6]);
+		change_paragraph_style(me, styles[HTML_MENU6]);
 		ElementNumber = HTML_DIR;
 	    }
 
 	} else {
 	    if (!(present && present[HTML_UL_PLAIN]) &&
-	        !(present && present[HTML_UL_TYPE] &&
+		!(present && present[HTML_UL_TYPE] &&
 		  value[HTML_UL_TYPE] &&
 		  0==strcasecomp(value[HTML_UL_TYPE], "PLAIN"))) {
-                change_paragraph_style(me,
-		          styles[HTML_OL1 + me->List_Nesting_Level - 1]);
+		change_paragraph_style(me,
+			  styles[HTML_OL1 + me->List_Nesting_Level - 1]);
 	    } else {
-                change_paragraph_style(me,
-		          styles[HTML_MENU1 + me->List_Nesting_Level - 1]);
+		change_paragraph_style(me,
+			  styles[HTML_MENU1 + me->List_Nesting_Level - 1]);
 		ElementNumber = HTML_DIR;
 	    }
 	}
@@ -2250,21 +2167,21 @@ PRIVATE void HTML_start_element ARGS6(
 	me->List_Nesting_Level++;
 
 	if (me->List_Nesting_Level <= 0) {
-       	    change_paragraph_style(me, styles[ElementNumber]);
+	    change_paragraph_style(me, styles[ElementNumber]);
 
 	} else if (me->List_Nesting_Level >= 6) {
-       	    change_paragraph_style(me, styles[HTML_MENU6]);
+	    change_paragraph_style(me, styles[HTML_MENU6]);
 
 	} else {
-            change_paragraph_style(me,
-		          styles[HTML_MENU1 + me->List_Nesting_Level - 1]);
+	    change_paragraph_style(me,
+			  styles[HTML_MENU1 + me->List_Nesting_Level - 1]);
 	}
 	UPDATE_STYLE;  /* update to the new style */
 	CHECK_ID(HTML_UL_ID);
 	break;
 
     case HTML_LH:
-        UPDATE_STYLE;  /* update to the new style */
+	UPDATE_STYLE;  /* update to the new style */
 	HText_appendParagraph(me->text);
 	CHECK_ID(HTML_GEN_ID);
 	HTML_put_character(me, HT_NON_BREAK_SPACE);
@@ -2274,7 +2191,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_LI:
-        UPDATE_STYLE;  /* update to the new style */
+	UPDATE_STYLE;  /* update to the new style */
 	HText_appendParagraph(me->text);
 	me->sp->style->alignment = HT_LEFT;
 	CHECK_ID(HTML_LI_ID);
@@ -2286,20 +2203,20 @@ PRIVATE void HTML_start_element ARGS6(
 	    counter = me->List_Nesting_Level < 11 ?
 			   me->List_Nesting_Level : 11;
 	    if (present && present[HTML_LI_TYPE] && value[HTML_LI_TYPE]) {
-	        if (*value[HTML_LI_TYPE] == '1') {
+		if (*value[HTML_LI_TYPE] == '1') {
 		    me->OL_Type[counter] = '1';
-	        } else if (*value[HTML_LI_TYPE] == 'A') {
+		} else if (*value[HTML_LI_TYPE] == 'A') {
 		    me->OL_Type[counter] = 'A';
-	        } else if (*value[HTML_LI_TYPE] == 'a') {
+		} else if (*value[HTML_LI_TYPE] == 'a') {
 		    me->OL_Type[counter] = 'a';
-	        } else if (*value[HTML_LI_TYPE] == 'I') {
+		} else if (*value[HTML_LI_TYPE] == 'I') {
 		    me->OL_Type[counter] = 'I';
-	        } else if (*value[HTML_LI_TYPE] == 'i') {
+		} else if (*value[HTML_LI_TYPE] == 'i') {
 		    me->OL_Type[counter] = 'i';
 		}
 	    }
 	    if (present && present[HTML_LI_VALUE] &&
-	        ((value[HTML_LI_VALUE] != NULL) &&
+		((value[HTML_LI_VALUE] != NULL) &&
 		 (*value[HTML_LI_VALUE] != '\0')) &&
 		((isdigit(*value[HTML_LI_VALUE])) ||
 		 (*value[HTML_LI_VALUE] == '-' &&
@@ -2312,101 +2229,100 @@ PRIVATE void HTML_start_element ARGS6(
 		    seqnum = 1;
 		me->OL_Counter[counter] = seqnum + 1;
 	    } else if (me->OL_Counter[counter] >= OL_VOID) {
-	        seqnum = me->OL_Counter[counter]++;
+		seqnum = me->OL_Counter[counter]++;
 		seqtype = me->OL_Type[counter];
 		if (seqtype != '1' && seqnum < 1) {
 		    seqnum = 1;
 		    me->OL_Counter[counter] = seqnum + 1;
 		}
 	    } else {
-	        seqnum = me->Last_OL_Count + 1;
+		seqnum = me->Last_OL_Count + 1;
 		seqtype = me->Last_OL_Type;
 		for (i = (counter - 1); i >= 0; i--) {
 		    if (me->OL_Counter[i] > OL_VOID) {
-		        seqnum = me->OL_Counter[i]++;
+			seqnum = me->OL_Counter[i]++;
 			seqtype = me->OL_Type[i];
 			i = 0;
 		    }
 		}
 	    }
 	    if (seqtype == 'A') {
-	        sprintf(number_string, LYUppercaseA_OL_String(seqnum));
+		sprintf(number_string, LYUppercaseA_OL_String(seqnum));
 	    } else if (seqtype == 'a') {
-	        sprintf(number_string, LYLowercaseA_OL_String(seqnum));
+		sprintf(number_string, LYLowercaseA_OL_String(seqnum));
 	    } else if (seqtype == 'I') {
-	        sprintf(number_string, LYUppercaseI_OL_String(seqnum));
+		sprintf(number_string, LYUppercaseI_OL_String(seqnum));
 	    } else if (seqtype == 'i') {
-	        sprintf(number_string, LYLowercaseI_OL_String(seqnum));
+		sprintf(number_string, LYLowercaseI_OL_String(seqnum));
 	    } else {
-	        sprintf(number_string, "%2d.", seqnum);
+		sprintf(number_string, "%2d.", seqnum);
 	    }
 	    me->Last_OL_Count = seqnum;
 	    me->Last_OL_Type = seqtype;
 	    /*
-	     *  Hack, because there is no append string!
+	     *	Hack, because there is no append string!
 	     */
 	    for (i = 0; number_string[i] != '\0'; i++)
 		if (number_string[i] == ' ')
 		    HTML_put_character(me, HT_NON_BREAK_SPACE);
 		else
-	    	    HTML_put_character(me, number_string[i]);
+		    HTML_put_character(me, number_string[i]);
 
 	    /*
-	     *  Use HTML_put_character so that any other spaces
-	     *  coming through will be collapsed.  We'll use
-	     *  nbsp, so it won't break at the spacing character
-	     *  if there are no spaces in the subsequent text up
-	     *  to the right margin, but will declare it as a
-	     *  normal space to ensure collapsing if a normal
-	     *  space does immediately follow it. - FM
+	     *	Use HTML_put_character so that any other spaces
+	     *	coming through will be collapsed.  We'll use
+	     *	nbsp, so it won't break at the spacing character
+	     *	if there are no spaces in the subsequent text up
+	     *	to the right margin, but will declare it as a
+	     *	normal space to ensure collapsing if a normal
+	     *	space does immediately follow it. - FM
 	     */
 	    HTML_put_character(me, HT_NON_BREAK_SPACE);
 	    HText_setLastChar(me->text, ' ');
-
 	} else if (me->sp[0].tag_number == HTML_UL) {
 	    /*
-	     *  Hack, because there is no append string!
+	     *	Hack, because there is no append string!
 	     */
 	    HTML_put_character(me, HT_NON_BREAK_SPACE);
 	    HTML_put_character(me, HT_NON_BREAK_SPACE);
 	    switch(me->List_Nesting_Level % 7) {
 		case 0:
-	    	    HTML_put_character(me, '*');
+		    HTML_put_character(me, '*');
 		    break;
 		case 1:
-	    	    HTML_put_character(me, '+');
+		    HTML_put_character(me, '+');
 		    break;
 		case 2:
-	    	    HTML_put_character(me, 'o');
+		    HTML_put_character(me, 'o');
 		    break;
 		case 3:
-	    	    HTML_put_character(me, '#');
+		    HTML_put_character(me, '#');
 		    break;
 		case 4:
-	    	    HTML_put_character(me, '@');
+		    HTML_put_character(me, '@');
 		    break;
 		case 5:
-	    	    HTML_put_character(me, '-');
+		    HTML_put_character(me, '-');
 		    break;
 		case 6:
-	    	    HTML_put_character(me, '=');
+		    HTML_put_character(me, '=');
 		    break;
 
 	    }
 	    /*
-	     *  Keep using HTML_put_character so that any other
-	     *  spaces coming through will be collapsed.  We use
-	     *  nbsp, so we won't wrap at the spacing character
-	     *  if there are no spaces in the subsequent text up
-	     *  to the right margin, but will declare it as a
-	     *  normal space to ensure collapsing if a normal
-	     *  space does immediately follow it. - FM
+	     *	Keep using HTML_put_character so that any other
+	     *	spaces coming through will be collapsed.  We use
+	     *	nbsp, so we won't wrap at the spacing character
+	     *	if there are no spaces in the subsequent text up
+	     *	to the right margin, but will declare it as a
+	     *	normal space to ensure collapsing if a normal
+	     *	space does immediately follow it. - FM
 	     */
 	    HTML_put_character(me, HT_NON_BREAK_SPACE);
 	    HText_setLastChar(me->text, ' ');
 	} else {
 	    /*
-	     *  Hack, because there is no append string!
+	     *	Hack, because there is no append string!
 	     */
 	    HTML_put_character(me, HT_NON_BREAK_SPACE);
 	    HTML_put_character(me, HT_NON_BREAK_SPACE);
@@ -2418,7 +2334,7 @@ PRIVATE void HTML_start_element ARGS6(
 
     case HTML_SPAN:
 	CHECK_ID(HTML_GEN_ID);
-        /*
+	/*
 	 *  Should check LANG and/or DIR attributes, and the
 	 *  me->node_anchor->charset and/or yet to be added
 	 *  structure elements, and do something here. - FM
@@ -2427,7 +2343,7 @@ PRIVATE void HTML_start_element ARGS6(
 
     case HTML_BDO:
 	CHECK_ID(HTML_GEN_ID);
-        /*
+	/*
 	 *  Should check DIR (and LANG) attributes, and the
 	 *  me->node_anchor->charset and/or yet to be added
 	 *  structure elements, and do something here. - FM
@@ -2439,7 +2355,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_FN:
-    	change_paragraph_style(me, styles[ElementNumber]);
+	change_paragraph_style(me, styles[ElementNumber]);
 	UPDATE_STYLE;
 	if (me->sp->tag_number == ElementNumber)
 	    LYEnsureDoubleSpace(me);
@@ -2456,7 +2372,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_A:
-        /*
+	/*
 	 *  A may have been declared SGML_EMPTY in HTMLDTD.c, and
 	 *  SGML_character() in SGML.c may check for an A end
 	 *  tag to call HTML_end_element() directly (with a
@@ -2464,7 +2380,7 @@ PRIVATE void HTML_start_element ARGS6(
 	 *  parser's stack), so if we have an open A, close
 	 *  that one now. - FM & kw
 	 */
-	if (me->inA == TRUE) {
+	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
 	    HTML_end_element(me, HTML_A, (char **)&include);
 	}
@@ -2501,12 +2417,12 @@ PRIVATE void HTML_start_element ARGS6(
 		CHECK_FOR_INTERN(value[HTML_A_HREF]);
 #endif
 	    /*
-	     *  Prepare to do housekeeping on the reference. - FM
+	     *	Prepare to do housekeeping on the reference. - FM
 	     */
 	    if (!value[HTML_A_HREF] || *value[HTML_A_HREF] == '\0') {
-	        StrAllocCopy(href, me->node_anchor->address);
+		StrAllocCopy(href, me->node_anchor->address);
 	    } else if (*value[HTML_A_HREF] == '#') {
-	        StrAllocCopy(href, me->node_anchor->address);
+		StrAllocCopy(href, me->node_anchor->address);
 		if (strlen(value[HTML_A_HREF]) > 1) {
 		    StrAllocCat(href, value[HTML_A_HREF]);
 		}
@@ -2516,7 +2432,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
 
 	    /*
-	     *  Deal with our ftp gateway kludge. - FM
+	     *	Deal with our ftp gateway kludge. - FM
 	     */
 	    if (!url_type && !strncmp(href, "/foo/..", 7) &&
 		(!strncmp(me->node_anchor->address, "ftp:", 4) ||
@@ -2526,32 +2442,32 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Set to know we are making the content bold.
+	     *	Set to know we are making the content bold.
 	     */
 	    me->inBoldA = TRUE;
 
 	    /*
-	     *  Check whether a base tag is in effect. - FM
+	     *	Check whether a base tag is in effect. - FM
 	     */
 	    if ((me->inBASE && *href != '\0' && *href != '#') &&
 		(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
 		*temp != '\0')
-	        /*
+		/*
 		 *  Use reference related to the base.
 		 */
 		StrAllocCopy(href, temp);
 	    FREE(temp);
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&href,
 			       ((*href != '\0' && *href != '#' &&
-			         me->inBASE) ?
+				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 	} else {
 	    if (bold_name_anchors == TRUE) {
-	        me->inBoldA = TRUE;
+		me->inBoldA = TRUE;
 	    }
 	}
 	if (present && present[HTML_A_TYPE] && value[HTML_A_TYPE]) {
@@ -2583,7 +2499,7 @@ PRIVATE void HTML_start_element ARGS6(
 
 	if (me->CurrentA && present) {
 	    if (present[HTML_A_TITLE] &&
-	        value[HTML_A_TITLE] && *value[HTML_A_TITLE] != '\0') {
+		value[HTML_A_TITLE] && *value[HTML_A_TITLE] != '\0') {
 		StrAllocCopy(title, value[HTML_A_TITLE]);
 		TRANSLATE_AND_UNESCAPE_ENTITIES(&title, TRUE, FALSE);
 		LYTrimHead(title);
@@ -2597,29 +2513,32 @@ PRIVATE void HTML_start_element ARGS6(
 	    if (present[HTML_A_CHARSET] &&
 		value[HTML_A_CHARSET] && *value[HTML_A_CHARSET] != '\0') {
 		/*
-		**  Set up to load the anchor's chartrans structures.
+		**  Set up to load the anchor's chartrans structures
+		**  appropriately for the current display character
+		**  set if it can handle what's claimed. - FM
 		*/
 		StrAllocCopy(temp, value[HTML_A_CHARSET]);
 		TRANSLATE_AND_UNESCAPE_TO_STD(&temp);
 		dest_char_set = UCGetLYhndl_byMIME(temp);
 		if (dest_char_set < 0) {
-		        dest_char_set = UCLYhndl_for_unrec;
+			dest_char_set = UCLYhndl_for_unrec;
 		}
 	    }
 	    if (title != NULL || dest_ismap == TRUE || dest_char_set >= 0) {
-	        dest = HTAnchor_parent(
+		dest = HTAnchor_parent(
 			HTAnchor_followMainLink((HTAnchor*)me->CurrentA)
-		    		      );
+				      );
 	    }
 	    if (dest && title != NULL && HTAnchor_title(dest) == NULL)
 		HTAnchor_setTitle(dest, title);
 	    if (dest && dest_ismap)
 		dest->isISMAPScript = TRUE;
 	    if (dest && dest_char_set >= 0) {
-	        /*
+		/*
 		**  Load the anchor's chartrans structures.
 		**  This should be done more intelligently
-		**  when setting up the structured object. - FM
+		**  when setting up the structured object,
+		**  but it gets the job done for now. - FM
 		*/
 		HTAnchor_setUCInfoStage(dest, dest_char_set,
 					UCT_STAGE_MIME,
@@ -2650,7 +2569,7 @@ PRIVATE void HTML_start_element ARGS6(
 	}
 #endif /* NOTUSED_FOTEMODS */
 	FREE(href);
-    	break;
+	break;
 
     case HTML_IMG:			/* Images */
 	/*
@@ -2666,14 +2585,14 @@ PRIVATE void HTML_start_element ARGS6(
 		if (dest->isISMAPScript == TRUE) {
 		    dest_ismap = TRUE;
 		    if (TRACE)
-		        fprintf(stderr,
+			fprintf(stderr,
 				"HTML: '%s' is an ISMAP script\n",
 				dest->address);
 		} else if (present && present[HTML_IMG_ISMAP]) {
 		    dest_ismap = TRUE;
 		    dest->isISMAPScript = TRUE;
 		    if (TRACE)
-		        fprintf(stderr,
+			fprintf(stderr,
 				"HTML: Designating '%s' as an ISMAP script\n",
 				dest->address);
 		}
@@ -2690,41 +2609,43 @@ PRIVATE void HTML_start_element ARGS6(
 	    CHECK_FOR_INTERN(map_href);
 	    url_type = LYLegitimizeHREF(me, (char**)&map_href, TRUE, TRUE);
 	    /*
-	     *  If map_href ended up zero-length or otherwise doesn't
-	     *  have a hash, it can't be valid, so ignore it. - FM
+	     *	If map_href ended up zero-length or otherwise doesn't
+	     *	have a hash, it can't be valid, so ignore it. - FM
 	     */
 	    if (strchr(map_href, '#') == NULL) {
-	        FREE(map_href);
+		FREE(map_href);
 	    }
 	}
 
-
+	/*
+	 *  Handle a MAP reference if we have one at this point. - FM
+	 */
 	if (map_href) {
 	    /*
-	     *  If the MAP reference doesn't yet begin with a scheme,
-	     *  check whether a base tag is in effect. - FM
+	     *	If the MAP reference doesn't yet begin with a scheme,
+	     *	check whether a base tag is in effect. - FM
 	     */
 	    if (!url_type && me->inBASE) {
 		/*
 		 *  If the
 		 *  USEMAP value is a lone fragment and LYSeekFragMAPinCur
 		 *  is set, we'll use the current document's URL for
-		 *  resolving.  Otherwise use the BASE. - kw
+		 *  resolving.	Otherwise use the BASE. - kw
 		 */
 		if ((*map_href == '#' &&
 		     LYSeekFragMAPinCur == TRUE)) {
-	 	    /*
-		     *  Use reference related to the current stream. - FM
+		    /*
+		     *	Use reference related to the current stream. - FM
 		     */
 		    temp = HTParse(map_href, me->node_anchor->address,
-		    		    PARSE_ALL);
+				    PARSE_ALL);
 		    StrAllocCopy(map_href, temp);
 		    UseBASE = FALSE;
 		} else {
 		    /*
-		     *  Use reference related to the base. - FM
+		     *	Use reference related to the base. - FM
 		     */
-	            temp = HTParse(map_href, me->base_href, PARSE_ALL);
+		    temp = HTParse(map_href, me->base_href, PARSE_ALL);
 		    StrAllocCopy(map_href, temp);
 		    UseBASE = TRUE;
 		}
@@ -2732,7 +2653,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&map_href,
 			       ((UseBASE && me->inBASE) ?
@@ -2740,17 +2661,17 @@ PRIVATE void HTML_start_element ARGS6(
 	    UseBASE = TRUE;
 
 	    /*
-	     *  If it's not yet a URL, resolve versus
-	     *  the current document's address. - FM
+	     *	If it's not yet a URL, resolve versus
+	     *	the current document's address. - FM
 	     */
 	    if (!(url_type = is_url(map_href))) {
-	    	temp = HTParse(map_href, me->node_anchor->address, PARSE_ALL);
+		temp = HTParse(map_href, me->node_anchor->address, PARSE_ALL);
 		StrAllocCopy(map_href, temp);
 		FREE(temp);
 	    }
 
 	    /*
-	     *  Prepend our client-side MAP access field. - FM
+	     *	Prepend our client-side MAP access field. - FM
 	     */
 	    StrAllocCopy(temp, "LYNXIMGMAP:");
 	    StrAllocCat(temp, map_href);
@@ -2795,52 +2716,52 @@ PRIVATE void HTML_start_element ARGS6(
 	    TRANSLATE_AND_UNESCAPE_ENTITIES(&alt_string,
 						   me->UsePlainSpace, me->HiddenValue);
 	    /*
-	     *  If it's all spaces and we are making SRC or
-	     *  USEMAP links, treat it as zero-length. - FM
+	     *	If it's all spaces and we are making SRC or
+	     *	USEMAP links, treat it as zero-length. - FM
 	     */
 	    if (clickable_images || map_href) {
-	        LYTrimHead(alt_string);
-	        LYTrimTail(alt_string);
+		LYTrimHead(alt_string);
+		LYTrimTail(alt_string);
 		if (*alt_string == '\0') {
 		    if (map_href) {
-		        StrAllocCopy(alt_string, (title ?
+			StrAllocCopy(alt_string, (title ?
 						  title : "[USEMAP]"));
 		    } else if (dest_ismap) {
-		        StrAllocCopy(alt_string, (title ?
+			StrAllocCopy(alt_string, (title ?
 						  title : "[ISMAP]"));
 		    } else if (me->inA == TRUE && dest) {
-		        StrAllocCopy(alt_string, (title ?
+			StrAllocCopy(alt_string, (title ?
 						  title : "[LINK]"));
 		    } else {
-		        StrAllocCopy(alt_string,
+			StrAllocCopy(alt_string,
 					     (title ? title :
 				(present[HTML_IMG_ISOBJECT] ?
-			     			 "(OBJECT)" : "[INLINE]")));
+						 "(OBJECT)" : "[INLINE]")));
 		    }
 		}
 	    }
 
 	} else if (map_href) {
 	    StrAllocCopy(alt_string, (title ?
-	    			      title : "[USEMAP]"));
+				      title : "[USEMAP]"));
 
 	} else if ((dest_ismap == TRUE) ||
 		   (me->inA && present && present[HTML_IMG_ISMAP])) {
 	    StrAllocCopy(alt_string, (title ?
-	    			      title : "[ISMAP]"));
+				      title : "[ISMAP]"));
 
 	} else if (me->inA == TRUE && dest) {
 	    StrAllocCopy(alt_string, (title ?
-	    			      title : "[LINK]"));
+				      title : "[LINK]"));
 
 	} else {
 	    if (pseudo_inline_alts || clickable_images)
-	        StrAllocCopy(alt_string, (title ? title :
+		StrAllocCopy(alt_string, (title ? title :
 			  ((present &&
 			    present[HTML_IMG_ISOBJECT]) ?
-			     		     "(OBJECT)" : "[INLINE]")));
+					     "(OBJECT)" : "[INLINE]")));
 	    else
-	        StrAllocCopy(alt_string, (title ?
+		StrAllocCopy(alt_string, (title ?
 					  title : ""));
 	}
 	if (*alt_string == '\0' && map_href) {
@@ -2849,7 +2770,7 @@ PRIVATE void HTML_start_element ARGS6(
 
 	if (TRACE) {
 	    fprintf(stderr,
-	    	    "HTML IMG: USEMAP=%d ISMAP=%d ANCHOR=%d PARA=%d\n",
+		    "HTML IMG: USEMAP=%d ISMAP=%d ANCHOR=%d PARA=%d\n",
 		    map_href ? 1 : 0,
 		    (dest_ismap == TRUE) ? 1 : 0,
 		    me->inA, me->inP);
@@ -2863,7 +2784,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    StrAllocCopy(id_string, value[HTML_IMG_ID]);
 	    TRANSLATE_AND_UNESCAPE_TO_STD(&id_string);
 	    if (*id_string == '\0') {
-	        FREE(id_string);
+		FREE(id_string);
 	    }
 	}
 
@@ -2877,7 +2798,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
 
 	    /*
-	     *  Check whether a base tag is in effect. - FM
+	     *	Check whether a base tag is in effect. - FM
 	     */
 	    if ((me->inBASE && *href != '\0' && *href != '#') &&
 		(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
@@ -2889,19 +2810,19 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(temp);
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&href,
 			       ((*href != '\0' && *href != '#' &&
-			         me->inBASE) ?
+				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 
 	    /*
-	     *  If it's an ISMAP and/or USEMAP, or graphic for an
-	     *  anchor, end that anchor and start one for the SRC. - FM
+	     *	If it's an ISMAP and/or USEMAP, or graphic for an
+	     *	anchor, end that anchor and start one for the SRC. - FM
 	     */
 	    if (me->inA) {
-	        /*
+		/*
 		 *  If we have a USEMAP, end this anchor and
 		 *  start a new one for the client-side MAP. - FM
 		 */
@@ -2916,7 +2837,7 @@ PRIVATE void HTML_start_element ARGS6(
 			HTML_put_string(me, "[LINK]");
 		    }
 		    if (me->inBoldA == TRUE && me->inBoldH == FALSE) {
-		        HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
+			HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		    }
 		    me->inBoldA = FALSE;
 		    HText_endAnchor(me->text, me->CurrentANum);
@@ -2924,40 +2845,40 @@ PRIVATE void HTML_start_element ARGS6(
 		    if (dest_ismap || dest)
 			HTML_put_character(me, '-');
 		    if (id_string) {
-		        if ((ID_A = HTAnchor_findChildAndLink(
+			if ((ID_A = HTAnchor_findChildAndLink(
 				  me->node_anchor,	/* Parent */
 				  id_string,		/* Tag */
-				  NULL,			/* Addresss */
+				  NULL, 		/* Addresss */
 				  (HTLinkType*)0)) != NULL) {	/* Type */
-		            HText_beginAnchor(me->text, me->inUnderline, ID_A);
-		            HText_endAnchor(me->text, 0);
-		        }
+			    HText_beginAnchor(me->text, me->inUnderline, ID_A);
+			    HText_endAnchor(me->text, 0);
+			}
 		    }
 		    me->CurrentA = HTAnchor_findChildAndLink(
-		    		me->node_anchor,	/* Parent */
+				me->node_anchor,	/* Parent */
 				NULL,			/* Tag */
 				map_href,		/* Addresss */
 				INTERN_LT);		/* Type */
 		    if (me->CurrentA && title) {
 			if ((dest = HTAnchor_parent(
 				HTAnchor_followMainLink((HTAnchor*)me->CurrentA)
-					          )) != NULL) {
+						  )) != NULL) {
 			    if (!HTAnchor_title(dest))
-			        HTAnchor_setTitle(dest, title);
+				HTAnchor_setTitle(dest, title);
 			}
 		    }
 		    me->CurrentANum = HText_beginAnchor(me->text,
-		    					me->inUnderline,
+							me->inUnderline,
 							me->CurrentA);
 		    if (me->inBoldA == FALSE && me->inBoldH == FALSE) {
-		        HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
+			HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
 		    }
 		    me->inBoldA = TRUE;
 		} else {
 		    HTML_put_character(me, ' ');/* space char may be ignored */
 		    me->in_word = NO;
 		}
-	        HTML_put_string(me, alt_string);
+		HTML_put_string(me, alt_string);
 		if (me->inBoldA == TRUE && me->inBoldH == FALSE) {
 		    HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		}
@@ -2969,32 +2890,32 @@ PRIVATE void HTML_start_element ARGS6(
 			     ((present &&
 			       present[HTML_IMG_ISOBJECT]) ?
 		   ((map_href || dest_ismap) ?
-			     	   "(IMAGE)" : "(OBJECT)") : "[IMAGE]"));
+				   "(IMAGE)" : "(OBJECT)") : "[IMAGE]"));
 		if (id_string && !map_href) {
 		    if ((ID_A = HTAnchor_findChildAndLink(
 				  me->node_anchor,	/* Parent */
 				  id_string,		/* Tag */
-				  NULL,			/* Addresss */
+				  NULL, 		/* Addresss */
 				  (HTLinkType*)0)) != NULL) {	/* Type */
-		        HText_beginAnchor(me->text, me->inUnderline, ID_A);
-		        HText_endAnchor(me->text, 0);
+			HText_beginAnchor(me->text, me->inUnderline, ID_A);
+			HText_endAnchor(me->text, 0);
 		    }
 		}
 	    } else if (map_href) {
-	        HTML_put_character(me, ' ');  /* space char may be ignored */
+		HTML_put_character(me, ' ');  /* space char may be ignored */
 		me->in_word = NO;
 		if (id_string) {
 		    if ((ID_A = HTAnchor_findChildAndLink(
 				  me->node_anchor,	/* Parent */
 				  id_string,		/* Tag */
-				  NULL,			/* Addresss */
+				  NULL, 		/* Addresss */
 				  (HTLinkType*)0)) != NULL) {	/* Type */
-		        HText_beginAnchor(me->text, me->inUnderline, ID_A);
-		        HText_endAnchor(me->text, 0);
+			HText_beginAnchor(me->text, me->inUnderline, ID_A);
+			HText_endAnchor(me->text, 0);
 		    }
 		}
 		me->CurrentA = HTAnchor_findChildAndLink(
-		    		me->node_anchor,	/* Parent */
+				me->node_anchor,	/* Parent */
 				NULL,			/* Tag */
 				map_href,		/* Addresss */
 				INTERN_LT);		/* Type */
@@ -3002,7 +2923,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    if ((dest = HTAnchor_parent(
 				HTAnchor_followMainLink((HTAnchor*)me->CurrentA)
 					      )) != NULL) {
-		        if (!HTAnchor_title(dest))
+			if (!HTAnchor_title(dest))
 			    HTAnchor_setTitle(dest, title);
 		    }
 		}
@@ -3012,7 +2933,7 @@ PRIVATE void HTML_start_element ARGS6(
 		if (me->inBoldA == FALSE && me->inBoldH == FALSE)
 		    HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
 		me->inBoldA = TRUE;
-	        HTML_put_string(me, alt_string);
+		HTML_put_string(me, alt_string);
 		if (me->inBoldA == TRUE && me->inBoldH == FALSE) {
 		    HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		}
@@ -3023,24 +2944,24 @@ PRIVATE void HTML_start_element ARGS6(
 		StrAllocCopy(alt_string,
 			     ((present &&
 			       present[HTML_IMG_ISOBJECT]) ?
-			     			  "(IMAGE)" : "[IMAGE]"));
+						  "(IMAGE)" : "[IMAGE]"));
 	    } else {
-	        HTML_put_character(me, ' ');  /* space char may be ignored */
+		HTML_put_character(me, ' ');  /* space char may be ignored */
 		me->in_word = NO;
 		if (id_string) {
 		    if ((ID_A = HTAnchor_findChildAndLink(
 				  me->node_anchor,	/* Parent */
 				  id_string,		/* Tag */
-				  NULL,			/* Addresss */
+				  NULL, 		/* Addresss */
 				  (HTLinkType*)0)) != NULL) {	/* Type */
-		        HText_beginAnchor(me->text, me->inUnderline, ID_A);
-		        HText_endAnchor(me->text, 0);
+			HText_beginAnchor(me->text, me->inUnderline, ID_A);
+			HText_endAnchor(me->text, 0);
 		    }
 		}
 	    }
 
 	    /*
-	     *  Create the link to the SRC. - FM
+	     *	Create the link to the SRC. - FM
 	     */
 	    me->CurrentA = HTAnchor_findChildAndLink(
 			me->node_anchor,		/* Parent */
@@ -3049,13 +2970,13 @@ PRIVATE void HTML_start_element ARGS6(
 			(HTLinkType*)0);		/* Type */
 	    FREE(href);
 	    me->CurrentANum = HText_beginAnchor(me->text,
-	    					me->inUnderline,
+						me->inUnderline,
 						me->CurrentA);
 	    if (me->inBoldH == FALSE)
 		HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
 	    HTML_put_string(me, alt_string);
 	    if (!me->inA) {
-	        if (me->inBoldH == FALSE)
+		if (me->inBoldH == FALSE)
 		    HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		HText_endAnchor(me->text, me->CurrentANum);
 		me->CurrentANum = 0;
@@ -3064,11 +2985,11 @@ PRIVATE void HTML_start_element ARGS6(
 	    } else {
 		HTML_put_character(me, ' ');  /* space char may be ignored */
 		me->in_word = NO;
-	        me->inBoldA = TRUE;
+		me->inBoldA = TRUE;
 	    }
 	} else if (map_href) {
 	    if (me->inA) {
-	        /*
+		/*
 		 *  We're in an anchor and have a USEMAP, so end the anchor
 		 *  and start a new one for the client-side MAP. - FM
 		 */
@@ -3091,24 +3012,24 @@ PRIVATE void HTML_start_element ARGS6(
 		    HTML_put_character(me, '-');
 		}
 	    } else {
-	        HTML_put_character(me, ' ');
-	        me->in_word = NO;
+		HTML_put_character(me, ' ');
+		me->in_word = NO;
 	    }
 	    me->CurrentA = HTAnchor_findChildAndLink(
-		    		me->node_anchor,	/* Parent */
+				me->node_anchor,	/* Parent */
 				NULL,			/* Tag */
 				map_href,		/* Addresss */
 				INTERN_LT);		/* Type */
 	    if (me->CurrentA && title) {
 		if ((dest = HTAnchor_parent(
 				HTAnchor_followMainLink((HTAnchor*)me->CurrentA)
-				          )) != NULL) {
+					  )) != NULL) {
 		    if (!HTAnchor_title(dest))
-		        HTAnchor_setTitle(dest, title);
+			HTAnchor_setTitle(dest, title);
 		}
 	    }
 	    me->CurrentANum = HText_beginAnchor(me->text,
-	    					me->inUnderline,
+						me->inUnderline,
 						me->CurrentA);
 	    if (me->inBoldA == FALSE && me->inBoldH == FALSE) {
 		HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
@@ -3116,7 +3037,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    me->inBoldA = TRUE;
 	    HTML_put_string(me, alt_string);
 	    if (!me->inA) {
-	        if (me->inBoldA == TRUE && me->inBoldH == FALSE) {
+		if (me->inBoldA == TRUE && me->inBoldH == FALSE) {
 		    HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		}
 		me->inBoldA = FALSE;
@@ -3125,9 +3046,9 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 	} else {
 	    /*
-	     *  Just put in the ALT or pseudo-ALT string
-	     *  for the current anchor or inline, with an
-	     *  ID link if indicated. - FM
+	     *	Just put in the ALT or pseudo-ALT string
+	     *	for the current anchor or inline, with an
+	     *	ID link if indicated. - FM
 	     */
 	    HTML_put_character(me, ' ');  /* space char may be ignored */
 	    me->in_word = NO;
@@ -3135,7 +3056,7 @@ PRIVATE void HTML_start_element ARGS6(
 		if ((ID_A = HTAnchor_findChildAndLink(
 				  me->node_anchor,	/* Parent */
 				  id_string,		/* Tag */
-				  NULL,			/* Addresss */
+				  NULL, 		/* Addresss */
 				  (HTLinkType*)0)) != NULL) {	/* Type */
 		    HText_beginAnchor(me->text, me->inUnderline, ID_A);
 		    HText_endAnchor(me->text, 0);
@@ -3167,7 +3088,7 @@ PRIVATE void HTML_start_element ARGS6(
 	if (id_string) {
 	    TRANSLATE_AND_UNESCAPE_TO_STD(&id_string);
 	    if (*id_string == '\0') {
-	        FREE(id_string);
+		FREE(id_string);
 	    }
 	}
 
@@ -3176,22 +3097,22 @@ PRIVATE void HTML_start_element ARGS6(
 	 */
 	if (id_string) {
 	    /*
-	     *  The MAP must be in the current stream, even if it
-	     *  had a BASE tag, so we'll use its address here, but
-	     *  still use the BASE, if present, when resolving the
-	     *  AREA elements in it's content, unless the AREA's
-	     *  HREF is a lone fragment and LYSeekFragAREAinCur is
-	     *  set. - FM && KW
+	     *	The MAP must be in the current stream, even if it
+	     *	had a BASE tag, so we'll use its address here, but
+	     *	still use the BASE, if present, when resolving the
+	     *	AREA elements in it's content, unless the AREA's
+	     *	HREF is a lone fragment and LYSeekFragAREAinCur is
+	     *	set. - FM && KW
 	     */
 	    StrAllocCopy(me->map_address, me->node_anchor->address);
 	    if ((cp = strrchr(me->map_address, '#')) != NULL)
-	        *cp = '\0';
+		*cp = '\0';
 	    StrAllocCat(me->map_address, "#");
 	    StrAllocCat(me->map_address, id_string);
 	    FREE(id_string);
 	    if (present && present[HTML_MAP_TITLE] &&
-	        value[HTML_MAP_TITLE] && *value[HTML_MAP_TITLE] != '\0') {
-	        StrAllocCopy(title, value[HTML_MAP_TITLE]);
+		value[HTML_MAP_TITLE] && *value[HTML_MAP_TITLE] != '\0') {
+		StrAllocCopy(title, value[HTML_MAP_TITLE]);
 		TRANSLATE_AND_UNESCAPE_ENTITIES(&title, TRUE, FALSE);
 		LYTrimHead(title);
 		LYTrimTail(title);
@@ -3202,28 +3123,28 @@ PRIVATE void HTML_start_element ARGS6(
 	    LYAddImageMap(me->map_address, title, me->node_anchor);
 	    FREE(title);
 	}
-        break;
+	break;
 
     case HTML_AREA:
-        if (me->map_address &&
+	if (me->map_address &&
 	    present && present[HTML_AREA_HREF] &&
 	    value[HTML_AREA_HREF] && *value[HTML_AREA_HREF]) {
 	    /*
-	     *  Resolve the HREF. - FM
+	     *	Resolve the HREF. - FM
 	     */
 	    StrAllocCopy(href, value[HTML_AREA_HREF]);
 	    CHECK_FOR_INTERN(href);
 	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
 
 	    /*
-	     *  Check whether a BASE tag is in effect, and use it
-	     *  for resolving, even though we used this stream's
-	     *  address for locating the MAP itself, unless the
-	     *  HREF is a lone fragment and LYSeekFragAREAinCur
-	     *  is set. - FM
+	     *	Check whether a BASE tag is in effect, and use it
+	     *	for resolving, even though we used this stream's
+	     *	address for locating the MAP itself, unless the
+	     *	HREF is a lone fragment and LYSeekFragAREAinCur
+	     *	is set. - FM
 	     */
 	    if (((me->inBASE && *href != '\0') &&
-	         !(*href == '#' && LYSeekFragAREAinCur == TRUE)) &&
+		 !(*href == '#' && LYSeekFragAREAinCur == TRUE)) &&
 		(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
 		*temp != '\0')
 		/*
@@ -3233,16 +3154,16 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(temp);
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&href,
 			       ((((me->inBASE && *href != '\0') &&
-			          !(*href == '#' &&
+				  !(*href == '#' &&
 				    LYSeekFragAREAinCur == TRUE)))
 						?
 				  me->base_href : me->node_anchor->address));
 	    if (!(url_type = is_url(href))) {
-	        temp = HTParse(href, me->node_anchor->address, PARSE_ALL);
+		temp = HTParse(href, me->node_anchor->address, PARSE_ALL);
 		if (!(temp && *temp)) {
 		   FREE(href);
 		   FREE(temp);
@@ -3253,17 +3174,17 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Check for an ALT. - FM
+	     *	Check for an ALT. - FM
 	     */
 	    if (present[HTML_AREA_ALT] &&
-	        value[HTML_AREA_ALT] && *value[HTML_AREA_ALT]) {
-	        StrAllocCopy(alt_string, value[HTML_AREA_ALT]);
+		value[HTML_AREA_ALT] && *value[HTML_AREA_ALT]) {
+		StrAllocCopy(alt_string, value[HTML_AREA_ALT]);
 	    } else if (present[HTML_AREA_TITLE] &&
-	        value[HTML_AREA_TITLE] && *value[HTML_AREA_TITLE]) {
+		value[HTML_AREA_TITLE] && *value[HTML_AREA_TITLE]) {
 		/*
 		 *  Use the TITLE as an ALT. - FM
 		 */
-	        StrAllocCopy(alt_string, value[HTML_AREA_TITLE]);
+		StrAllocCopy(alt_string, value[HTML_AREA_TITLE]);
 	    }
 	    if (alt_string != NULL) {
 		TRANSLATE_AND_UNESCAPE_ENTITIES(&alt_string,
@@ -3271,16 +3192,16 @@ PRIVATE void HTML_start_element ARGS6(
 		/*
 		 *  Make sure it's not just space(s). - FM
 		 */
-	        LYTrimHead(alt_string);
+		LYTrimHead(alt_string);
 		LYTrimTail(alt_string);
 		if (*alt_string == '\0') {
 		    StrAllocCopy(alt_string, href);
 		}
 	    } else {
-	        /*
+		/*
 		 *  Use the HREF as an ALT. - FM
 		 */
-	        StrAllocCopy(alt_string, href);
+		StrAllocCopy(alt_string, href);
 	    }
 
 	    LYAddMapElement(me->map_address, href, alt_string,
@@ -3288,10 +3209,10 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(href);
 	    FREE(alt_string);
 	}
-        break;
+	break;
 
     case HTML_PARAM:
-        /*
+	/*
 	 *  We may need to look at this someday to deal with
 	 *  MAPs, OBJECTs or APPLETs optimally, but just ignore
 	 *  it for now. - FM
@@ -3299,23 +3220,23 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_BODYTEXT:
-        CHECK_ID(HTML_BODYTEXT_ID);
-        /*
+	CHECK_ID(HTML_BODYTEXT_ID);
+	/*
 	 *  We may need to look at this someday to deal with
 	 *  OBJECTs optimally, but just ignore it for now. - FM
 	 */
 	break;
 
     case HTML_TEXTFLOW:
-        CHECK_ID(HTML_BODYTEXT_ID);
-        /*
+	CHECK_ID(HTML_BODYTEXT_ID);
+	/*
 	 *  We may need to look at this someday to deal with
 	 *  APPLETs optimally, but just ignore it for now. - FM
 	 */
 	break;
 
     case HTML_FIG:
-        me->inFIG = TRUE;
+	me->inFIG = TRUE;
 	if (me->inA) {
 	    SET_SKIP_STACK(HTML_A);
 	    HTML_end_element(me, HTML_A, (char **)&include);
@@ -3346,7 +3267,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    (temp = HTParse(href, me->base_href, PARSE_ALL)) &&
 		    *temp != '\0')
 		    /*
-		     *  Use reference related to the base.
+		     *	Use reference related to the base.
 		     */
 		    StrAllocCopy(href, temp);
 		FREE(temp);
@@ -3360,10 +3281,10 @@ PRIVATE void HTML_start_element ARGS6(
 				   me->base_href : me->node_anchor->address));
 
 		me->CurrentA = HTAnchor_findChildAndLink(
-		       			me->node_anchor,	/* Parent */
-		       			NULL,			/* Tag */
-		       			href,			/* Addresss */
-		       			INTERN_LT);		/* Type */
+					me->node_anchor,	/* Parent */
+					NULL,			/* Tag */
+					href,			/* Addresss */
+					INTERN_LT);		/* Type */
 		HText_beginAnchor(me->text, me->inUnderline, me->CurrentA);
 		if (me->inBoldH == FALSE)
 		    HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
@@ -3384,12 +3305,12 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_OBJECT:
 	if (!me->object_started) {
 	    /*
-	     *  This is an outer OBJECT start tag,
-	     *  i.e., not a nested OBJECT, so save
-	     *  it's relevant attributes. - FM
+	     *	This is an outer OBJECT start tag,
+	     *	i.e., not a nested OBJECT, so save
+	     *	it's relevant attributes. - FM
 	     */
 	    if (present) {
-	        if (present[HTML_OBJECT_DECLARE])
+		if (present[HTML_OBJECT_DECLARE])
 		    me->object_declare = TRUE;
 		if (present[HTML_OBJECT_SHAPES])
 		    me->object_shapes = TRUE;
@@ -3400,7 +3321,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    StrAllocCopy(me->object_usemap, value[HTML_OBJECT_USEMAP]);
 		    TRANSLATE_AND_UNESCAPE_TO_STD(&me->object_usemap);
 		    if (*me->object_usemap == '\0') {
-		        FREE(me->object_usemap);
+			FREE(me->object_usemap);
 		    }
 		}
 		if (present[HTML_OBJECT_ID] &&
@@ -3408,7 +3329,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    StrAllocCopy(me->object_id, value[HTML_OBJECT_ID]);
 		    TRANSLATE_AND_UNESCAPE_TO_STD(&me->object_id);
 		    if (*me->object_id == '\0') {
-		        FREE(me->object_id);
+			FREE(me->object_id);
 		    }
 		}
 		if (present[HTML_OBJECT_TITLE] &&
@@ -3418,7 +3339,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    LYTrimHead(me->object_title);
 		    LYTrimTail(me->object_title);
 		    if (me->object_title == '\0') {
-		        FREE(me->object_title);
+			FREE(me->object_title);
 		    }
 		}
 		if (present[HTML_OBJECT_DATA] &&
@@ -3426,7 +3347,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    StrAllocCopy(me->object_data, value[HTML_OBJECT_DATA]);
 		    TRANSLATE_AND_UNESCAPE_TO_STD(&me->object_data);
 		    if (*me->object_data == '\0') {
-		        FREE(me->object_data);
+			FREE(me->object_data);
 		    }
 		}
 		if (present[HTML_OBJECT_TYPE] &&
@@ -3436,41 +3357,41 @@ PRIVATE void HTML_start_element ARGS6(
 		    LYTrimHead(me->object_type);
 		    LYTrimTail(me->object_type);
 		    if (me->object_type == '\0') {
-		        FREE(me->object_type);
+			FREE(me->object_type);
 		    }
 		}
 		if (present[HTML_OBJECT_CLASSID] &&
 		    value[HTML_OBJECT_CLASSID] &&
 		    *value[HTML_OBJECT_CLASSID]) {
 		    StrAllocCopy(me->object_classid,
-		    		 value[HTML_OBJECT_CLASSID]);
+				 value[HTML_OBJECT_CLASSID]);
 		    TRANSLATE_AND_UNESCAPE_ENTITIES(&me->object_classid, TRUE, FALSE);
 		    LYTrimHead(me->object_classid);
 		    LYTrimTail(me->object_classid);
 		    if (me->object_classid == '\0') {
-		        FREE(me->object_classid);
+			FREE(me->object_classid);
 		    }
 		}
 		if (present[HTML_OBJECT_CODEBASE] &&
 		    value[HTML_OBJECT_CODEBASE] &&
 		    *value[HTML_OBJECT_CODEBASE]) {
 		    StrAllocCopy(me->object_codebase,
-		    		 value[HTML_OBJECT_CODEBASE]);
+				 value[HTML_OBJECT_CODEBASE]);
 		    TRANSLATE_AND_UNESCAPE_TO_STD(&me->object_codebase);
 		    if (*me->object_codebase == '\0') {
-		        FREE(me->object_codebase);
+			FREE(me->object_codebase);
 		    }
 		}
 		if (present[HTML_OBJECT_CODETYPE] &&
 		    value[HTML_OBJECT_CODETYPE] &&
 		    *value[HTML_OBJECT_CODETYPE]) {
 		    StrAllocCopy(me->object_codetype,
-		    		 value[HTML_OBJECT_CODETYPE]);
+				 value[HTML_OBJECT_CODETYPE]);
 		    TRANSLATE_AND_UNESCAPE_ENTITIES(&me->object_codetype, TRUE, FALSE);
 		    LYTrimHead(me->object_codetype);
 		    LYTrimTail(me->object_codetype);
 		    if (me->object_codetype == '\0') {
-		        FREE(me->object_codetype);
+			FREE(me->object_codetype);
 		    }
 		}
 		if (present[HTML_OBJECT_NAME] &&
@@ -3480,12 +3401,12 @@ PRIVATE void HTML_start_element ARGS6(
 		    LYTrimHead(me->object_name);
 		    LYTrimTail(me->object_name);
 		    if (me->object_name == '\0') {
-		        FREE(me->object_name);
+			FREE(me->object_name);
 		    }
 		}
 	    }
 	    /*
-	     *  Set flag that we are accumulating OBJECT content. - FM
+	     *	Set flag that we are accumulating OBJECT content. - FM
 	     */
 	    me->object_started = TRUE;
 	}
@@ -3506,7 +3427,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    (temp = HTParse(href, me->base_href, PARSE_ALL)) &&
 		    *temp != '\0')
 		    /*
-		     *  Use reference related to the base.
+		     *	Use reference related to the base.
 		     */
 		    StrAllocCopy(href, temp);
 		FREE(temp);
@@ -3547,7 +3468,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_APPLET:
-        me->inAPPLET = TRUE;
+	me->inAPPLET = TRUE;
 	me->inAPPLETwithP = FALSE;
 	HTML_put_character(me, ' ');  /* space char may be ignored */
 	/*
@@ -3578,12 +3499,12 @@ PRIVATE void HTML_start_element ARGS6(
 	    TRANSLATE_AND_UNESCAPE_ENTITIES(&alt_string,
 						   me->UsePlainSpace, me->HiddenValue);
 	    /*
-	     *  If it's all spaces and we are making sources links,
-	     *  treat it as zero-length. - FM
+	     *	If it's all spaces and we are making sources links,
+	     *	treat it as zero-length. - FM
 	     */
 	    if (clickable_images) {
-	        LYTrimHead(alt_string);
-	        LYTrimTail(alt_string);
+		LYTrimHead(alt_string);
+		LYTrimTail(alt_string);
 		if (*alt_string == '\0') {
 		    StrAllocCopy(alt_string, "[APPLET]");
 		}
@@ -3591,9 +3512,9 @@ PRIVATE void HTML_start_element ARGS6(
 
 	} else {
 	    if (clickable_images)
-	        StrAllocCopy(alt_string, "[APPLET]");
+		StrAllocCopy(alt_string, "[APPLET]");
 	    else
-	        StrAllocCopy(alt_string, "");
+		StrAllocCopy(alt_string, "");
 	}
 
 	/*
@@ -3605,11 +3526,11 @@ PRIVATE void HTML_start_element ARGS6(
 	    char * code = NULL;
 
 	    /*
-	     *  Check for a CODEBASE attribute. - FM
+	     *	Check for a CODEBASE attribute. - FM
 	     */
 	    if (present[HTML_APPLET_CODEBASE] &&
-	        value[HTML_APPLET_CODEBASE] && *value[HTML_APPLET_CODEBASE]) {
-	        StrAllocCopy(base, value[HTML_APPLET_CODEBASE]);
+		value[HTML_APPLET_CODEBASE] && *value[HTML_APPLET_CODEBASE]) {
+		StrAllocCopy(base, value[HTML_APPLET_CODEBASE]);
 		collapse_spaces(base);
 		TRANSLATE_AND_UNESCAPE_TO_STD(&base);
 		/*
@@ -3630,12 +3551,12 @@ PRIVATE void HTML_start_element ARGS6(
 
 		if (!(url_type = is_url(base))) {
 		    /*
-		     *  Check whether a base tag is in effect.
+		     *	Check whether a base tag is in effect.
 		     */
 		    if (me->inBASE) {
-		        temp = HTParse(base, me->base_href, PARSE_ALL);
+			temp = HTParse(base, me->base_href, PARSE_ALL);
 		    } else {
-		        temp = HTParse(base, me->node_anchor->address,
+			temp = HTParse(base, me->node_anchor->address,
 							PARSE_ALL);
 		    }
 		    StrAllocCopy(base, temp);
@@ -3656,13 +3577,13 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(code);
 
 	    if (href && *href) {
-	        if (me->inA) {
+		if (me->inA) {
 		    if (me->inBoldA == TRUE && me->inBoldH == FALSE)
-		        HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
+			HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		    HText_endAnchor(me->text, me->CurrentANum);
 		    HTML_put_character(me, '-');
 		}
-	        me->CurrentA = HTAnchor_findChildAndLink(
+		me->CurrentA = HTAnchor_findChildAndLink(
 					me->node_anchor,	/* Parent */
 					NULL,			/* Tag */
 					href,			/* Addresss */
@@ -3675,7 +3596,7 @@ PRIVATE void HTML_start_element ARGS6(
 		HTML_put_string(me, alt_string);
 		if (me->inA == FALSE) {
 		    if (me->inBoldH == FALSE)
-		        HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
+			HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		    HText_endAnchor(me->text, me->CurrentANum);
 		    me->CurrentANum = 0;
 		}
@@ -3685,7 +3606,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(href);
 	} else if (*alt_string) {
 	    /*
-	     *  Just put up the ALT string, if non-zero. - FM
+	     *	Just put up the ALT string, if non-zero. - FM
 	     */
 	    HTML_put_string(me, alt_string);
 	    HTML_put_character(me, ' ');  /* space char may be ignored */
@@ -3705,12 +3626,12 @@ PRIVATE void HTML_start_element ARGS6(
 	    CHECK_FOR_INTERN(href);
 	    url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
 	    if (*href == '\0') {
-	        FREE(href);
+		FREE(href);
 		break;
 	    }
 
 	    /*
-	     *  Check whether a base tag is in effect. - FM
+	     *	Check whether a base tag is in effect. - FM
 	     */
 	    if ((me->inBASE && *href != '#') &&
 		(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
@@ -3722,11 +3643,11 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(temp);
 
 	    /*
-	     *  Check whether to fill in localhost. - FM
+	     *	Check whether to fill in localhost. - FM
 	     */
 	    LYFillLocalFileURL((char **)&href,
 			       ((*href != '#' &&
-			         me->inBASE) ?
+				 me->inBASE) ?
 			       me->base_href : me->node_anchor->address));
 
 	    if (me->inA) {
@@ -3744,7 +3665,7 @@ PRIVATE void HTML_start_element ARGS6(
 					href,			/* Addresss */
 					INTERN_LT);		/* Type */
 	    me->CurrentANum = HText_beginAnchor(me->text,
-	    					me->inUnderline,
+						me->inUnderline,
 						me->CurrentA);
 	    if (me->inBoldH == FALSE)
 		HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
@@ -3793,21 +3714,21 @@ PRIVATE void HTML_start_element ARGS6(
 	    TRANSLATE_AND_UNESCAPE_ENTITIES(&alt_string,
 						   me->UsePlainSpace, me->HiddenValue);
 	    /*
-	     *  If it's all spaces and we are making sources links,
-	     *  treat it as zero-length. - FM
+	     *	If it's all spaces and we are making sources links,
+	     *	treat it as zero-length. - FM
 	     */
 	    if (clickable_images) {
-	        LYTrimHead(alt_string);
-	        LYTrimTail(alt_string);
+		LYTrimHead(alt_string);
+		LYTrimTail(alt_string);
 		if (*alt_string == '\0') {
 		    StrAllocCopy(alt_string, "[EMBED]");
 		}
 	    }
 	} else {
 	    if (pseudo_inline_alts || clickable_images)
-	        StrAllocCopy(alt_string, "[EMBED]");
+		StrAllocCopy(alt_string, "[EMBED]");
 	    else
-	        StrAllocCopy(alt_string, "");
+		StrAllocCopy(alt_string, "");
 	}
 
 	/*
@@ -3826,7 +3747,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    (temp = HTParse(href, me->base_href, PARSE_ALL)) &&
 		    *temp != '\0')
 		    /*
-		     *  Use reference related to the base.
+		     *	Use reference related to the base.
 		     */
 		    StrAllocCopy(href, temp);
 		FREE(temp);
@@ -3839,9 +3760,9 @@ PRIVATE void HTML_start_element ARGS6(
 				     me->inBASE) ?
 				   me->base_href : me->node_anchor->address));
 
-	        if (me->inA) {
+		if (me->inA) {
 		    if (me->inBoldA == TRUE && me->inBoldH == FALSE)
-		        HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
+			HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		    HText_endAnchor(me->text, me->CurrentANum);
 		    HTML_put_character(me, '-');
 		}
@@ -3860,7 +3781,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		if (me->inA == FALSE) {
 		    if (me->inBoldH == FALSE)
-		        HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
+			HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 		    HText_endAnchor(me->text, me->CurrentANum);
 		    me->CurrentANum = 0;
 		}
@@ -3870,7 +3791,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    FREE(href);
 	} else if (*alt_string) {
 	    /*
-	     *  Just put up the ALT string, if non-zero. - FM
+	     *	Just put up the ALT string, if non-zero. - FM
 	     */
 	    HTML_put_string(me, alt_string);
 	    HTML_put_character(me, ' ');  /* space char may be ignored */
@@ -3894,15 +3815,15 @@ PRIVATE void HTML_start_element ARGS6(
 
 	if (me->inFIG)
 	    /*
-	     *  Assume all text in the FIG container is intended
-	     *  to be paragraphed. - FM
+	     *	Assume all text in the FIG container is intended
+	     *	to be paragraphed. - FM
 	     */
 	    me->inFIGwithP = TRUE;
 
 	if (me->inAPPLET)
 	    /*
-	     *  Assume all text in the APPLET container is intended
-	     *  to be paragraphed. - FM
+	     *	Assume all text in the APPLET container is intended
+	     *	to be paragraphed. - FM
 	     */
 	    me->inAPPLETwithP = TRUE;
 
@@ -3925,15 +3846,15 @@ PRIVATE void HTML_start_element ARGS6(
 
 	if (me->inFIG)
 	    /*
-	     *  Assume all text in the FIG container is intended
-	     *  to be paragraphed. - FM
+	     *	Assume all text in the FIG container is intended
+	     *	to be paragraphed. - FM
 	     */
 	    me->inFIGwithP = TRUE;
 
 	if (me->inAPPLET)
 	    /*
-	     *  Assume all text in the APPLET container is intended
-	     *  to be paragraphed. - FM
+	     *	Assume all text in the APPLET container is intended
+	     *	to be paragraphed. - FM
 	     */
 	    me->inAPPLETwithP = TRUE;
 
@@ -3953,15 +3874,15 @@ PRIVATE void HTML_start_element ARGS6(
 	    HTAnchor *link_dest;
 
 	    /*
-	     *  FORM may have been declared SGML_EMPTY in HTMLDTD.c, and
-	     *  SGML_character() in SGML.c may check for a FORM end
-	     *  tag to call HTML_end_element() directly (with a
-	     *  check in that to bypass decrementing of the HTML
-	     *  parser's stack), so if we have an open FORM, close
-	     *  that one now. - FM
+	     *	FORM may have been declared SGML_EMPTY in HTMLDTD.c, and
+	     *	SGML_character() in SGML.c may check for a FORM end
+	     *	tag to call HTML_end_element() directly (with a
+	     *	check in that to bypass decrementing of the HTML
+	     *	parser's stack), so if we have an open FORM, close
+	     *	that one now. - FM
 	     */
 	    if (me->inFORM) {
-	        if (TRACE) {
+		if (TRACE) {
 		    fprintf(stderr,
 			    "HTML: Missing FORM end tag. Faking it!\n");
 		}
@@ -3970,17 +3891,17 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Set to know we are in a new form.
+	     *	Set to know we are in a new form.
 	     */
 	    me->inFORM = TRUE;
 
 	    if (present && present[HTML_FORM_ACCEPT_CHARSET]) {
-	    	accept_cs = value[HTML_FORM_ACCEPT_CHARSET] ?
-		    	    value[HTML_FORM_ACCEPT_CHARSET] : "UNKNOWN";
+		accept_cs = value[HTML_FORM_ACCEPT_CHARSET] ?
+			    value[HTML_FORM_ACCEPT_CHARSET] : "UNKNOWN";
 	    }
 	    if (present && present[HTML_FORM_ACTION] &&
-	        value[HTML_FORM_ACTION])  {
-	        /*
+		value[HTML_FORM_ACTION])  {
+		/*
 		 *  Prepare to do housekeeping on the reference. - FM
 		 */
 		StrAllocCopy(action, value[HTML_FORM_ACTION]);
@@ -3994,57 +3915,57 @@ PRIVATE void HTML_start_element ARGS6(
 		if ((me->inBASE && me->base_href && *me->base_href) &&
 		    (temp = HTParse(action, me->base_href, PARSE_ALL)) &&
 		    *temp != '\0') {
-	            /*
-		     *  Use action related to the base.
+		    /*
+		     *	Use action related to the base.
 		     */
 		    StrAllocCopy(action, temp);
-	        } else if ((temp = HTParse(action,
+		} else if ((temp = HTParse(action,
 					   me->node_anchor->address,
 					   PARSE_ALL)) &&
 		    *temp != '\0') {
-	            /*
-		     *  Use action related to the current document.
+		    /*
+		     *	Use action related to the current document.
 		     */
 		    StrAllocCopy(action, temp);
-	        } else {
+		} else {
 		    FREE(action);
 		}
 		FREE(temp);
 	    }
 	    if (!(action && *action)) {
-	    	if (me->inBASE && me->base_href && *me->base_href) {
+		if (me->inBASE && me->base_href && *me->base_href) {
 		     StrAllocCopy(action, me->base_href);
 		} else {
 		     StrAllocCopy(action, me->node_anchor->address);
 		}
 	    }
 	    if (action) {
-	        source = HTAnchor_findChildAndLink(me->node_anchor,
+		source = HTAnchor_findChildAndLink(me->node_anchor,
 						   NULL,
 						   action,
 						   (HTLinkType*)0);
 		if ((link_dest = HTAnchor_followMainLink((HTAnchor *)source)) != NULL) {
 		    /*
-		     *  Memory leak fixed.
-		     *  05-28-94 Lynx 2-3-1 Garrett Arch Blythe
+		     *	Memory leak fixed.
+		     *	05-28-94 Lynx 2-3-1 Garrett Arch Blythe
 		     */
 		    auto char *cp_freeme = HTAnchor_address(link_dest);
-                    if (cp_freeme != NULL) {
-                    	StrAllocCopy(action, cp_freeme);
+		    if (cp_freeme != NULL) {
+			StrAllocCopy(action, cp_freeme);
 			FREE(cp_freeme);
 		    } else {
-                    	StrAllocCopy(action, "");
+			StrAllocCopy(action, "");
 		    }
 		}
 	    }
 
 	    if (present && present[HTML_FORM_METHOD])
-	    	StrAllocCopy(method, value[HTML_FORM_METHOD] ?
+		StrAllocCopy(method, value[HTML_FORM_METHOD] ?
 				     value[HTML_FORM_METHOD] : "GET");
 
 	    if (present && present[HTML_FORM_ENCTYPE] &&
-	        value[HTML_FORM_ENCTYPE] && *value[HTML_FORM_ENCTYPE]) {
-	    	StrAllocCopy(enctype, value[HTML_FORM_ENCTYPE]);
+		value[HTML_FORM_ENCTYPE] && *value[HTML_FORM_ENCTYPE]) {
+		StrAllocCopy(enctype, value[HTML_FORM_ENCTYPE]);
 		/*
 		 *  Force the enctype value to all lower case. - FM
 		 */
@@ -4057,11 +3978,11 @@ PRIVATE void HTML_start_element ARGS6(
 		 *  Check for a TITLE attribute, and if none is present,
 		 *  check for a SUBJECT attribute as a synonym. - FM
 		 */
-	        if (present[HTML_FORM_TITLE] &&
-	            value[HTML_FORM_TITLE] &&
+		if (present[HTML_FORM_TITLE] &&
+		    value[HTML_FORM_TITLE] &&
 		    *value[HTML_FORM_TITLE] != '\0') {
 		    StrAllocCopy(title, value[HTML_FORM_TITLE]);
-	        } else if (present[HTML_FORM_SUBJECT] &&
+		} else if (present[HTML_FORM_SUBJECT] &&
 			   value[HTML_FORM_SUBJECT] &&
 			   *value[HTML_FORM_SUBJECT] != '\0') {
 		    StrAllocCopy(title, value[HTML_FORM_SUBJECT]);
@@ -4071,7 +3992,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    LYTrimHead(title);
 		    LYTrimTail(title);
 		    if (*title == '\0') {
-		        FREE(title);
+			FREE(title);
 		    }
 		}
 	    }
@@ -4089,22 +4010,22 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_FIELDSET:
 	LYEnsureDoubleSpace(me);
 	LYResetParagraphAlignment(me);
-        CHECK_ID(HTML_FIELDSET_ID);
-        break;
+	CHECK_ID(HTML_FIELDSET_ID);
+	break;
 
     case HTML_LEGEND:
 	LYEnsureDoubleSpace(me);
 	LYResetParagraphAlignment(me);
-        CHECK_ID(HTML_LEGEND_ID);
-        break;
+	CHECK_ID(HTML_LEGEND_ID);
+	break;
 
     case HTML_LABEL:
-        CHECK_ID(HTML_LABEL_ID);
-        break;
+	CHECK_ID(HTML_LABEL_ID);
+	break;
 
     case HTML_KEYGEN:
-        CHECK_ID(HTML_KEYGEN_ID);
-        break;
+	CHECK_ID(HTML_KEYGEN_ID);
+	break;
 
     case HTML_BUTTON:
 	{
@@ -4123,15 +4044,15 @@ PRIVATE void HTML_start_element ARGS6(
 
 	    UPDATE_STYLE;
 	    if ((present && present[HTML_BUTTON_TYPE] &&
-	         value[HTML_BUTTON_TYPE]) &&
+		 value[HTML_BUTTON_TYPE]) &&
 		(!strcasecomp(value[HTML_BUTTON_TYPE], "submit") ||
 		 !strcasecomp(value[HTML_BUTTON_TYPE], "reset"))) {
-	        /*
+		/*
 		 *  It's a button for submitting or resetting a form. - FM
 		 */
 		I.type = value[HTML_BUTTON_TYPE];
 	    } else {
-	        /*
+		/*
 		 *  Ugh, it's a button for a script. - FM
 		 */
 		HTML_put_string(me," [BUTTON] ");
@@ -4139,13 +4060,14 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Make sure we're in a form.
+	     *	Make sure we're in a form.
 	     */
 	    if (!me->inFORM) {
-	        if (TRACE) {
-		    fprintf(stderr, "Bad HTML: BUTTON tag not within FORM element *****\n");
+		if (TRACE) {
+		    fprintf(stderr,
+			    "Bad HTML: BUTTON tag not within FORM tag\n");
 		} else if (!me->inBadHTML) {
-	            _statusline(BAD_HTML_USE_TRACE);
+		    _statusline(BAD_HTML_USE_TRACE);
 		    me->inBadHTML = TRUE;
 		    sleep(MessageSecs);
 		}
@@ -4158,13 +4080,13 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Before any input field, add a collapsible space if
-	     *  we're not in a PRE block, to promote a wrap there
-	     *  for any long values that would extent past the right
-	     *  margin from our current position in the line.  If
-	     *  we are in a PRE block, start a new line if the last
-	     *  line already is within 6 characters of the wrap point
-	     *  for PRE blocks. - FM
+	     *	Before any input field, add a collapsible space if
+	     *	we're not in a PRE block, to promote a wrap there
+	     *	for any long values that would extent past the right
+	     *	margin from our current position in the line.  If
+	     *	we are in a PRE block, start a new line if the last
+	     *	line already is within 6 characters of the wrap point
+	     *	for PRE blocks. - FM
 	     */
 	    if (me->sp[0].tag_number != HTML_PRE && !me->inPRE &&
 		me->sp->style->freeFormat) {
@@ -4178,7 +4100,7 @@ PRIVATE void HTML_start_element ARGS6(
 
 	    if (!(present && present[HTML_BUTTON_NAME] &&
 		  value[HTML_BUTTON_NAME])) {
-	        I.name = "";
+		I.name = "";
 	    } else if (strchr(value[HTML_BUTTON_NAME], '&') == NULL) {
 		I.name = value[HTML_BUTTON_NAME];
 	    } else {
@@ -4188,8 +4110,8 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    if (present && present[HTML_BUTTON_VALUE] &&
-	        value[HTML_BUTTON_VALUE] && *value[HTML_BUTTON_VALUE]) {
-	        /*
+		value[HTML_BUTTON_VALUE] && *value[HTML_BUTTON_VALUE]) {
+		/*
 		 *  Convert any HTML entities or decimal escaping. - FM
 		 */
 		int len;
@@ -4215,29 +4137,29 @@ PRIVATE void HTML_start_element ARGS6(
 		I.disabled = YES;
 
 	    if (present && present[HTML_BUTTON_CLASS] && /* Not yet used. */
-	        value[HTML_BUTTON_CLASS] && *value[HTML_BUTTON_CLASS])
+		value[HTML_BUTTON_CLASS] && *value[HTML_BUTTON_CLASS])
 		I.class = value[HTML_BUTTON_CLASS];
 
 	    if (present && present[HTML_BUTTON_ID] &&
-	        value[HTML_BUTTON_ID] && *value[HTML_BUTTON_ID]) {
+		value[HTML_BUTTON_ID] && *value[HTML_BUTTON_ID]) {
 		I.id = value[HTML_BUTTON_ID];
 		CHECK_ID(HTML_BUTTON_ID);
 	    }
 
 	    if (present && present[HTML_BUTTON_LANG] && /* Not yet used. */
-	        value[HTML_BUTTON_LANG] && *value[HTML_BUTTON_LANG])
+		value[HTML_BUTTON_LANG] && *value[HTML_BUTTON_LANG])
 		I.lang = value[HTML_BUTTON_LANG];
 
 	    chars = HText_beginInput(me->text, me->inUnderline, &I);
 	    /*
-	     *  Submit and reset buttons have values which don't change,
-	     *  so HText_beginInput() sets I.value to the string which
-	     *  should be displayed, and we'll enter that instead of
-	     *  underscore placeholders into the HText structure to
-	     *  see it instead of underscores when dumping or printing.
-	     *  We also won't worry about a wrap in PRE blocks, because
-	     *  the line editor never is invoked for submit or reset
-	     *  buttons. - LE & FM
+	     *	Submit and reset buttons have values which don't change,
+	     *	so HText_beginInput() sets I.value to the string which
+	     *	should be displayed, and we'll enter that instead of
+	     *	underscore placeholders into the HText structure to
+	     *	see it instead of underscores when dumping or printing.
+	     *	We also won't worry about a wrap in PRE blocks, because
+	     *	the line editor never is invoked for submit or reset
+	     *	buttons. - LE & FM
 	     */
 	    if (me->sp[0].tag_number == HTML_PRE ||
 		    !me->sp->style->freeFormat) {
@@ -4271,9 +4193,9 @@ PRIVATE void HTML_start_element ARGS6(
 		 *  (shouldn't have), we'll continue padding with nbsp
 		 *  up to the length of chars. - FM
 		 */
-	        for (i = 0; I.value[i]; i++) {
+		for (i = 0; I.value[i]; i++) {
 		    HTML_put_character(me,
-			   	       (I.value[i] ==  ' ' ?
+				       (I.value[i] ==  ' ' ?
 					HT_NON_BREAK_SPACE : I.value[i]));
 		}
 		while (i < chars) {
@@ -4312,13 +4234,13 @@ PRIVATE void HTML_start_element ARGS6(
 	    UPDATE_STYLE;
 
 	    /*
-	     *  Before any input field, add a collapsible space if
-	     *  we're not in a PRE block, to promote a wrap there
-	     *  for any long values that would extent past the right
-	     *  margin from our current position in the line.  If
-	     *  we are in a PRE block, start a new line if the last
-	     *  line already is within 6 characters of the wrap point
-	     *  for PRE blocks. - FM
+	     *	Before any input field, add a collapsible space if
+	     *	we're not in a PRE block, to promote a wrap there
+	     *	for any long values that would extent past the right
+	     *	margin from our current position in the line.  If
+	     *	we are in a PRE block, start a new line if the last
+	     *	line already is within 6 characters of the wrap point
+	     *	for PRE blocks. - FM
 	     */
 	    if (me->sp[0].tag_number != HTML_PRE && !me->inPRE &&
 		me->sp->style->freeFormat) {
@@ -4330,19 +4252,19 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Get the TYPE and make sure we can handle it. - FM
+	     *	Get the TYPE and make sure we can handle it. - FM
 	     */
 	    if (present && present[HTML_INPUT_TYPE] &&
-	        value[HTML_INPUT_TYPE] && *value[HTML_INPUT_TYPE]) {
+		value[HTML_INPUT_TYPE] && *value[HTML_INPUT_TYPE]) {
 		I.type = value[HTML_INPUT_TYPE];
 
 		if (!strcasecomp(I.type, "range")) {
 		    if (present[HTML_INPUT_MIN])
-		        I.min = value[HTML_INPUT_MIN];
+			I.min = value[HTML_INPUT_MIN];
 		    if (present[HTML_INPUT_MAX])
-		        I.max = value[HTML_INPUT_MAX];
+			I.max = value[HTML_INPUT_MAX];
 		    /*
-		     *  Not yet implemented.
+		     *	Not yet implemented.
 		     */
 		    HTML_put_string(me,"[RANGE Input] (Not yet implemented.)");
 #ifdef NOTDEFINED
@@ -4350,22 +4272,22 @@ PRIVATE void HTML_start_element ARGS6(
 			HText_DisableCurrentForm();
 #endif /* NOTDEFINED */
 		    if (TRACE)
-		        fprintf(stderr, "HTML: Ignoring TYPE=\"range\"\n");
+			fprintf(stderr, "HTML: Ignoring TYPE=\"range\"\n");
 		    break;
 
 		} else if (!strcasecomp(I.type, "file")) {
 		    if (present[HTML_INPUT_ACCEPT])
-		        I.accept = value[HTML_INPUT_ACCEPT];
+			I.accept = value[HTML_INPUT_ACCEPT];
 		    /*
-		     *  Not yet implemented.
+		     *	Not yet implemented.
 		     */
 		    if (me->inUnderline == FALSE) {
-		        HText_appendCharacter(me->text,
+			HText_appendCharacter(me->text,
 					      LY_UNDERLINE_START_CHAR);
 		    }
 		    HTML_put_string(me,"[FILE Input] (Not yet implemented.)");
 		    if (me->inUnderline == FALSE) {
-		        HText_appendCharacter(me->text,
+			HText_appendCharacter(me->text,
 					      LY_UNDERLINE_END_CHAR);
 		    }
 #ifdef NOTDEFINED
@@ -4373,12 +4295,12 @@ PRIVATE void HTML_start_element ARGS6(
 			HText_DisableCurrentForm();
 #endif /* NOTDEFINED */
 		    if (TRACE)
-		        fprintf(stderr, "HTML: Ignoring TYPE=\"file\"\n");
+			fprintf(stderr, "HTML: Ignoring TYPE=\"file\"\n");
 		    break;
 
 		} else if (!strcasecomp(I.type, "button")) {
 		    /*
-		     *  Ugh, a button for a script.
+		     *	Ugh, a button for a script.
 		     */
 		    HTML_put_string(me,"[BUTTON] ");
 		    break;
@@ -4386,13 +4308,14 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Check if we're in a form. - FM
+	     *	Check if we're in a form. - FM
 	     */
 	    if (!me->inFORM) {
-	        if (TRACE) {
-		    fprintf(stderr, "Bad HTML: INPUT tag not within FORM element *****\n");
+		if (TRACE) {
+		    fprintf(stderr,
+			    "Bad HTML: INPUT tag not within FORM tag\n");
 		} else if (!me->inBadHTML) {
-	            _statusline(BAD_HTML_USE_TRACE);
+		    _statusline(BAD_HTML_USE_TRACE);
 		    me->inBadHTML = TRUE;
 		    sleep(MessageSecs);
 		}
@@ -4405,12 +4328,12 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Check for an unclosed TEXTAREA.
+	     *	Check for an unclosed TEXTAREA.
 	     */
 	    if (me->inTEXTAREA) {
-	        if (TRACE) {
+		if (TRACE) {
 		    fprintf(stderr,
-			    "Bad HTML: Missing TEXTAREA end tag. *****\n");
+			    "Bad HTML: Missing TEXTAREA end tag.\n");
 		} else if (!me->inBadHTML) {
 		    _statusline(BAD_HTML_USE_TRACE);
 		    me->inBadHTML = TRUE;
@@ -4419,10 +4342,10 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Check for an unclosed SELECT, try to close it if found.
+	     *	Check for an unclosed SELECT, try to close it if found.
 	     */
 	    if (me->inSELECT) {
-	        if (TRACE) {
+		if (TRACE) {
 		    fprintf(stderr, "HTML: Missing SELECT end tag, faking it...\n");
 		}
 		if (me->sp->tag_number != HTML_SELECT) {
@@ -4432,11 +4355,11 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 
 	    /*
-	     *  Handle the INPUT as for a FORM. - FM
+	     *	Handle the INPUT as for a FORM. - FM
 	     */
 	    if (!(present && present[HTML_INPUT_NAME] &&
 		  value[HTML_INPUT_NAME])) {
-	        I.name = "";
+		I.name = "";
 	    } else if (strchr(value[HTML_INPUT_NAME], '&') == NULL) {
 		I.name = value[HTML_INPUT_NAME];
 	    } else {
@@ -4448,7 +4371,7 @@ PRIVATE void HTML_start_element ARGS6(
 		 value[HTML_INPUT_ALT] && *value[HTML_INPUT_ALT] &&
 		 I.type && !strcasecomp(I.type, "image")) &&
 		!(present && present[HTML_INPUT_VALUE] &&
-	          value[HTML_INPUT_VALUE] && *value[HTML_INPUT_VALUE])) {
+		  value[HTML_INPUT_VALUE] && *value[HTML_INPUT_VALUE])) {
 		/*
 		 *  This is a TYPE="image" using an ALT rather than
 		 *  VALUE attribute to indicate the link string for
@@ -4459,8 +4382,8 @@ PRIVATE void HTML_start_element ARGS6(
 		UseALTasVALUE = TRUE;
 	    }
 	    if (clickable_images == TRUE &&
-	        present && present[HTML_INPUT_SRC] &&
-	        value[HTML_INPUT_SRC] && *value[HTML_INPUT_SRC] &&
+		present && present[HTML_INPUT_SRC] &&
+		value[HTML_INPUT_SRC] && *value[HTML_INPUT_SRC] &&
 		I.type && !strcasecomp(I.type, "image")) {
 		StrAllocCopy(href, value[HTML_INPUT_SRC]);
 		/*
@@ -4472,7 +4395,7 @@ PRIVATE void HTML_start_element ARGS6(
 		url_type = LYLegitimizeHREF(me, (char**)&href, TRUE, TRUE);
 		if (*href) {
 		    /*
-		     *  Check whether a base tag is in effect. - FM
+		     *	Check whether a base tag is in effect. - FM
 		     */
 		    if ((me->inBASE && *href != '#') &&
 			(temp = HTParse(href, me->base_href, PARSE_ALL)) &&
@@ -4484,23 +4407,23 @@ PRIVATE void HTML_start_element ARGS6(
 		    FREE(temp);
 
 		    /*
-		     *  Check whether to fill in localhost. - FM
+		     *	Check whether to fill in localhost. - FM
 		     */
 		    LYFillLocalFileURL((char **)&href,
 				       ((*href != '#' &&
-				         me->inBASE) ?
+					 me->inBASE) ?
 				       me->base_href :
 				       me->node_anchor->address));
 
 		    if (me->inA) {
 			SET_SKIP_STACK(HTML_A);
-		        HTML_end_element(me, HTML_A, (char **)&include);
+			HTML_end_element(me, HTML_A, (char **)&include);
 		    }
 		    me->CurrentA = HTAnchor_findChildAndLink(
-		       			me->node_anchor,	/* Parent */
-		       			NULL,			/* Tag */
-		       			href,			/* Addresss */
-		       			(HTLinkType*)0);	/* Type */
+					me->node_anchor,	/* Parent */
+					NULL,			/* Tag */
+					href,			/* Addresss */
+					(HTLinkType*)0);	/* Type */
 		    HText_beginAnchor(me->text, me->inUnderline, me->CurrentA);
 		    if (me->inBoldH == FALSE)
 			HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
@@ -4510,13 +4433,13 @@ PRIVATE void HTML_start_element ARGS6(
 		    HText_endAnchor(me->text, 0);
 		    HTML_put_character(me, '-');
 		    HaveSRClink = TRUE;
-	        }
-	        FREE(href);
+		}
+		FREE(href);
 	    }
 	    if ((UseALTasVALUE == TRUE) ||
-	        (present && present[HTML_INPUT_VALUE] &&
-	         value[HTML_INPUT_VALUE] && *value[HTML_INPUT_VALUE])) {
-	        /*
+		(present && present[HTML_INPUT_VALUE] &&
+		 value[HTML_INPUT_VALUE] && *value[HTML_INPUT_VALUE])) {
+		/*
 		 *  Convert any HTML entities or decimal escaping. - FM
 		 */
 		int CurrentCharSet = current_char_set;
@@ -4555,15 +4478,15 @@ PRIVATE void HTML_start_element ARGS6(
 		I.value = I_value;
 		if (me->UsePlainSpace == TRUE) {
 		    /*
-		     *  Convert any newlines or tabs to spaces,
-		     *  and trim any lead or trailing spaces. - FM
+		     *	Convert any newlines or tabs to spaces,
+		     *	and trim any lead or trailing spaces. - FM
 		     */
 		    convert_to_spaces(I.value, FALSE);
 		    while (I.value && I.value[0] == ' ')
-		        I.value++;
+			I.value++;
 		    len = strlen(I.value) - 1;
 		    while (len > 0 && I.value[len] == ' ')
-		        I.value[len--] = '\0';
+			I.value[len--] = '\0';
 		}
 		me->UsePlainSpace = FALSE;
 
@@ -4577,7 +4500,7 @@ PRIVATE void HTML_start_element ARGS6(
 		    HTCJK = CurrentHTCJK;
 		}
 	    } else if (HaveSRClink == TRUE) {
-	        /*
+		/*
 		 *  We put up an [IMAGE] link and '-' for a TYPE="image"
 		 *  and didn't get a VALUE or ALT string, so fake a
 		 *  "Submit" value.  If we didn't put up a link, then
@@ -4589,58 +4512,58 @@ PRIVATE void HTML_start_element ARGS6(
 	    if (present && present[HTML_INPUT_CHECKED])
 		I.checked = YES;
 	    if (present && present[HTML_INPUT_SIZE] &&
-	        value[HTML_INPUT_SIZE] && *value[HTML_INPUT_SIZE])
+		value[HTML_INPUT_SIZE] && *value[HTML_INPUT_SIZE])
 		I.size = value[HTML_INPUT_SIZE];
 	    if (present && present[HTML_INPUT_MAXLENGTH] &&
-	        value[HTML_INPUT_MAXLENGTH] && *value[HTML_INPUT_MAXLENGTH])
+		value[HTML_INPUT_MAXLENGTH] && *value[HTML_INPUT_MAXLENGTH])
 		I.maxlength = value[HTML_INPUT_MAXLENGTH];
 	    if (present && present[HTML_INPUT_DISABLED])
 		I.disabled = YES;
 
 	    if (present && present[HTML_INPUT_ACCEPT_CHARSET]) { /* Not yet used. */
 		I.accept_cs = value[HTML_INPUT_ACCEPT_CHARSET] ?
-		    	      value[HTML_INPUT_ACCEPT_CHARSET] : "UNKNOWN";
+			      value[HTML_INPUT_ACCEPT_CHARSET] : "UNKNOWN";
 	    }
 	    if (present && present[HTML_INPUT_ALIGN] && /* Not yet used. */
-	        value[HTML_INPUT_ALIGN] && *value[HTML_INPUT_ALIGN])
+		value[HTML_INPUT_ALIGN] && *value[HTML_INPUT_ALIGN])
 		I.align = value[HTML_INPUT_ALIGN];
 	    if (present && present[HTML_INPUT_CLASS] && /* Not yet used. */
-	        value[HTML_INPUT_CLASS] && *value[HTML_INPUT_CLASS])
+		value[HTML_INPUT_CLASS] && *value[HTML_INPUT_CLASS])
 		I.class = value[HTML_INPUT_CLASS];
 	    if (present && present[HTML_INPUT_ERROR] && /* Not yet used. */
-	        value[HTML_INPUT_ERROR] && *value[HTML_INPUT_ERROR])
+		value[HTML_INPUT_ERROR] && *value[HTML_INPUT_ERROR])
 		I.error = value[HTML_INPUT_ERROR];
 	    if (present && present[HTML_INPUT_HEIGHT] && /* Not yet used. */
-	        value[HTML_INPUT_HEIGHT] && *value[HTML_INPUT_HEIGHT])
+		value[HTML_INPUT_HEIGHT] && *value[HTML_INPUT_HEIGHT])
 		I.height = value[HTML_INPUT_HEIGHT];
 	    if (present && present[HTML_INPUT_WIDTH] && /* Not yet used. */
-	        value[HTML_INPUT_WIDTH] && *value[HTML_INPUT_WIDTH])
+		value[HTML_INPUT_WIDTH] && *value[HTML_INPUT_WIDTH])
 		I.width = value[HTML_INPUT_WIDTH];
 	    if (present && present[HTML_INPUT_ID] &&
-	        value[HTML_INPUT_ID] && *value[HTML_INPUT_ID]) {
+		value[HTML_INPUT_ID] && *value[HTML_INPUT_ID]) {
 		I.id = value[HTML_INPUT_ID];
 		CHECK_ID(HTML_INPUT_ID);
 	    }
 	    if (present && present[HTML_INPUT_LANG] && /* Not yet used. */
-	        value[HTML_INPUT_LANG] && *value[HTML_INPUT_LANG])
+		value[HTML_INPUT_LANG] && *value[HTML_INPUT_LANG])
 		I.lang = value[HTML_INPUT_LANG];
 	    if (present && present[HTML_INPUT_MD] && /* Not yet used. */
-	        value[HTML_INPUT_MD] && *value[HTML_INPUT_MD])
+		value[HTML_INPUT_MD] && *value[HTML_INPUT_MD])
 		I.md = value[HTML_INPUT_MD];
 
 	    chars = HText_beginInput(me->text, me->inUnderline, &I);
 	    /*
-	     *  Submit and reset buttons have values which don't change,
-	     *  so HText_beginInput() sets I.value to the string which
-	     *  should be displayed, and we'll enter that instead of
-	     *  underscore placeholders into the HText structure to
-	     *  see it instead of underscores when dumping or printing.
-	     *  We also won't worry about a wrap in PRE blocks, because
-	     *  the line editor never is invoked for submit or reset
-	     *  buttons. - LE & FM
+	     *	Submit and reset buttons have values which don't change,
+	     *	so HText_beginInput() sets I.value to the string which
+	     *	should be displayed, and we'll enter that instead of
+	     *	underscore placeholders into the HText structure to
+	     *	see it instead of underscores when dumping or printing.
+	     *	We also won't worry about a wrap in PRE blocks, because
+	     *	the line editor never is invoked for submit or reset
+	     *	buttons. - LE & FM
 	     */
 	    if (I.type &&
-	        (!strcasecomp(I.type,"submit") ||
+		(!strcasecomp(I.type,"submit") ||
 		 !strcasecomp(I.type,"reset") ||
 		 !strcasecomp(I.type,"image")))
 		IsSubmitOrReset = TRUE;
@@ -4679,7 +4602,7 @@ PRIVATE void HTML_start_element ARGS6(
 			!me->sp->style->freeFormat)
 		       && chars > 6 &&
 		       IsSubmitOrReset == FALSE) {
-	        /*
+		/*
 		 *  This is not a submit or reset button, and we are
 		 *  in a PRE block with a field intended to exceed 6
 		 *  character widths.  The code inadequately handles
@@ -4696,13 +4619,13 @@ PRIVATE void HTML_start_element ARGS6(
 		 *  highlighted when not editing (Yuk!). - FM
 		 */
 		for (i = 0; i < 6; i++) {
-	            HTML_put_character(me, '_');
+		    HTML_put_character(me, '_');
 		    chars--;
 		}
 		HText_setIgnoreExcess(me->text, TRUE);
 	    }
 	    if (IsSubmitOrReset == FALSE) {
-	        /*
+		/*
 		 *  This is not a submit or reset button,
 		 *  so output the rest of the underscore
 		 *  placeholders, if any more are needed. - FM
@@ -4713,37 +4636,37 @@ PRIVATE void HTML_start_element ARGS6(
 		if (me->sp[0].tag_number == HTML_PRE ||
 		    !me->sp->style->freeFormat) {
 		    /*
-		     *  We have a submit or reset button in a PRE block,
-		     *  so output the entire value from the markup.  If
-		     *  it extends to the right margin, it will wrap
-		     *  there, and only the portion before that wrap will
-		     *  be hightlighted on screen display (Yuk!) but we
-		     *  may as well show the rest of the full value on
-		     *  the next or more lines. - FM
+		     *	We have a submit or reset button in a PRE block,
+		     *	so output the entire value from the markup.  If
+		     *	it extends to the right margin, it will wrap
+		     *	there, and only the portion before that wrap will
+		     *	be hightlighted on screen display (Yuk!) but we
+		     *	may as well show the rest of the full value on
+		     *	the next or more lines. - FM
 		     */
 		    while (I.value[i])
-		        HTML_put_character(me, I.value[i++]);
+			HTML_put_character(me, I.value[i++]);
 		} else {
 		    /*
-		     *  The submit or reset button is not in a PRE block.
-		     *  Note that if a wrap occurs before outputting the
-		     *  entire value, the wrapped portion will not be
-		     *  highlighted or clearly indicated as part of the
-		     *  link for submission or reset (Yuk!).
-		     *  We'll replace any spaces in the submit or reset
-		     *  button value with nbsp, to promote a wrap at the
-		     *  space we ensured would be present before the start
-		     *  of the string, as when we use all underscores
-		     *  instead of the INPUT's actual value, but we could
-		     *  still get a wrap at the right margin, instead, if
-		     *  the value is greater than a line width for the
-		     *  current style.  Also, if chars somehow ended up
-		     *  longer than the length of the actual value
-		     *  (shouldn't have), we'll continue padding with nbsp
-		     *  up to the length of chars. - FM
+		     *	The submit or reset button is not in a PRE block.
+		     *	Note that if a wrap occurs before outputting the
+		     *	entire value, the wrapped portion will not be
+		     *	highlighted or clearly indicated as part of the
+		     *	link for submission or reset (Yuk!).
+		     *	We'll replace any spaces in the submit or reset
+		     *	button value with nbsp, to promote a wrap at the
+		     *	space we ensured would be present before the start
+		     *	of the string, as when we use all underscores
+		     *	instead of the INPUT's actual value, but we could
+		     *	still get a wrap at the right margin, instead, if
+		     *	the value is greater than a line width for the
+		     *	current style.	Also, if chars somehow ended up
+		     *	longer than the length of the actual value
+		     *	(shouldn't have), we'll continue padding with nbsp
+		     *	up to the length of chars. - FM
 		     */
-	            for (i = 0; I.value[i]; i++)
-		        HTML_put_character(me,
+		    for (i = 0; I.value[i]; i++)
+			HTML_put_character(me,
 					   (I.value[i] ==  ' ' ?
 					    HT_NON_BREAK_SPACE : I.value[i]));
 		    while (i < chars)
@@ -4763,14 +4686,14 @@ PRIVATE void HTML_start_element ARGS6(
 	if (!me->inFORM) {
 	    if (TRACE) {
 		fprintf(stderr,
-			"Bad HTML: TEXTAREA start tag not within FORM element *****\n");
+			"Bad HTML: TEXTAREA start tag not within FORM tag\n");
 	    } else if (!me->inBadHTML) {
-	        _statusline(BAD_HTML_USE_TRACE);
+		_statusline(BAD_HTML_USE_TRACE);
 		me->inBadHTML = TRUE;
-	        sleep(MessageSecs);
+		sleep(MessageSecs);
 	    }
 	    /*
-	     *  Too likely to cause a crash, so we'll ignore it. - FM
+	     *	Too likely to cause a crash, so we'll ignore it. - FM
 	     */
 	    break;
 	}
@@ -4783,7 +4706,7 @@ PRIVATE void HTML_start_element ARGS6(
 	/*
 	 *  Get ready for the value.
 	 */
-        HTChunkClear(&me->textarea);
+	HTChunkClear(&me->textarea);
 	if (present && present[HTML_TEXTAREA_NAME] &&
 	    value[HTML_TEXTAREA_NAME]) {
 	    StrAllocCopy(me->textarea_name, value[HTML_TEXTAREA_NAME]);
@@ -4830,7 +4753,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    StrAllocCopy(id_string, value[HTML_TEXTAREA_ID]);
 	    TRANSLATE_AND_UNESCAPE_TO_STD(&id_string);
 	    if ((id_string != '\0') &&
-	        (ID_A = HTAnchor_findChildAndLink(
+		(ID_A = HTAnchor_findChildAndLink(
 				me->node_anchor,	/* Parent */
 				id_string,		/* Tag */
 				NULL,			/* Addresss */
@@ -4839,7 +4762,7 @@ PRIVATE void HTML_start_element ARGS6(
 		HText_endAnchor(me->text, 0);
 		StrAllocCopy(me->textarea_id, id_string);
 	    } else {
-	        FREE(me->textarea_id);
+		FREE(me->textarea_id);
 	    }
 	    FREE(id_string);
 	} else {
@@ -4848,7 +4771,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_SELECT:
-        /*
+	/*
 	 *  Check for an already open SELECT block. - FM
 	 */
 	if (me->inSELECT) {
@@ -4865,11 +4788,12 @@ PRIVATE void HTML_start_element ARGS6(
 	    }
 	    HTML_end_element(me, HTML_SELECT, (char **)&include);
 	}
+
 	/*
 	 * Start a new SELECT block. - FM
 	 */
-        LYHandleSELECT(me,
-	    	       present, (CONST char **)value,
+	LYHandleSELECT(me,
+		       present, (CONST char **)value,
 		       (char **)&include,
 		       TRUE);
 	break;
@@ -4877,15 +4801,15 @@ PRIVATE void HTML_start_element ARGS6(
     case HTML_OPTION:
 	{
 	    /*
-	     *  An option is a special case of an input field.
+	     *	An option is a special case of an input field.
 	     */
 	    InputFieldData I;
 
 	    /*
-	     *  Make sure we're in a select tag.
+	     *	Make sure we're in a select tag.
 	     */
 	    if (!me->inSELECT) {
-	        if (TRACE) {
+		if (TRACE) {
 		    fprintf(stderr,
 			    "Bad HTML: OPTION tag not within SELECT tag\n");
 		} else if (!me->inBadHTML) {
@@ -4894,53 +4818,53 @@ PRIVATE void HTML_start_element ARGS6(
 		    sleep(MessageSecs);
 		}
 
-	        /*
+		/*
 		 *  Too likely to cause a crash, so we'll ignore it. - FM
 		 */
 		break;
 	    }
 
 	    if (!me->first_option) {
-	        /*
+		/*
 		 *  Finish the data off.
 		 */
-       	        HTChunkTerminate(&me->option);
+		HTChunkTerminate(&me->option);
 
 		/*
 		 *  Finish the previous option @@@@@
 		 */
-	        HText_setLastOptionValue(me->text,
+		HText_setLastOptionValue(me->text,
 					 me->option.data,
 					 me->LastOptionValue,
-				         MIDDLE_ORDER,
+					 MIDDLE_ORDER,
 					 me->LastOptionChecked,
 					 me->UCLYhndl,
 					 ATTR_CS_IN);
 	    }
 
 	    /*
-	     *  If its not a multiple option list and select popups
-	     *  are enabled, then don't use the checkbox/button method,
-	     *  and don't put anything on the screen yet.
+	     *	If its not a multiple option list and select popups
+	     *	are enabled, then don't use the checkbox/button method,
+	     *	and don't put anything on the screen yet.
 	     */
 	    if (me->first_option ||
-	        HTCurSelectGroupType == F_CHECKBOX_TYPE ||
+		HTCurSelectGroupType == F_CHECKBOX_TYPE ||
 		LYSelectPopups == FALSE) {
 		if (HTCurSelectGroupType == F_CHECKBOX_TYPE ||
 		    LYSelectPopups == FALSE) {
-	            /*
-		     *  Start a newline before each option.
+		    /*
+		     *	Start a newline before each option.
 		     */
 		    LYEnsureSingleSpace(me);
 		} else {
 		    /*
-		     *  Add option list designation character.
+		     *	Add option list designation character.
 		     */
-                    HText_appendCharacter(me->text, '[');
+		    HText_appendCharacter(me->text, '[');
 		    me->in_word = YES;
 		}
 
-                /*
+		/*
 		 *  Inititialize.
 		 */
 		I.align=NULL; I.accept=NULL; I.checked=NO; I.class=NULL;
@@ -4952,17 +4876,17 @@ PRIVATE void HTML_start_element ARGS6(
 		I.name_cs = -1;
 		I.value_cs = current_char_set;
 
-	        I.type = "OPTION";
+		I.type = "OPTION";
 
-	        if ((present && present[HTML_OPTION_SELECTED]) ||
+		if ((present && present[HTML_OPTION_SELECTED]) ||
 		    (me->first_option && LYSelectPopups == FALSE &&
 		     HTCurSelectGroupType == F_RADIO_TYPE))
 		    I.checked=YES;
 
 		if (present && present[HTML_OPTION_VALUE] &&
 		    value[HTML_OPTION_VALUE]) {
-	            /*
-		     *  Convert any HTML entities or decimal escaping. - FM
+		    /*
+		     *	Convert any HTML entities or decimal escaping. - FM
 		     */
 		    StrAllocCopy(I_value, value[HTML_OPTION_VALUE]);
 		    me->HiddenValue = TRUE;
@@ -4977,58 +4901,58 @@ PRIVATE void HTML_start_element ARGS6(
 		    I.value = I_value;
 		}
 
-	        if (me->select_disabled ||
+		if (me->select_disabled ||
 		   (present && present[HTML_OPTION_DISABLED]))
 		    I.disabled=YES;
 
-	        if (present && present[HTML_OPTION_ID]
+		if (present && present[HTML_OPTION_ID]
 		    && value[HTML_OPTION_ID] && *value[HTML_OPTION_ID]) {
 		    if ((ID_A = HTAnchor_findChildAndLink(
 				    me->node_anchor,	   /* Parent */
 				    value[HTML_OPTION_ID], /* Tag */
 				    NULL,		   /* Addresss */
-				    (HTLinkType*)0)) != NULL) {	   /* Type */
+				    (HTLinkType*)0)) != NULL) {    /* Type */
 			HText_beginAnchor(me->text, me->inUnderline, ID_A);
 			HText_endAnchor(me->text, 0);
-		        I.id = value[HTML_OPTION_ID];
+			I.id = value[HTML_OPTION_ID];
 		    }
 		}
 
-	        HText_beginInput(me->text, me->inUnderline, &I);
+		HText_beginInput(me->text, me->inUnderline, &I);
 
 		if (HTCurSelectGroupType == F_CHECKBOX_TYPE) {
-	            /*
-		     *  Put a "[_]" placeholder, and one space
-		     *  (collapsible) before the label that is
-		     *  expected to follow. - FM
+		    /*
+		     *	Put a "[_]" placeholder, and one space
+		     *	(collapsible) before the label that is
+		     *	expected to follow. - FM
 		     */
-	    	    HText_appendCharacter(me->text, '[');
-	    	    HText_appendCharacter(me->text, '_');
-	    	    HText_appendCharacter(me->text, ']');
-	            HText_appendCharacter(me->text, ' ');
+		    HText_appendCharacter(me->text, '[');
+		    HText_appendCharacter(me->text, '_');
+		    HText_appendCharacter(me->text, ']');
+		    HText_appendCharacter(me->text, ' ');
 		    HText_setLastChar(me->text, ' ');  /* absorb white space */
 		    me->in_word = NO;
 		} else if (LYSelectPopups == FALSE) {
-	            /*
-		     *  Put a "(_)" placeholder, and one space
-		     *  (collapsible) before the label that is
-		     *  expected to follow. - FM
+		    /*
+		     *	Put a "(_)" placeholder, and one space
+		     *	(collapsible) before the label that is
+		     *	expected to follow. - FM
 		     */
-	    	    HText_appendCharacter(me->text, '(');
-	    	    HText_appendCharacter(me->text, '_');
-	    	    HText_appendCharacter(me->text, ')');
-	            HText_appendCharacter(me->text, ' ');
+		    HText_appendCharacter(me->text, '(');
+		    HText_appendCharacter(me->text, '_');
+		    HText_appendCharacter(me->text, ')');
+		    HText_appendCharacter(me->text, ' ');
 		    HText_setLastChar(me->text, ' ');  /* absorb white space */
 		    me->in_word = NO;
 		}
 	    }
 
 	    /*
-	     *  Get ready for the next value.
+	     *	Get ready for the next value.
 	     */
-            HTChunkClear(&me->option);
+	    HTChunkClear(&me->option);
 	    if ((present && present[HTML_OPTION_SELECTED]) ||
-	        (me->first_option && LYSelectPopups == FALSE &&
+		(me->first_option && LYSelectPopups == FALSE &&
 		 HTCurSelectGroupType == F_RADIO_TYPE))
 		me->LastOptionChecked = TRUE;
 	    else
@@ -5037,10 +4961,10 @@ PRIVATE void HTML_start_element ARGS6(
 
 
 	    if (present && present[HTML_OPTION_VALUE] &&
-	        value[HTML_OPTION_VALUE]) {
+		value[HTML_OPTION_VALUE]) {
 		if (!I_value) {
-	            /*
-		     *  Convert any HTML entities or decimal escaping. - FM
+		    /*
+		     *	Convert any HTML entities or decimal escaping. - FM
 		     */
 		    StrAllocCopy(I_value, value[HTML_OPTION_VALUE]);
 		    me->HiddenValue = TRUE;
@@ -5051,17 +4975,17 @@ PRIVATE void HTML_start_element ARGS6(
 						       me->UsePlainSpace, me->HiddenValue);
 		    me->HiddenValue = FALSE;
 		}
-	        StrAllocCopy(me->LastOptionValue, I_value);
+		StrAllocCopy(me->LastOptionValue, I_value);
 	    } else {
-	        StrAllocCopy(me->LastOptionValue, me->option.data);
+		StrAllocCopy(me->LastOptionValue, me->option.data);
 	    }
 
 	    /*
-	     *  If this is a popup option, print its option
-	     *  for use in selecting option by number. - LE
+	     *	If this is a popup option, print its option
+	     *	for use in selecting option by number. - LE
 	     */
 	    if (HTCurSelectGroupType == F_RADIO_TYPE &&
-	        LYSelectPopups &&
+		LYSelectPopups &&
 		keypad_mode == LINKS_AND_FORM_FIELDS_ARE_NUMBERED) {
 		char marker[8];
 		int opnum = HText_getOptionNum(me->text);
@@ -5102,24 +5026,24 @@ PRIVATE void HTML_start_element ARGS6(
 	if (me->Division_Level < (MAX_NESTING - 1)) {
 	    me->Division_Level++;
 	} else if (TRACE) {
-            fprintf(stderr,
+	    fprintf(stderr,
 	    "HTML: ****** Maximum nesting of %d divisions/tables exceeded!\n",
-            	    MAX_NESTING);
+		    MAX_NESTING);
 	}
 	if (present && present[HTML_TABLE_ALIGN] &&
 	    value[HTML_TABLE_ALIGN] && *value[HTML_TABLE_ALIGN]) {
 	    if (!strcasecomp(value[HTML_TABLE_ALIGN], "center")) {
-	        me->DivisionAlignments[me->Division_Level] = HT_CENTER;
+		me->DivisionAlignments[me->Division_Level] = HT_CENTER;
 		change_paragraph_style(me, styles[HTML_DCENTER]);
 		UPDATE_STYLE;
 		me->current_default_alignment = styles[HTML_DCENTER]->alignment;
 	    } else if (!strcasecomp(value[HTML_TABLE_ALIGN], "right")) {
-	        me->DivisionAlignments[me->Division_Level] = HT_RIGHT;
+		me->DivisionAlignments[me->Division_Level] = HT_RIGHT;
 		change_paragraph_style(me, styles[HTML_DRIGHT]);
 		UPDATE_STYLE;
 		me->current_default_alignment = styles[HTML_DRIGHT]->alignment;
 	    } else {
-	        me->DivisionAlignments[me->Division_Level] = HT_LEFT;
+		me->DivisionAlignments[me->Division_Level] = HT_LEFT;
 		change_paragraph_style(me, styles[HTML_DLEFT]);
 		UPDATE_STYLE;
 		me->current_default_alignment = styles[HTML_DLEFT]->alignment;
@@ -5134,7 +5058,7 @@ PRIVATE void HTML_start_element ARGS6(
 	break;
 
     case HTML_TR:
-        /*
+	/*
 	 *  Not yet implemented.  Just start a new row,
 	 *  if needed, act on an ALIGN attribute if present,
 	 *  and check for an ID link. - FM
@@ -5147,7 +5071,7 @@ PRIVATE void HTML_start_element ARGS6(
 	    SET_SKIP_STACK(HTML_U);
 	    HTML_end_element(me, HTML_U, (char **)&include);
 	}
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	if (HText_LastLineSize(me->text, FALSE)) {
 	    HText_setLastChar(me->text, ' ');  /* absorb white space */
 	    HText_appendCharacter(me->text, '\r');
@@ -5165,30 +5089,30 @@ PRIVATE void HTML_start_element ARGS6(
 		   ((me->Division_Level < 0) &&
 		    (!strcmp(me->sp->style->name, "Normal") ||
 		     !strcmp(me->sp->style->name, "Preformatted")))) {
-	        me->sp->style->alignment = HT_LEFT;
+		me->sp->style->alignment = HT_LEFT;
 	} else {
 	    me->sp->style->alignment = me->current_default_alignment;
 	}
 	if (present && present[HTML_TR_ALIGN] && value[HTML_TR_ALIGN]) {
 	    if (!strcasecomp(value[HTML_TR_ALIGN], "center") &&
-	        !(me->List_Nesting_Level >= 0 && !me->inP))
-	        me->sp->style->alignment = HT_CENTER;
+		!(me->List_Nesting_Level >= 0 && !me->inP))
+		me->sp->style->alignment = HT_CENTER;
 	    else if (!strcasecomp(value[HTML_TR_ALIGN], "right") &&
-	        !(me->List_Nesting_Level >= 0 && !me->inP))
-	        me->sp->style->alignment = HT_RIGHT;
+		!(me->List_Nesting_Level >= 0 && !me->inP))
+		me->sp->style->alignment = HT_RIGHT;
 	    else if (!strcasecomp(value[HTML_TR_ALIGN], "left") ||
-	    	     !strcasecomp(value[HTML_TR_ALIGN], "justify"))
-	        me->sp->style->alignment = HT_LEFT;
+		     !strcasecomp(value[HTML_TR_ALIGN], "justify"))
+		me->sp->style->alignment = HT_LEFT;
 	}
 
 	CHECK_ID(HTML_TR_ID);
 	me->inP = FALSE;
-        break;
+	break;
 
     case HTML_THEAD:
     case HTML_TFOOT:
     case HTML_TBODY:
-        /*
+	/*
 	 *  Not yet implemented.  Just check for an ID link. - FM
 	 */
 	if (me->inA) {
@@ -5199,13 +5123,13 @@ PRIVATE void HTML_start_element ARGS6(
 	    SET_SKIP_STACK(HTML_U);
 	    HTML_end_element(me, HTML_U, (char **)&include);
 	}
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	CHECK_ID(HTML_TR_ID);
-        break;
+	break;
 
     case HTML_COL:
     case HTML_COLGROUP:
-        /*
+	/*
 	 *  Not yet implemented.  Just check for an ID link. - FM
 	 */
 	if (me->inA) {
@@ -5216,9 +5140,9 @@ PRIVATE void HTML_start_element ARGS6(
 	    SET_SKIP_STACK(HTML_U);
 	    HTML_end_element(me, HTML_U, (char **)&include);
 	}
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	CHECK_ID(HTML_COL_ID);
-        break;
+	break;
 
     case HTML_TH:
 	if (me->inA) {
@@ -5229,14 +5153,14 @@ PRIVATE void HTML_start_element ARGS6(
 	    SET_SKIP_STACK(HTML_U);
 	    HTML_end_element(me, HTML_U, (char **)&include);
 	}
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	CHECK_ID(HTML_TD_ID);
-        /*
+	/*
 	 *  Not yet implemented.  Just add a collapsible space and break. - FM
 	 */
 	HTML_put_character(me, ' ');
 	me->in_word = NO;
-        break;
+	break;
 
     case HTML_TD:
 	if (me->inA) {
@@ -5247,17 +5171,17 @@ PRIVATE void HTML_start_element ARGS6(
 	    SET_SKIP_STACK(HTML_U);
 	    HTML_end_element(me, HTML_U, (char **)&include);
 	}
-        UPDATE_STYLE;
+	UPDATE_STYLE;
 	CHECK_ID(HTML_TD_ID);
-        /*
+	/*
 	 *  Not yet implemented.  Just add a collapsible space and break. - FM
 	 */
 	HTML_put_character(me, ' ');
 	me->in_word = NO;
-        break;
+	break;
 
     case HTML_MATH:
-        /*
+	/*
 	 *  We're getting it as Literal text, which, until we can process
 	 *  it, we'll display as is, within brackets to alert the user. - FM
 	 */
@@ -5291,10 +5215,10 @@ PRIVATE void HTML_start_element ARGS6(
 		}
 		me->stack_overrun = TRUE;
 	    }
-            return;
-        }
+	    return;
+	}
 
-    	(me->sp)--;
+	(me->sp)--;
 	me->sp[0].style = me->new_style;	/* Stack new style */
 	me->sp[0].tag_number = ElementNumber;
 
@@ -5305,56 +5229,54 @@ PRIVATE void HTML_start_element ARGS6(
 
 #if defined(USE_COLOR_STYLE)
 /* end empty tags straight away */
-        if (HTML_dtd.tags[ElementNumber].contents == SGML_EMPTY)
-        {
-                if (TRACE)
-                        fprintf(stderr, "STYLE:begin_element:ending EMPTY element style\n");
+	if (HTML_dtd.tags[ElementNumber].contents == SGML_EMPTY)
+	{
+		if (TRACE)
+			fprintf(stderr, "STYLE:begin_element:ending EMPTY element style\n");
 #if !defined(USE_HASH)
-        HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF);
+	HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF);
 #else
-        HText_characterStyle(me->text, hcode, STACK_OFF);
+	HText_characterStyle(me->text, hcode, STACK_OFF);
 #endif /* USE_HASH */
-                {
-                        char *end, *start=NULL, *lookfrom;
-                        char tmp[64];
-                        sprintf(tmp, ";%s", HTML_dtd.tags[element_number].name);
-                        strtolower(tmp);
-
-                        lookfrom = Style_className;
-                        do
-                        {
-                                end = start;
-                                start = strstr(lookfrom, tmp);
+		{
+			char *end, *start=NULL, *lookfrom;
+			char tmp[64];
+			sprintf(tmp, ";%s", HTML_dtd.tags[element_number].name);
+			strtolower(tmp);
+
+			lookfrom = Style_className;
+			do
+			{
+				end = start;
+				start = strstr(lookfrom, tmp);
 				if (start)
 				    lookfrom = start + 1;
-                        }
-                        while (start);
-                        if (end)
-                                *end='\0';
+			}
+			while (start);
+			if (end)
+				*end='\0';
 
 #if defined(PREVAIL)
-                        start=strrchr(Style_className, '.');
-                        if (start)
-                                strcpy(prevailing_class, (char*)(start+1));
-                        else
-                                strcpy(prevailing_class, "");
+			start=strrchr(Style_className, '.');
+			if (start)
+				strcpy(prevailing_class, (char*)(start+1));
+			else
+				strcpy(prevailing_class, "");
 #endif
 
 
-                        if (TRACE)
-                        fprintf(stderr, "CSS:%s (trimmed %s, SGML_EMPTY)\n", Style_className, tmp);
+			if (TRACE)
+			fprintf(stderr, "CSS:%s (trimmed %s, SGML_EMPTY)\n", Style_className, tmp);
 		}
 	}
 #endif /* USE_COLOR_STYLE */
 }
 
-#undef CHECK_ID  /* LYCheckForID() */
-
 /*		End Element
 **		-----------
 **
 **	When we end an element, the style must be returned to that
-**	in effect before that element.  Note that anchors (etc?)
+**	in effect before that element.	Note that anchors (etc?)
 **	don't have an associated style, so that we must scan down the
 **	stack for an element with a defined style. (In fact, the styles
 **	should be linked to the whole stack not just the top one.)
@@ -5365,7 +5287,7 @@ PRIVATE void HTML_start_element ARGS6(
 **	incoming code errors, not this module.
 */
 PRIVATE void HTML_end_element ARGS3(
-	HTStructured *,		me,
+	HTStructured *, 	me,
 	int,			element_number,
 	char **,		include)
 {
@@ -5375,8 +5297,8 @@ PRIVATE void HTML_end_element ARGS3(
 
 #ifdef CAREFUL			/* parser assumed to produce good nesting */
     if (element_number != me->sp[0].tag_number &&
-        HTML_dtd.tags[element_number].contents != SGML_EMPTY) {
-        fprintf(stderr,
+	HTML_dtd.tags[element_number].contents != SGML_EMPTY) {
+	fprintf(stderr,
 		"HTMLText: end of element %s when expecting end of %s\n",
 		HTML_dtd.tags[element_number].name,
 		HTML_dtd.tags[me->sp->tag_number].name);
@@ -5385,37 +5307,37 @@ PRIVATE void HTML_end_element ARGS3(
 #endif /* CAREFUL */
 
     /*
-     *  If we're seeking MAPs, skip everything that's
-     *  not a MAP or AREA tag. - FM
+     *	If we're seeking MAPs, skip everything that's
+     *	not a MAP or AREA tag. - FM
      */
     if (LYMapsOnly) {
-        if (!(element_number == HTML_MAP || element_number == HTML_AREA)) {
+	if (!(element_number == HTML_MAP || element_number == HTML_AREA)) {
 	    return;
 	}
     }
 
     /*
-     *  Pop state off stack if we didn't declare the element
-     *  SGML_EMPTY in HTMLDTD.c. - FM & KW
+     *	Pop state off stack if we didn't declare the element
+     *	SGML_EMPTY in HTMLDTD.c. - FM & KW
      */
     if (HTML_dtd.tags[element_number].contents != SGML_EMPTY) {
 	if ((element_number != me->sp[0].tag_number) &&
 	    me->skip_stack <= 0 &&
-            HTML_dtd.tags[HTML_LH].contents != SGML_EMPTY &&
+	    HTML_dtd.tags[HTML_LH].contents != SGML_EMPTY &&
 	    (me->sp[0].tag_number == HTML_UL ||
 	     me->sp[0].tag_number == HTML_OL ||
 	     me->sp[0].tag_number == HTML_MENU ||
 	     me->sp[0].tag_number == HTML_DIR) &&
-            (element_number == HTML_H1 ||
+	    (element_number == HTML_H1 ||
 	     element_number == HTML_H2 ||
 	     element_number == HTML_H3 ||
 	     element_number == HTML_H4 ||
 	     element_number == HTML_H6 ||
 	     element_number == HTML_H6)) {
 	    /*
-	     *  Set the break flag if we're popping
-	     *  a dummy HTML_LH substituted for an
-	     *  HTML_H# encountered in a list.
+	     *	Set the break flag if we're popping
+	     *	a dummy HTML_LH substituted for an
+	     *	HTML_H# encountered in a list.
 	     */
 	    BreakFlag = TRUE;
 	}
@@ -5428,28 +5350,28 @@ PRIVATE void HTML_end_element ARGS3(
 	} else if (me->stack_overrun == TRUE &&
 	    element_number != me->sp[0].tag_number) {
 	    /*
-	     *  Ignore non-corresponding tags if we had
-	     *  a stack overrun.  This is not a completely
-	     *  fail-safe strategy for protection against
-	     *  any seriously adverse consequences of a
-	     *  stack overrun, and the rendering of the
-	     *  document will not be as intended, but we
-	     *  expect overruns to be rare, and this should
-	     *  offer reasonable protection against crashes
-	     *  if an overrun does occur. - FM
+	     *	Ignore non-corresponding tags if we had
+	     *	a stack overrun.  This is not a completely
+	     *	fail-safe strategy for protection against
+	     *	any seriously adverse consequences of a
+	     *	stack overrun, and the rendering of the
+	     *	document will not be as intended, but we
+	     *	expect overruns to be rare, and this should
+	     *	offer reasonable protection against crashes
+	     *	if an overrun does occur. - FM
 	     */
 	    return;
 	} else if (element_number == HTML_SELECT &&
 	    me->sp[0].tag_number != HTML_SELECT) {
 	    /*
-	     *  Ignore non-corresponding SELECT tags, since we
-	     *  probably popped it and closed the SELECT block
-	     *  to deal with markup which amounts to a nested
-	     *  SELECT, or an out of order FORM end tag. - FM
+	     *	Ignore non-corresponding SELECT tags, since we
+	     *	probably popped it and closed the SELECT block
+	     *	to deal with markup which amounts to a nested
+	     *	SELECT, or an out of order FORM end tag. - FM
 	     */
 	    return;
 	} else if ((element_number != me->sp[0].tag_number) &&
-            HTML_dtd.tags[HTML_LH].contents == SGML_EMPTY &&
+	    HTML_dtd.tags[HTML_LH].contents == SGML_EMPTY &&
 	    (me->sp[0].tag_number == HTML_UL ||
 	     me->sp[0].tag_number == HTML_OL ||
 	     me->sp[0].tag_number == HTML_MENU ||
@@ -5461,9 +5383,9 @@ PRIVATE void HTML_end_element ARGS3(
 	     element_number == HTML_H6 ||
 	     element_number == HTML_H6)) {
 	    /*
-	     *  It's an H# for which we substituted
-	     *  an HTML_LH, which we've declared as
-	     *  SGML_EMPTY, so just return. - FM
+	     *	It's an H# for which we substituted
+	     *	an HTML_LH, which we've declared as
+	     *	SGML_EMPTY, so just return. - FM
 	     */
 	    return;
 	} else if (me->sp < (me->stack + MAX_NESTING - 1)) {
@@ -5479,14 +5401,14 @@ PRIVATE void HTML_end_element ARGS3(
 	}
     }
     if (BreakFlag == TRUE)
-        return;
+	return;
 
     /*
-     *  Check for unclosed TEXTAREA. - FM
+     *	Check for unclosed TEXTAREA. - FM
      */
     if (me->inTEXTAREA && element_number != HTML_TEXTAREA) {
-        if (TRACE) {
-	    fprintf(stderr, "Bad HTML: Missing TEXTAREA end tag *****\n");
+	if (TRACE) {
+	    fprintf(stderr, "Bad HTML: Missing TEXTAREA end tag\n");
 	} else if (!me->inBadHTML) {
 	    _statusline(BAD_HTML_USE_TRACE);
 	    me->inBadHTML = TRUE;
@@ -5499,14 +5421,14 @@ PRIVATE void HTML_end_element ARGS3(
     }
 
     /*
-     *  Handle the end tag. - FM
+     *	Handle the end tag. - FM
      */
     switch(element_number) {
 
     case HTML_HTML:
 	if (me->inA || me->inSELECT || me->inTEXTAREA)
 	    if (TRACE) {
-	        fprintf(stderr,
+		fprintf(stderr,
 			"Bad HTML: %s%s%s%s%s not closed before HTML end tag *****\n",
 			me->inSELECT ? "SELECT" : "",
 			(me->inSELECT && me->inTEXTAREA) ? ", " : "",
@@ -5514,7 +5436,7 @@ PRIVATE void HTML_end_element ARGS3(
 			((me->inSELECT || me->inTEXTAREA) && me->inA) ? ", " : "",
 			me->inA ? "A" : "");
 	    } else if (!me->inBadHTML) {
-	        _statusline(BAD_HTML_USE_TRACE);
+		_statusline(BAD_HTML_USE_TRACE);
 		me->inBadHTML = TRUE;
 		sleep(MessageSecs);
 	    }
@@ -5523,12 +5445,12 @@ PRIVATE void HTML_end_element ARGS3(
     case HTML_HEAD:
 	if (me->inBASE &&
 	    !strcmp(me->node_anchor->address, LYlist_temp_url())) {
-	    /*  If we are parsing the List Page, and have a BASE after
-	     *  we are done with the HEAD element, propagate it back
-	     *  to the node_anchor object.  The base should have been
-	     *  inserted by showlist() to record what document the List
-	     *  Page is about, and other functions may later look for it
-	     *  in the anchor. - kw
+	    /*	If we are parsing the List Page, and have a BASE after
+	     *	we are done with the HEAD element, propagate it back
+	     *	to the node_anchor object.  The base should have been
+	     *	inserted by showlist() to record what document the List
+	     *	Page is about, and other functions may later look for it
+	     *	in the anchor. - kw
 	     */
 	    StrAllocCopy(me->node_anchor->content_base, me->base_href);
 	}
@@ -5537,9 +5459,9 @@ PRIVATE void HTML_end_element ARGS3(
 	break;
 
     case HTML_TITLE:
-        HTChunkTerminate(&me->title);
-    	HTAnchor_setTitle(me->node_anchor, me->title.data);
-        HTChunkClear(&me->title);
+	HTChunkTerminate(&me->title);
+	HTAnchor_setTitle(me->node_anchor, me->title.data);
+	HTChunkClear(&me->title);
 	/*
 	 *  Check if it's a bookmark file, and if so, and multiple
 	 *  bookmark support is on, or it's off but this isn't the
@@ -5584,27 +5506,27 @@ PRIVATE void HTML_end_element ARGS3(
 	break;
 
     case HTML_STYLE:
-    	/*
+	/*
 	 *  We're getting it as Litteral text, which, for now,
 	 *  we'll just ignore. - FM
 	 */
 	HTChunkTerminate(&me->style_block);
 	if (TRACE) {
 	    fprintf(stderr, "HTML: STYLE content =\n%s\n",
-	    		    me->style_block.data);
+			    me->style_block.data);
 	}
 	HTChunkClear(&me->style_block);
 	break;
 
     case HTML_SCRIPT:
-    	/*
+	/*
 	 *  We're getting it as Litteral text, which, for now,
 	 *  we'll just ignore. - FM
 	 */
 	HTChunkTerminate(&me->script);
 	if (TRACE) {
 	    fprintf(stderr, "HTML: SCRIPT content =\n%s\n",
-	    		    me->script.data);
+			    me->script.data);
 	}
 	HTChunkClear(&me->script);
 	break;
@@ -5612,7 +5534,7 @@ PRIVATE void HTML_end_element ARGS3(
     case HTML_BODY:
 	if (me->inA || me->inSELECT || me->inTEXTAREA)
 	    if (TRACE) {
-	        fprintf(stderr,
+		fprintf(stderr,
 			"Bad HTML: %s%s%s%s%s not closed before BODY end tag *****\n",
 			me->inSELECT ? "SELECT" : "",
 			(me->inSELECT && me->inTEXTAREA) ? ", " : "",
@@ -5620,7 +5542,7 @@ PRIVATE void HTML_end_element ARGS3(
 			((me->inSELECT || me->inTEXTAREA) && me->inA) ? ", " : "",
 			me->inA ? "A" : "");
 	    } else if (!me->inBadHTML) {
-	        _statusline(BAD_HTML_USE_TRACE);
+		_statusline(BAD_HTML_USE_TRACE);
 		me->inBadHTML = TRUE;
 		sleep(MessageSecs);
 	    }
@@ -5661,7 +5583,7 @@ PRIVATE void HTML_end_element ARGS3(
 	    me->Division_Level--;
 	if (me->Division_Level >= 0)
 	    me->sp->style->alignment =
-	    			me->DivisionAlignments[me->Division_Level];
+				me->DivisionAlignments[me->Division_Level];
 	change_paragraph_style(me, me->sp->style);
 	UPDATE_STYLE;
 	me->current_default_alignment = me->sp->style->alignment;
@@ -5669,7 +5591,7 @@ PRIVATE void HTML_end_element ARGS3(
 	    HText_NegateLineOne(me->text);
 	break;
 
-    case HTML_H1:                       /* header styles */
+    case HTML_H1:			/* header styles */
     case HTML_H2:
     case HTML_H3:
     case HTML_H4:
@@ -5677,7 +5599,7 @@ PRIVATE void HTML_end_element ARGS3(
     case HTML_H6:
 	if (me->Division_Level >= 0) {
 	    me->sp->style->alignment =
-	    			me->DivisionAlignments[me->Division_Level];
+				me->DivisionAlignments[me->Division_Level];
 	} else if (!strcmp(me->sp->style->name, "HeadingCenter") ||
 		   !strcmp(me->sp->style->name, "Heading1")) {
 	    me->sp->style->alignment = HT_CENTER;
@@ -5690,7 +5612,7 @@ PRIVATE void HTML_end_element ARGS3(
 	UPDATE_STYLE;
 	if (styles[element_number]->font & HT_BOLD) {
 	    if (me->inBoldA == FALSE && me->inBoldH == TRUE) {
-	        HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
+		HText_appendCharacter(me->text, LY_BOLD_END_CHAR);
 	    }
 	    me->inBoldH = FALSE;
 	}
@@ -5705,39 +5627,39 @@ PRIVATE void HTML_end_element ARGS3(
     case HTML_P:
 	UPDATE_STYLE;
 	    /*
-	     *  In general, treat </P> as an instruction to
-	     *  end the current line if it has been started,
-	     *  and ensure spacing as required by the current
-	     *  paragraph style's spaceAfter.  Don't insert
-	     *  spacing required for starting the next paragraph
-	     *  as required by its style->spaceBefore, since we
-	     *  don't know yet what the next structure element
-	     *  (if any) will be.  If it is another P, it will
-	     *  take care of its leading space on its own.  - kw
+	     *	In general, treat </P> as an instruction to
+	     *	end the current line if it has been started,
+	     *	and ensure spacing as required by the current
+	     *	paragraph style's spaceAfter.  Don't insert
+	     *	spacing required for starting the next paragraph
+	     *	as required by its style->spaceBefore, since we
+	     *	don't know yet what the next structure element
+	     *	(if any) will be.  If it is another P, it will
+	     *	take care of its leading space on its own.  - kw
 	     */
 	if (me->List_Nesting_Level >= 0) {
 	    /*
-	     *  We're in a list.  Treat </P> as an instruction to
-	     *  end the current line if it has been started,
-	     *  and set "second line" margins.
+	     *	We're in a list.  Treat </P> as an instruction to
+	     *	end the current line if it has been started,
+	     *	and set "second line" margins.
 	     */
 	    if (me->inP) {
-	        if (me->inFIG || me->inAPPLET ||
+		if (me->inFIG || me->inAPPLET ||
 		    me->inCAPTION || me->inCREDIT ||
 		    me->sp->style->spaceAfter > 0) {
-	            LYEnsureDoubleSpace(me);
+		    LYEnsureDoubleSpace(me);
 		} else {
-	            LYEnsureSingleSpace(me);
+		    LYEnsureSingleSpace(me);
 		}
 	    }
 	} else if (me->sp[0].tag_number == HTML_ADDRESS) {
 	    /*
-	     *  We're in an ADDRESS. Treat </P> as an instruction
-	     *  to start a newline, if needed. - kw
+	     *	We're in an ADDRESS. Treat </P> as an instruction
+	     *	to start a newline, if needed. - kw
 	     */
 	    if (HText_LastLineSize(me->text, FALSE)) {
 		HText_setLastChar(me->text, ' ');  /* absorb white space */
-	        HText_appendCharacter(me->text, '\r');
+		HText_appendCharacter(me->text, '\r');
 	    }
 	} else {
 	    if (me->sp->style->spaceAfter > 0) {
@@ -5760,7 +5682,7 @@ PRIVATE void HTML_end_element ARGS3(
 		   ((me->Division_Level < 0) &&
 		    (!strcmp(me->sp->style->name, "Normal") ||
 		     !strcmp(me->sp->style->name, "Preformatted")))) {
-	        me->sp->style->alignment = HT_LEFT;
+		me->sp->style->alignment = HT_LEFT;
 	} else {
 	    me->sp->style->alignment = me->current_default_alignment;
 	}
@@ -5772,7 +5694,7 @@ PRIVATE void HTML_end_element ARGS3(
 	 */
 	me->inP = FALSE;
 
-        break;
+	break;
 
     case HTML_FONT:
 	me->inFONT = FALSE;
@@ -5786,7 +5708,7 @@ PRIVATE void HTML_end_element ARGS3(
     case HTML_CITE:			/* Logical character highlighting */
     case HTML_EM:
     case HTML_STRONG:
-        /*
+	/*
 	 *  Ignore any emphasis end tags if the
 	 *  Underline_Level is not set. - FM
 	 */
@@ -5802,12 +5724,12 @@ PRIVATE void HTML_end_element ARGS3(
 	    HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
 	    me->inUnderline = FALSE;
 	    if (TRACE)
-	        fprintf(stderr,"Ending underline\n");
+		fprintf(stderr,"Ending underline\n");
 	} else {
 	    if (TRACE)
-	        fprintf(stderr,"Underline Level is %d\n", me->Underline_Level);
+		fprintf(stderr,"Underline Level is %d\n", me->Underline_Level);
 	}
-    	break;
+	break;
 
     case HTML_ABBREV:	/* Miscellaneous character containers */
     case HTML_ACRONYM:
@@ -5850,9 +5772,9 @@ PRIVATE void HTML_end_element ARGS3(
 	break;
 
     case HTML_Q:
-        if (me->Quote_Level > 0)
+	if (me->Quote_Level > 0)
 	    me->Quote_Level--;
-        /*
+	/*
 	 *  Should check LANG and/or DIR attributes, and the
 	 *  me->node_anchor->charset and/or yet to be added
 	 *  structure elements, to determine whether we should
@@ -5863,7 +5785,7 @@ PRIVATE void HTML_end_element ARGS3(
 	    HTML_put_character(me, '"');
 	else
 	    HTML_put_character(me, '\'');
-        break;
+	break;
 
     case HTML_PRE:				/* Formatted text */
 	/*
@@ -5873,8 +5795,8 @@ PRIVATE void HTML_end_element ARGS3(
     case HTML_LISTING:				/* Litteral text */
     case HTML_XMP:
     case HTML_PLAINTEXT:
-    	if (me->comment_start)
-    	    HText_appendText(me->text, me->comment_start);
+	if (me->comment_start)
+	    HText_appendText(me->text, me->comment_start);
 	change_paragraph_style(me, me->sp->style);  /* Often won't really change */
 	if (me->List_Nesting_Level >= 0) {
 	    UPDATE_STYLE;
@@ -5894,7 +5816,7 @@ PRIVATE void HTML_end_element ARGS3(
 	break;
 
     case HTML_OL:
-        me->OL_Counter[me->List_Nesting_Level < 11 ?
+	me->OL_Counter[me->List_Nesting_Level < 11 ?
 			    me->List_Nesting_Level : 11] = OL_VOID;
     case HTML_DL:
     case HTML_UL:
@@ -5910,29 +5832,29 @@ PRIVATE void HTML_end_element ARGS3(
 	UPDATE_STYLE;
 	if (me->List_Nesting_Level >= 0)
 	    LYEnsureSingleSpace(me);
-        break;
+	break;
 
     case HTML_SPAN:
-        /*
+	/*
 	 *  Should undo anything we did based on LANG and/or DIR
 	 *  attributes, and the me->node_anchor->charset and/or
 	 *  yet to be added structure elements. - FM
 	 */
-        break;
+	break;
 
     case HTML_BDO:
-        /*
+	/*
 	 *  Should undo anything we did based on DIR (and/or LANG)
 	 *  attributes, and the me->node_anchor->charset and/or
 	 *  yet to be added structure elements. - FM
 	 */
-        break;
+	break;
 
     case HTML_A:
-        /*
+	/*
 	 *  Ignore any spurious A end tags. - FM
 	 */
-        if (me->inA == FALSE)
+	if (me->inA == FALSE)
 	    break;
 	/*
 	 *  Set to know that we are no longer in an anchor.
@@ -5952,11 +5874,11 @@ PRIVATE void HTML_end_element ARGS3(
 	break;
 
     case HTML_MAP:
-        FREE(me->map_address);
-        break;
+	FREE(me->map_address);
+	break;
 
     case HTML_BODYTEXT:
-        /*
+	/*
 	 *  We may need to look at this someday to deal with
 	 *  OBJECTs optimally, but just ignore it for now. - FM
 	 */
@@ -5964,7 +5886,7 @@ PRIVATE void HTML_end_element ARGS3(
 	break;
 
     case HTML_TEXTFLOW:
-        /*
+	/*
 	 *  We may need to look at this someday to deal with
 	 *  APPLETs optimally, but just ignore it for now. - FM
 	 */
@@ -5979,7 +5901,7 @@ PRIVATE void HTML_end_element ARGS3(
 	}
 	LYResetParagraphAlignment(me);
 	me->inFIGwithP = FALSE;
-    	me->inFIG = FALSE;
+	me->inFIG = FALSE;
 	change_paragraph_style(me, me->sp->style);  /* Often won't really change */
 	if (me->List_Nesting_Level >= 0) {
 	    UPDATE_STYLE;
@@ -6000,7 +5922,7 @@ PRIVATE void HTML_end_element ARGS3(
 	    HTChunkTerminate(&me->object);
 	    data = me->object.data;
 	    while ((cp = strchr(data, '<')) != NULL) {
-	        /*
+		/*
 		 *  Look for nested OBJECTs.  This procedure
 		 *  could get tripped up if invalid comments
 		 *  are present in the content, or if an OBJECT
@@ -6011,19 +5933,19 @@ PRIVATE void HTML_end_element ARGS3(
 		    cp = data;
 		} else if (s == 0 && !strncasecomp(cp, "<PARAM", 6)) {
 		    have_param = TRUE;
-	        } else if (!strncasecomp(cp, "<OBJECT", 7)) {
+		} else if (!strncasecomp(cp, "<OBJECT", 7)) {
 		    if (s == 0)
-		        start = cp;
+			start = cp;
 		    s++;
 		} else if (!strncasecomp(cp, "</OBJECT", 8)) {
 		    if (e == 0)
-		        first_end = cp;
+			first_end = cp;
 		    e++;
 		}
 		data = ++cp;
 	    }
 	    if (s > e) {
-	        /*
+		/*
 		 *  We have nested OBJECT tags, and not yet all of the
 		 *  end tags, so restore an end tag to the content, and
 		 *  pass a dummy start tag to the SGML parser so that it
@@ -6035,22 +5957,22 @@ PRIVATE void HTML_end_element ARGS3(
 		    StrAllocCopy(*include, "<OBJECT>");
 		} else {
 		    if (0 && strstr(*include, me->object.data) == NULL) {
-		        StrAllocCat(*include, "<OBJECT>");
+			StrAllocCat(*include, "<OBJECT>");
 		    }
 		}
-	        me->object.size--;
+		me->object.size--;
 		HTChunkPuts(&me->object, "</OBJECT>");
 		change_paragraph_style(me, me->sp->style);
 		break;
 	    }
 	    if (s < e) {
-	        /*
+		/*
 		 *  We had more end tags than start tags, so
 		 *  we have bad HTML or otherwise misparsed. - FM
 		 */
 		if (TRACE) {
 		    fprintf(stderr,
-  "Bad HTML: Unmatched OBJECT start and end tags. ***** Discarding content:\n%s\n",
+  "Bad HTML: Unmatched OBJECT start and end tags.  Discarding content:\n%s\n",
 			    me->object.data);
 		} else if (!me->inBadHTML) {
 		    _statusline(BAD_HTML_USE_TRACE);
@@ -6061,54 +5983,54 @@ PRIVATE void HTML_end_element ARGS3(
 	    }
 
 	    /*
-	     *  OBJECT start and end tags are fully matched,
-	     *  assuming we weren't tripped up by comments
-	     *  or quoted attributes. - FM
+	     *	OBJECT start and end tags are fully matched,
+	     *	assuming we weren't tripped up by comments
+	     *	or quoted attributes. - FM
 	     */
 	    if (TRACE)
-	        fprintf(stderr, "HTML:OBJECT content:\n%s\n", me->object.data);
+		fprintf(stderr, "HTML:OBJECT content:\n%s\n", me->object.data);
 
 	    /*
-	     *  OBJECTs with DECLARE should be saved but
-	     *  not instantiated, and if nested, can have
-	     *  only other DECLAREd OBJECTs.  Until we have
-	     *  code to handle these, we'll just create an
-	     *  anchor for the ID, if present, and discard
-	     *  the content (sigh 8-). - FM
+	     *	OBJECTs with DECLARE should be saved but
+	     *	not instantiated, and if nested, can have
+	     *	only other DECLAREd OBJECTs.  Until we have
+	     *	code to handle these, we'll just create an
+	     *	anchor for the ID, if present, and discard
+	     *	the content (sigh 8-). - FM
 	     */
 	    if (me->object_declare == TRUE) {
-	        if (me->object_id && *me->object_id)
+		if (me->object_id && *me->object_id)
 		    LYHandleID(me, me->object_id);
 		if (TRACE)
 		    fprintf(stderr, "HTML: DECLAREd OBJECT.  Ignoring!\n");
-	        goto End_Object;
+		goto End_Object;
 	    }
 
 	    /*
-	     *  OBJECTs with NAME are for FORM submissions.
-	     *  We'll just create an anchor for the ID, if
-	     *  present, and discard the content until we
-	     *  have code to handle these. (sigh 8-). - FM
+	     *	OBJECTs with NAME are for FORM submissions.
+	     *	We'll just create an anchor for the ID, if
+	     *	present, and discard the content until we
+	     *	have code to handle these. (sigh 8-). - FM
 	     */
 	    if (me->object_name != NULL) {
-	        if (me->object_id && *me->object_id)
+		if (me->object_id && *me->object_id)
 		    LYHandleID(me, me->object_id);
 		if (TRACE)
 		    fprintf(stderr, "HTML: NAMEd OBJECT.  Ignoring!\n");
-	        goto End_Object;
+		goto End_Object;
 	    }
 
 	    /*
-	     *  Deal with any nested OBJECTs by descending
-	     *  to the inner-most OBJECT. - FM
+	     *	Deal with any nested OBJECTs by descending
+	     *	to the inner-most OBJECT. - FM
 	     */
 	    if (s > 0) {
 		if (start != NULL &&
 		    first_end != NULL && first_end > start) {
 		    /*
-		     *  Minumum requirements for the ad hoc parsing
-		     *  to have succeeded are met.  We'll hope that
-		     *  it did succeed. - FM
+		     *	Minumum requirements for the ad hoc parsing
+		     *	to have succeeded are met.  We'll hope that
+		     *	it did succeed. - FM
 		     */
 		    *first_end = '\0';
 		    data = NULL;
@@ -6128,10 +6050,10 @@ PRIVATE void HTML_end_element ARGS3(
 		} else {
 		    if (TRACE) {
 			fprintf(stderr,
-	"Bad HTML: Unmatched OBJECT start and end tags. ***** Discarding content.\n");
+     "Bad HTML: Unmatched OBJECT start and end tags.  Discarding content.\n");
 			goto End_Object;
 		    } else if (!me->inBadHTML) {
-		        _statusline(BAD_HTML_USE_TRACE);
+			_statusline(BAD_HTML_USE_TRACE);
 			me->inBadHTML = TRUE;
 			sleep(MessageSecs);
 			goto End_Object;
@@ -6140,21 +6062,21 @@ PRIVATE void HTML_end_element ARGS3(
 	    }
 
 	    /*
-	     *  If it's content has SHAPES, convert it to FIG. - FM
+	     *	If it's content has SHAPES, convert it to FIG. - FM
 	     */
 	    if (me->object_shapes == TRUE) {
 		if (TRACE)
 		    fprintf(stderr,
 		    "HTML: OBJECT has SHAPES.  Converting to FIG.\n");
-	        StrAllocCat(*include, "<FIG ISOBJECT IMAGEMAP");
+		StrAllocCat(*include, "<FIG ISOBJECT IMAGEMAP");
 		if (me->object_ismap == TRUE)
 		    StrAllocCat(*include, " IMAGEMAP");
-	        if (me->object_id != NULL) {
+		if (me->object_id != NULL) {
 		    StrAllocCat(*include, " ID=\"");
 		    StrAllocCat(*include, me->object_id);
 		    StrAllocCat(*include, "\"");
 		}
-	        if (me->object_data != NULL &&
+		if (me->object_data != NULL &&
 		    me->object_classid == NULL) {
 		    StrAllocCat(*include, " SRC=\"");
 		    StrAllocCat(*include, me->object_data);
@@ -6169,37 +6091,37 @@ PRIVATE void HTML_end_element ARGS3(
 	    }
 
 	    /*
-	     *  If it has a USEMAP attribute and didn't have SHAPES,
-	     *  convert it to IMG. - FM
+	     *	If it has a USEMAP attribute and didn't have SHAPES,
+	     *	convert it to IMG. - FM
 	     */
 	    if (me->object_usemap != NULL) {
 		if (TRACE)
 		    fprintf(stderr,
 		    "HTML: OBJECT has USEMAP.  Converting to IMG.\n");
 
-	        StrAllocCat(*include, "<IMG ISOBJECT");
-	        if (me->object_id != NULL) {
+		StrAllocCat(*include, "<IMG ISOBJECT");
+		if (me->object_id != NULL) {
 		    /*
-		     *  Pass the ID. - FM
+		     *	Pass the ID. - FM
 		     */
 		    StrAllocCat(*include, " ID=\"");
 		    StrAllocCat(*include, me->object_id);
 		    StrAllocCat(*include, "\"");
 		}
-	        if (me->object_data != NULL &&
+		if (me->object_data != NULL &&
 		    me->object_classid == NULL) {
 		    /*
-		     *  We have DATA with no CLASSID, so let's
-		     *  hope it' equivalent to an SRC. - FM
+		     *	We have DATA with no CLASSID, so let's
+		     *	hope it' equivalent to an SRC. - FM
 		     */
 		    StrAllocCat(*include, " SRC=\"");
 		    StrAllocCat(*include, me->object_data);
 		    StrAllocCat(*include, "\"");
 		}
-	        if (me->object_title != NULL) {
+		if (me->object_title != NULL) {
 		    /*
-		     *  Use the TITLE for both the MAP
-		     *  and the IMGs ALT. - FM
+		     *	Use the TITLE for both the MAP
+		     *	and the IMGs ALT. - FM
 		     */
 		    StrAllocCat(*include, " TITLE=\"");
 		    StrAllocCat(*include, me->object_title);
@@ -6214,9 +6136,9 @@ PRIVATE void HTML_end_element ARGS3(
 		    StrAllocCat(*include, " USEMAP=\"");
 		    StrAllocCat(*include, me->object_usemap);
 		    if (me->object_ismap == TRUE)
-		        StrAllocCat(*include, "\" ISMAP>");
+			StrAllocCat(*include, "\" ISMAP>");
 		    else
-		        StrAllocCat(*include, "\">");
+			StrAllocCat(*include, "\">");
 		} else {
 		    StrAllocCat(*include, ">");
 		}
@@ -6224,56 +6146,56 @@ PRIVATE void HTML_end_element ARGS3(
 	    }
 
 	    /*
-	     *  Add an ID link if needed. - FM
+	     *	Add an ID link if needed. - FM
 	     */
 	    if (me->object_id && *me->object_id)
-	        LYHandleID(me, me->object_id);
+		LYHandleID(me, me->object_id);
 
 	    /*
-	     *  Add the OBJECTs content if not empty. - FM
+	     *	Add the OBJECTs content if not empty. - FM
 	     */
 	    if (me->object.size > 1)
 		StrAllocCat(*include, me->object.data);
 
 	    /*
-	     *  Create a link to the DATA, if desired, and
-	     *  we can rule out that it involves scripting
-	     *  code.  This a risky thing to do, but we can
-	     *  toggle clickable_images mode off if it really
-	     *  screws things up, and so we may as well give
-	     *  it a try. - FM
+	     *	Create a link to the DATA, if desired, and
+	     *	we can rule out that it involves scripting
+	     *	code.  This a risky thing to do, but we can
+	     *	toggle clickable_images mode off if it really
+	     *	screws things up, and so we may as well give
+	     *	it a try. - FM
 	     */
 	    if (clickable_images) {
-	        if (me->object_data != NULL &&
-	            !have_param &&
+		if (me->object_data != NULL &&
+		    !have_param &&
 		    me->object_classid == NULL &&
 		    me->object_codebase == NULL &&
 		    me->object_codetype == NULL) {
 		    /*
-		     *  We have a DATA value and no need for scripting
-		     *  code, so close the current Anchor, if one is
-		     *  open, and add an Anchor for this source.  If
-		     *  we also have a TYPE value, check whether it's
-		     *  an image or not, and set the link name
-		     *  accordingly. - FM
+		     *	We have a DATA value and no need for scripting
+		     *	code, so close the current Anchor, if one is
+		     *	open, and add an Anchor for this source.  If
+		     *	we also have a TYPE value, check whether it's
+		     *	an image or not, and set the link name
+		     *	accordingly. - FM
 		     */
 		    if (me->inA)
-		        StrAllocCat(*include, "</A>");
+			StrAllocCat(*include, "</A>");
 		    StrAllocCat(*include, " -<A HREF=\"");
 		    StrAllocCat(*include, me->object_data);
 		    StrAllocCat(*include, "\">");
 		    if ((me->object_type != NULL) &&
-		        !strncasecomp(me->object_type, "image/", 6)) {
+			!strncasecomp(me->object_type, "image/", 6)) {
 			StrAllocCat(*include, "(IMAGE)");
 		    } else {
-		        StrAllocCat(*include, "(OBJECT)");
+			StrAllocCat(*include, "(OBJECT)");
 		    }
 		    StrAllocCat(*include, "</A> ");
 		}
 	    }
 	}
 
-        /*
+	/*
 	 *  Re-intialize all of the OBJECT elements. - FM
 	 */
 End_Object:
@@ -6303,7 +6225,7 @@ End_Object:
 	}
 	LYResetParagraphAlignment(me);
 	me->inAPPLETwithP = FALSE;
-    	me->inAPPLET = FALSE;
+	me->inAPPLET = FALSE;
 	change_paragraph_style(me, me->sp->style);  /* Often won't really change */
 	break;
 
@@ -6332,9 +6254,9 @@ End_Object:
 	 */
 	if (!me->inFORM) {
 	    if (TRACE) {
-		fprintf(stderr, "Bad HTML: Unmatched FORM end tag *****\n");
+		fprintf(stderr, "Bad HTML: Unmatched FORM end tag\n");
 	    } else if (!me->inBadHTML) {
-	        _statusline(BAD_HTML_USE_TRACE);
+		_statusline(BAD_HTML_USE_TRACE);
 		me->inBadHTML = TRUE;
 		sleep(MessageSecs);
 	    }
@@ -6387,32 +6309,32 @@ End_Object:
 	LYEnsureDoubleSpace(me);
 	LYResetParagraphAlignment(me);
 	change_paragraph_style(me, me->sp->style);  /* Often won't really change */
-        break;
+	break;
 
     case HTML_LEGEND:
 	LYEnsureDoubleSpace(me);
 	LYResetParagraphAlignment(me);
 	change_paragraph_style(me, me->sp->style);  /* Often won't really change */
-        break;
+	break;
 
     case HTML_LABEL:
-        break;
+	break;
 
     case HTML_BUTTON:
-        break;
+	break;
 
     case HTML_TEXTAREA:
-        {
-            InputFieldData I;
-            int chars;
+	{
+	    InputFieldData I;
+	    int chars;
 	    char *data;
 
 	    /*
-	     *  Make sure we had a textarea start tag.
+	     *	Make sure we had a textarea start tag.
 	     */
 	    if (!me->inTEXTAREA) {
-	        if (TRACE) {
-		    fprintf(stderr, "Bad HTML: Unmatched TEXTAREA end tag *****\n");
+		if (TRACE) {
+		    fprintf(stderr, "Bad HTML: Unmatched TEXTAREA end tag\n");
 		} else if (!me->inBadHTML) {
 		    _statusline(BAD_HTML_USE_TRACE);
 		    me->inBadHTML = TRUE;
@@ -6422,12 +6344,12 @@ End_Object:
 	    }
 
 	    /*
-	     *  Set to know that we are no longer in a textarea tag.
+	     *	Set to know that we are no longer in a textarea tag.
 	     */
 	    me->inTEXTAREA = FALSE;
 
-            /*
-	     *  Initialize.
+	    /*
+	     *	Initialize.
 	     */
 	    I.align=NULL; I.accept=NULL; I.checked=NO; I.class=NULL;
 	    I.disabled=NO; I.error=NULL; I.height= NULL; I.id=NULL;
@@ -6436,21 +6358,21 @@ End_Object:
 	    I.type=NULL; I.value=NULL; I.width=NULL;
 	    I.value_cs = current_char_set;
 
-            UPDATE_STYLE;
-            /*
-	     *  Before any input field add a space if necessary.
+	    UPDATE_STYLE;
+	    /*
+	     *	Before any input field add a space if necessary.
 	     */
-            HTML_put_character(me, ' ');
+	    HTML_put_character(me, ' ');
 	    me->in_word = NO;
 	    /*
-	     *  Add a return.
+	     *	Add a return.
 	     */
 	    HText_appendCharacter(me->text, '\r');
 
 	    /*
-	     *  Finish the data off.
+	     *	Finish the data off.
 	     */
-            HTChunkTerminate(&me->textarea);
+	    HTChunkTerminate(&me->textarea);
 	    data = me->textarea.data;
 	    FREE(temp);
 
@@ -6464,12 +6386,12 @@ End_Object:
 	    I.id = me->textarea_id;
 
 	    /*
-	     *  SGML unescape any character references in TEXTAREA
-	     *  content, then parse it into individual lines
-	     *  to be handled as a series of INPUT fields (ugh!).
-	     *  Any raw 8-bit or multibye characters already have been
-	     *  handled in relation to the display character set
-	     *  in SGML_character().
+	     *	SGML unescape any character references in TEXTAREA
+	     *	content, then parse it into individual lines
+	     *	to be handled as a series of INPUT fields (ugh!).
+	     *	Any raw 8-bit or multibye characters already have been
+	     *	handled in relation to the display character set
+	     *	in SGML_character().
 	     */
 	    me->UsePlainSpace = TRUE;
 
@@ -6577,7 +6499,7 @@ End_Object:
 
 	    HTChunkClear(&me->textarea);
 	    FREE(me->textarea_name);
-            me->textarea_name_cs = -1;
+	    me->textarea_name_cs = -1;
 	    FREE(me->textarea_cols);
 	    FREE(me->textarea_id);
 	    break;
@@ -6588,10 +6510,10 @@ End_Object:
 	    char *ptr;
 
 	    /*
-	     *  Make sure we had a select start tag.
+	     *	Make sure we had a select start tag.
 	     */
 	    if (!me->inSELECT) {
-	        if (TRACE) {
+		if (TRACE) {
 		    fprintf(stderr, "Bad HTML: Unmatched SELECT end tag *****\n");
 		} else if (!me->inBadHTML) {
 		    _statusline(BAD_HTML_USE_TRACE);
@@ -6602,20 +6524,20 @@ End_Object:
 	    }
 
 	    /*
-	     *  Set to know that we are no longer in a select tag.
+	     *	Set to know that we are no longer in a select tag.
 	     */
 	    me->inSELECT = FALSE;
 
 	    /*
-	     *  Clear the disable attribute.
+	     *	Clear the disable attribute.
 	     */
 	    me->select_disabled = FALSE;
 
 	    /*
-	     *  Make sure we're in a form.
+	     *	Make sure we're in a form.
 	     */
 	    if (!me->inFORM) {
-	        if (TRACE) {
+		if (TRACE) {
 		    fprintf(stderr,
 			    "Bad HTML: SELECT end tag not within FORM element *****\n");
 		} else if (!me->inBadHTML) {
@@ -6623,20 +6545,20 @@ End_Object:
 		    me->inBadHTML = TRUE;
 		    sleep(MessageSecs);
 		}
-	        /*
+		/*
 		 *  Hopefully won't crash, so we'll ignore it. - kw
 		 */
 	    }
 
 	    /*
-	     *  Finish the data off.
+	     *	Finish the data off.
+	     */
+	    HTChunkTerminate(&me->option);
+	    /*
+	     *	Finish the previous option.
 	     */
-       	    HTChunkTerminate(&me->option);
-	/*
-	 *  Finish the previous option.
-	 */
 	    ptr = HText_setLastOptionValue(me->text,
-	    				   me->option.data,
+					   me->option.data,
 					   me->LastOptionValue,
 					   LAST_ORDER,
 					   me->LastOptionChecked,
@@ -6647,41 +6569,41 @@ End_Object:
 	    me->LastOptionChecked = FALSE;
 
 	    if (HTCurSelectGroupType == F_CHECKBOX_TYPE ||
-	        LYSelectPopups == FALSE) {
-	            /*
-		     *  Start a newline after the last checkbox/button option.
+		LYSelectPopups == FALSE) {
+		    /*
+		     *	Start a newline after the last checkbox/button option.
 		     */
 		    LYEnsureSingleSpace(me);
 	    } else {
-	        /*
+		/*
 		 *  Output popup box with the default option to screen,
 		 *  but use non-breaking spaces for output.
 		 */
-	        if (ptr &&
+		if (ptr &&
 		    (me->sp[0].tag_number == HTML_PRE || me->inPRE == TRUE ||
 		     !me->sp->style->freeFormat) &&
 		    strlen(ptr) > 6) {
-	            /*
-		     *  The code inadequately handles OPTION fields in PRE tags.
-		     *  We'll put up a minimum of 6 characters, and if any
-		     *  more would exceed the wrap column, we'll ignore them.
+		    /*
+		     *	The code inadequately handles OPTION fields in PRE tags.
+		     *	We'll put up a minimum of 6 characters, and if any
+		     *	more would exceed the wrap column, we'll ignore them.
 		     */
 		    for (i = 0; i < 6; i++) {
-		        if (*ptr == ' ')
-	    	            HText_appendCharacter(me->text,HT_NON_BREAK_SPACE);
-		        else
-	    	            HText_appendCharacter(me->text,*ptr);
+			if (*ptr == ' ')
+			    HText_appendCharacter(me->text,HT_NON_BREAK_SPACE);
+			else
+			    HText_appendCharacter(me->text,*ptr);
 			ptr++;
 		    }
 		    HText_setIgnoreExcess(me->text, TRUE);
-	        }
-	        for (; ptr && *ptr != '\0'; ptr++) {
+		}
+		for (; ptr && *ptr != '\0'; ptr++) {
 		    if (*ptr == ' ')
-	    	        HText_appendCharacter(me->text,HT_NON_BREAK_SPACE);
+			HText_appendCharacter(me->text,HT_NON_BREAK_SPACE);
 		    else
-	    	        HText_appendCharacter(me->text,*ptr);
+			HText_appendCharacter(me->text,*ptr);
 		}
-	        /*
+		/*
 		 *  Add end option character.
 		 */
 		if (!me->first_option) {
@@ -6691,14 +6613,14 @@ End_Object:
 		}
 		HText_setIgnoreExcess(me->text, FALSE);
 	    }
-    	    HTChunkClear(&me->option);
+	    HTChunkClear(&me->option);
 
 	    if (me->Underline_Level > 0 && me->inUnderline == FALSE) {
-	        HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
-	        me->inUnderline = TRUE;
+		HText_appendCharacter(me->text, LY_UNDERLINE_START_CHAR);
+		me->inUnderline = TRUE;
 	    }
 	    if (me->needBoldH == TRUE && me->inBoldH == FALSE) {
-	        HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
+		HText_appendCharacter(me->text, LY_BOLD_START_CHAR);
 		me->inBoldH = TRUE;
 		me->needBoldH = FALSE;
 	    }
@@ -6706,7 +6628,7 @@ End_Object:
 	break;
 
     case HTML_TABLE:
-        me->inTABLE = FALSE;
+	me->inTABLE = FALSE;
 	if (!strcmp(me->sp->style->name, "Preformatted")) {
 	    break;
 	}
@@ -6714,31 +6636,31 @@ End_Object:
 	    me->Division_Level--;
 	if (me->Division_Level >= 0)
 	    me->sp->style->alignment =
-	    			me->DivisionAlignments[me->Division_Level];
+				me->DivisionAlignments[me->Division_Level];
 	change_paragraph_style(me, me->sp->style);
 	UPDATE_STYLE;
 	me->current_default_alignment = me->sp->style->alignment;
 	if (me->List_Nesting_Level >= 0)
 	    HText_NegateLineOne(me->text);
-        break;
+	break;
 
 /* These TABLE related elements may now not be SGML_EMPTY. - kw */
     case HTML_TR:
-        break;
+	break;
 
     case HTML_THEAD:
     case HTML_TFOOT:
     case HTML_TBODY:
-        break;
+	break;
 
     case HTML_COLGROUP:
-        break;
+	break;
 
     case HTML_TH:
-        break;
+	break;
 
     case HTML_TD:
-        break;
+	break;
 
 /* More stuff that may now not be SGML_EMPTY any more: */
     case HTML_DT:
@@ -6749,12 +6671,12 @@ End_Object:
 	break;
 
     case HTML_MATH:
-        /*
+	/*
 	 *  We're getting it as Litteral text, which, until we can process
 	 *  it, we'll display as is, within brackets to alert the user. - FM
 	 */
 	HTChunkPutc(&me->math, ' ');
-        HTChunkTerminate(&me->math);
+	HTChunkTerminate(&me->math);
 	if (me->math.size > 2) {
 	    LYEnsureSingleSpace(me);
 	    if (me->inUnderline == FALSE)
@@ -6779,47 +6701,47 @@ End_Object:
     } /* switch */
 #ifdef USE_COLOR_STYLE
     {
-        char *end, *start=NULL, *lookfrom;
-        char tmp[64];
-        sprintf(tmp, ";%s", HTML_dtd.tags[element_number].name);
-        strtolower(tmp);
-
-        lookfrom = Style_className;
-        do
-        {
-            end = start;
-            start = strstr(lookfrom, tmp);
-            if (start)
-                lookfrom = start + 1;
-        }
-        while (start);
+	char *end, *start=NULL, *lookfrom;
+	char tmp[64];
+	sprintf(tmp, ";%s", HTML_dtd.tags[element_number].name);
+	strtolower(tmp);
+
+	lookfrom = Style_className;
+	do
+	{
+	    end = start;
+	    start = strstr(lookfrom, tmp);
+	    if (start)
+		lookfrom = start + 1;
+	}
+	while (start);
 /* trim the last matching element off the end
 ** - should match classes here as well (rp)
 */
-        if (end)
-            *end='\0';
-        hcode=hash_code(lookfrom && *lookfrom ? lookfrom : &tmp[1]);
-        if (TRACE)
-            fprintf(stderr, "CSS:%s (trimmed %s, END_ELEMENT)\n", Style_className, tmp);
+	if (end)
+	    *end='\0';
+	hcode=hash_code(lookfrom && *lookfrom ? lookfrom : &tmp[1]);
+	if (TRACE)
+	    fprintf(stderr, "CSS:%s (trimmed %s, END_ELEMENT)\n", Style_className, tmp);
     }
 
     if (HTML_dtd.tags[element_number].contents != SGML_EMPTY)
     {
-        if (TRACE)
-            fprintf(stderr, "STYLE:end_element: ending non-EMPTY style\n");
+	if (TRACE)
+	    fprintf(stderr, "STYLE:end_element: ending non-EMPTY style\n");
 #if !defined(USE_HASH)
-        HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF);
+	HText_characterStyle(me->text, element_number+STARTAT, STACK_OFF);
 #else
-        HText_characterStyle(me->text, hcode, STACK_OFF);
+	HText_characterStyle(me->text, hcode, STACK_OFF);
 #endif /* USE_HASH */
 #if defined(PREVAIL)
-        /* reset the prevailing class to the previous one */
-        {
-                char *dot=strrchr(Style_className,'.');
-                LYstrncpy(prevailing_class,
+	/* reset the prevailing class to the previous one */
+	{
+		char *dot=strrchr(Style_className,'.');
+		LYstrncpy(prevailing_class,
 			  dot ? (char*)(dot+1) : "",
 			  (TEMPSTRINGSIZE - 1));
-        }
+	}
 #endif
     }
 #endif /* USE_COLOR_STYLE */
@@ -6832,30 +6754,30 @@ End_Object:
 */
 PUBLIC int HTML_put_entity ARGS2(HTStructured *, me, int, entity_number)
 {
-    int nent = HTML_dtd.number_of_entities;
+    int nent = HTML_dtd.number_of_entities, c_out;
+    UCode_t uni;
 
     if (entity_number < nent) {
 	HTML_put_string(me, p_entity_values[entity_number]);
 	return HT_OK;
     } else if (me->UCLYhndl < 0) {
 	return HT_CANNOT_TRANSLATE;
-    } else {
-	UCode_t uni = HTML_dtd.extra_entity_info[entity_number-nent].code;
-	int c_out = UCTransUniChar(uni, me->UCLYhndl);
-	if (c_out > 0) {
-	    HTML_put_character(me, (char)c_out);
+    }
+    uni = HTML_dtd.extra_entity_info[entity_number-nent].code;
+    c_out = UCTransUniChar(uni, me->UCLYhndl);
+    if (c_out > 0) {
+	HTML_put_character(me, (char)c_out);
+	return HT_OK;
+    } else if (c_out == UCTRANS_NOTFOUND) {
+	char buf[21];
+	int c_out2 = UCTransUniCharStr(buf,20, uni, me->UCLYhndl, NO);
+
+	if (c_out2 >= 0) {
+	    HTML_put_string(me, buf);
 	    return HT_OK;
-	} else if (c_out==UCTRANS_NOTFOUND) {
-	    char buf[21];
-	    int c_out2 = UCTransUniCharStr(buf,20, uni, me->UCLYhndl, NO);
-	    if (c_out2 >= 0) {
-		HTML_put_string(me, buf);
-		return HT_OK;
-	    }
 	}
-	return HT_CANNOT_TRANSLATE;
     }
-    return HT_OK;
+    return HT_CANNOT_TRANSLATE;
 }
 
 /*	Free an HTML object
@@ -6863,7 +6785,7 @@ PUBLIC int HTML_put_entity ARGS2(HTStructured *, me, int, entity_number)
 **
 **	If the document is empty, the text object will not yet exist.
 **	So we could in fact abandon creating the document and return
-**	an error code.  In fact an empty document is an important type
+**	an error code.	In fact an empty document is an important type
 **	of document, so we don't.
 **
 **	If non-interactive, everything is freed off.   No: crashes -listrefs
@@ -6874,7 +6796,7 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
     char *include = NULL;
 
     if (LYMapsOnly && !me->text) {
-        /*
+	/*
 	 *  We only handled MAP, AREA and BASE tags, and didn't
 	 *  create an HText structure for the document nor want
 	 *  one now, so just make sure we free anything that might
@@ -6904,14 +6826,14 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
 	 *  and of correct wind-down on end-of-stream (in SGML_free
 	 *  SGML_abort),
 	 *  THEN these and other checks here in HTML.c should not be
-	 *  necessary.  Still it can't hurt to include them. - kw
+	 *  necessary.	Still it can't hurt to include them. - kw
 	 */
 	if (me->inUnderline) {
 	    HText_appendCharacter(me->text, LY_UNDERLINE_END_CHAR);
 	    me->inUnderline = FALSE;
 	    me->Underline_Level = 0;
 	    if (TRACE)
-	        fprintf(stderr,"HTML_free: Ending underline\n");
+		fprintf(stderr,"HTML_free: Ending underline\n");
 	}
 	if (me->inA) {
 	    HTML_end_element(me, HTML_A, (char **)&include);
@@ -6927,9 +6849,9 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
 	}
 	if (me->option.size > 0) {
 	    /*
-	     *  If we still have data in the me->option chunk after
-	     *  forcing a close of a still-open form, something must
-	     *  have gone very wrong. - kw
+	     *	If we still have data in the me->option chunk after
+	     *	forcing a close of a still-open form, something must
+	     *	have gone very wrong. - kw
 	     */
 	    if (TRACE) {
 		fprintf(stderr,
@@ -6941,8 +6863,8 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
 	    }
 	    HTChunkTerminate(&me->option);
 	    /*
-	     *  Output the left-over data as text, maybe it was invalid
-	     *  markup meant to be shown somewhere. - kw
+	     *	Output the left-over data as text, maybe it was invalid
+	     *	markup meant to be shown somewhere. - kw
 	     */
 	    if (TRACE)
 		fprintf(stderr, "HTML_free: ***** leftover option data: %s\n",
@@ -6952,9 +6874,9 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
 	}
 	if (me->textarea.size > 0) {
 	    /*
-	     *  If we still have data in the me->textarea chunk after
-	     *  forcing a close of a still-open form, something must
-	     *  have gone very wrong. - kw
+	     *	If we still have data in the me->textarea chunk after
+	     *	forcing a close of a still-open form, something must
+	     *	have gone very wrong. - kw
 	     */
 	    if (TRACE) {
 		fprintf(stderr,
@@ -6966,8 +6888,8 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
 	    }
 	    HTChunkTerminate(&me->textarea);
 	    /*
-	     *  Output the left-over data as text, maybe it was invalid
-	     *  markup meant to be shown somewhere. - kw
+	     *	Output the left-over data as text, maybe it was invalid
+	     *	markup meant to be shown somewhere. - kw
 	     */
 	    if (TRACE)
 		fprintf(stderr, "HTML_free: ***** leftover textarea data: %s\n",
@@ -7042,17 +6964,17 @@ PRIVATE void HTML_free ARGS1(HTStructured *, me)
     }
 
     if (me->target) {
-        (*me->targetClass._free)(me->target);
+	(*me->targetClass._free)(me->target);
     }
     if (me->sp && me->sp->style && me->sp->style->name) {
-        if (!strcmp(me->sp->style->name, "DivCenter") ||
+	if (!strcmp(me->sp->style->name, "DivCenter") ||
 	    !strcmp(me->sp->style->name, "HeadingCenter") ||
 	    !strcmp(me->sp->style->name, "Heading1")) {
 	    me->sp->style->alignment = HT_CENTER;
 	} else if (!strcmp(me->sp->style->name, "DivRight") ||
 		   !strcmp(me->sp->style->name, "HeadingRight")) {
 	    me->sp->style->alignment = HT_RIGHT;
-	} else  {
+	} else	{
 	    me->sp->style->alignment = HT_LEFT;
 	}
 	styles[HTML_PRE]->alignment = HT_LEFT;
@@ -7068,7 +6990,7 @@ PRIVATE void HTML_abort ARGS2(HTStructured *, me, HTError, e)
     char *include = NULL;
 
     if (me->text) {
-        /*
+	/*
 	 *  If we have emphasis on, or open A, FONT, or FORM
 	 *  containers, turn it off or close them now. - FM
 	 */
@@ -7128,17 +7050,17 @@ PRIVATE void HTML_abort ARGS2(HTStructured *, me, HTError, e)
     }
 
     if (me->target) {
-        (*me->targetClass._abort)(me->target, e);
+	(*me->targetClass._abort)(me->target, e);
     }
     if (me->sp && me->sp->style && me->sp->style->name) {
-        if (!strcmp(me->sp->style->name, "DivCenter") ||
+	if (!strcmp(me->sp->style->name, "DivCenter") ||
 	    !strcmp(me->sp->style->name, "HeadingCenter") ||
 	    !strcmp(me->sp->style->name, "Heading1")) {
 	    me->sp->style->alignment = HT_CENTER;
 	} else if (!strcmp(me->sp->style->name, "DivRight") ||
 		   !strcmp(me->sp->style->name, "HeadingRight")) {
 	    me->sp->style->alignment = HT_RIGHT;
-	} else  {
+	} else	{
 	    me->sp->style->alignment = HT_LEFT;
 	}
 	styles[HTML_PRE]->alignment = HT_LEFT;
@@ -7207,19 +7129,19 @@ PRIVATE void get_styles NOARGS
 
     styles[HTML_DLC] =		HTStyleNamed(styleSheet, "GlossaryCompact");
 	/* nested list styles */
-    styles[HTML_DLC1] =		HTStyleNamed(styleSheet, "GlossaryCompact1");
-    styles[HTML_DLC2] =		HTStyleNamed(styleSheet, "GlossaryCompact2");
-    styles[HTML_DLC3] =		HTStyleNamed(styleSheet, "GlossaryCompact3");
-    styles[HTML_DLC4] =		HTStyleNamed(styleSheet, "GlossaryCompact4");
-    styles[HTML_DLC5] =		HTStyleNamed(styleSheet, "GlossaryCompact5");
-    styles[HTML_DLC6] =		HTStyleNamed(styleSheet, "GlossaryCompact6");
+    styles[HTML_DLC1] = 	HTStyleNamed(styleSheet, "GlossaryCompact1");
+    styles[HTML_DLC2] = 	HTStyleNamed(styleSheet, "GlossaryCompact2");
+    styles[HTML_DLC3] = 	HTStyleNamed(styleSheet, "GlossaryCompact3");
+    styles[HTML_DLC4] = 	HTStyleNamed(styleSheet, "GlossaryCompact4");
+    styles[HTML_DLC5] = 	HTStyleNamed(styleSheet, "GlossaryCompact5");
+    styles[HTML_DLC6] = 	HTStyleNamed(styleSheet, "GlossaryCompact6");
 
     styles[HTML_ADDRESS] =	HTStyleNamed(styleSheet, "Address");
     styles[HTML_BANNER] =	HTStyleNamed(styleSheet, "Banner");
     styles[HTML_BLOCKQUOTE] =	HTStyleNamed(styleSheet, "Blockquote");
     styles[HTML_BQ] =		HTStyleNamed(styleSheet, "Bq");
     styles[HTML_FN] =		HTStyleNamed(styleSheet, "Footnote");
-    styles[HTML_NOTE] =		HTStyleNamed(styleSheet, "Note");
+    styles[HTML_NOTE] = 	HTStyleNamed(styleSheet, "Note");
     styles[HTML_PLAINTEXT] =
     styles[HTML_XMP] =		HTStyleNamed(styleSheet, "Example");
     styles[HTML_PRE] =		HTStyleNamed(styleSheet, "Preformatted");
@@ -7237,8 +7159,8 @@ PUBLIC CONST HTStructuredClass HTMLPresentation = /* As opposed to print etc */
 	"Lynx_HTML_Handler",
 	HTML_free,
 	HTML_abort,
-	HTML_put_character, 	HTML_put_string,  HTML_write,
-	HTML_start_element, 	HTML_end_element,
+	HTML_put_character,	HTML_put_string,  HTML_write,
+	HTML_start_element,	HTML_end_element,
 	HTML_put_entity
 };
 
@@ -7249,7 +7171,7 @@ PUBLIC CONST HTStructuredClass HTMLPresentation = /* As opposed to print etc */
 **	or plain text, or HTML.
 */
 PUBLIC HTStructured* HTML_new ARGS3(
-	HTParentAnchor *, 	anchor,
+	HTParentAnchor *,	anchor,
 	HTFormat,		format_out,
 	HTStream*,		stream)
 {
@@ -7257,18 +7179,18 @@ PUBLIC HTStructured* HTML_new ARGS3(
     HTStructured * me;
 
     if (format_out != WWW_PLAINTEXT && format_out != WWW_PRESENT) {
-        HTStream * intermediate = HTStreamStack(WWW_HTML, format_out,
+	HTStream * intermediate = HTStreamStack(WWW_HTML, format_out,
 						stream, anchor);
 	if (intermediate)
 	    return HTMLGenerator(intermediate);
-        fprintf(stderr, "\n** Internal error: can't parse HTML to %s\n",
-       		HTAtom_name(format_out));
+	fprintf(stderr, "\n** Internal error: can't parse HTML to %s\n",
+		HTAtom_name(format_out));
 #ifndef NOSIGHUP
-        (void) signal(SIGHUP, SIG_DFL);
+	(void) signal(SIGHUP, SIG_DFL);
 #endif /* NOSIGHUP */
-        (void) signal(SIGTERM, SIG_DFL);
+	(void) signal(SIGTERM, SIG_DFL);
 #ifndef VMS
-        (void) signal(SIGINT, SIG_DFL);
+	(void) signal(SIGINT, SIG_DFL);
 #endif /* !VMS */
 #ifdef SIGTSTP
 	if (no_suspend)
@@ -7279,12 +7201,12 @@ PUBLIC HTStructured* HTML_new ARGS3(
 
     me = (HTStructured*) calloc(sizeof(*me),1);
     if (me == NULL)
-        outofmem(__FILE__, "HTML_new");
+	outofmem(__FILE__, "HTML_new");
 
     if (!got_styles)
-        get_styles();
+	get_styles();
     else
-        default_style =	HTStyleNamed(styleSheet, "Normal");
+	default_style = HTStyleNamed(styleSheet, "Normal");
 
     me->isa = &HTMLPresentation;
     me->node_anchor = anchor;
@@ -7374,7 +7296,7 @@ PUBLIC HTStructured* HTML_new ARGS3(
     me->lastraw = -1;
 
     /*
-     *  Used for nested lists. - FM
+     *	Used for nested lists. - FM
      */
     me->List_Nesting_Level = -1; /* counter for list nesting level */
     LYZero_OL_Counter(me);	 /* Initializes OL_Counter[] and OL_Type[] */
@@ -7416,31 +7338,30 @@ PUBLIC HTStructured* HTML_new ARGS3(
 
 #ifdef NOTUSED_FOTEMODS
     /*
-    **  If the anchor already has stage info, make sure that it is
-    **  appropriate for the current display charset.  HTMIMEConvert()
-    **  does this for the http and https schemes, and HTCharsetFormat()
-    **  does it for the file and and ftp schemes, be we need to do it,
-    **  if necessary, for the gateway schemes. - FM
+    **	If the anchor already has stage info, make sure that it is
+    **	appropriate for the current display charset.  HTMIMEConvert()
+    **	does this for the http and https schemes, and HTCharsetFormat()
+    **	does it for the file and and ftp schemes, be we need to do it,
+    **	if necessary, for the gateway schemes. - FM
     */
     if (me->node_anchor->UCStages) {
 	if (HTAnchor_getUCLYhndl(me->node_anchor,
 				 UCT_STAGE_STRUCTURED) != current_char_set) {
 	    /*
-	    **  We are reloading due to a change in the display character
-	    **  set.  Free the stage info and let the stage info creation
-	    **  mechanisms create a new UCStages structure appropriate for
-	    **  the current display character set. - FM
+	    **	We are reloading due to a change in the display character
+	    **	set.  Free the stage info and let the stage info creation
+	    **	mechanisms create a new UCStages structure appropriate for
+	    **	the current display character set. - FM
 	    */
-
 	    FREE(anchor->UCStages);
 	} else if (HTAnchor_getUCLYhndl(me->node_anchor,
 					UCT_STAGE_MIME) == current_char_set) {
 	    /*
-	    **  The MIME stage is set to the current display character
-	    **  set.  If it is CJK, and HTCJK does not point to a CJK
-	    **  character set, assume we are reloading due to a raw
-	    **  mode toggle and reset the MIME and PARSER stages to
-	    **  an ISO Latin 1 default. - FM
+	    **	The MIME stage is set to the current display character
+	    **	set.  If it is CJK, and HTCJK does not point to a CJK
+	    **	character set, assume we are reloading due to a raw
+	    **	mode toggle and reset the MIME and PARSER stages to
+	    **	an ISO Latin 1 default. - FM
 	    */
 	    LYUCcharset *p_in = HTAnchor_getUCInfoStage(me->node_anchor,
 							UCT_STAGE_MIME);
@@ -7463,50 +7384,50 @@ PUBLIC HTStructured* HTML_new ARGS3(
 #endif /* NOTUSED_FOTEMODS */
 
     /*
-    **  Create a chartrans stage info structure for the anchor,
-    **  if it does not exist already (in which case the default
-    **  MIME stage info will be loaded as well), and load the
-    **  HTML stage info into me->UCI and me->UCLYhndl. - FM
+    **	Create a chartrans stage info structure for the anchor,
+    **	if it does not exist already (in which case the default
+    **	MIME stage info will be loaded as well), and load the
+    **	HTML stage info into me->UCI and me->UCLYhndl. - FM
     */
     LYGetChartransInfo(me);
     UCTransParams_clear(&me->T);
 
     /*
-    **  Load the existing or default input charset info
-    **  into the holding elements.  We'll believe what
-    **  is indicated for UCT_STAGE_PARSER. - FM
+    **	Load the existing or default input charset info
+    **	into the holding elements.  We'll believe what
+    **	is indicated for UCT_STAGE_PARSER. - FM
     */
     me->inUCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor,
-			 		  UCT_STAGE_PARSER);
+					  UCT_STAGE_PARSER);
     if (me->inUCLYhndl < 0) {
-    	me->inUCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor,
-			 		      UCT_STAGE_MIME);
+	me->inUCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor,
+					      UCT_STAGE_MIME);
 	me->inUCI = HTAnchor_getUCInfoStage(me->node_anchor,
-			 		    UCT_STAGE_MIME);
+					    UCT_STAGE_MIME);
     } else {
 	me->inUCI = HTAnchor_getUCInfoStage(me->node_anchor,
-			 		    UCT_STAGE_PARSER);
+					    UCT_STAGE_PARSER);
     }
 
     /*
-    **  Load the existing or default output charset info
-    **  into the holding elements, UCT_STAGE_STRUCTURED
-    **  should be the same as UCT_STAGE_TEXT at this point,
-    **  but we could check, perhaps. - FM
+    **	Load the existing or default output charset info
+    **	into the holding elements, UCT_STAGE_STRUCTURED
+    **	should be the same as UCT_STAGE_TEXT at this point,
+    **	but we could check, perhaps. - FM
     */
     me->outUCI = HTAnchor_getUCInfoStage(me->node_anchor,
-			 		 UCT_STAGE_STRUCTURED);
+					 UCT_STAGE_STRUCTURED);
     me->outUCLYhndl = HTAnchor_getUCLYhndl(me->node_anchor,
-			 		   UCT_STAGE_STRUCTURED);
+					   UCT_STAGE_STRUCTURED);
 #ifdef NOTUSED_FOTEMODS
     UCSetTransParams(&me->T,
-    		     me->inUCLYhndl, me->inUCI,
+		     me->inUCLYhndl, me->inUCI,
 		     me->outUCLYhndl, me->outUCI);
 #endif
 
     me->target = stream;
     if (stream)
-        me->targetClass = *stream->isa;			/* Copy pointers */
+	me->targetClass = *stream->isa; 		/* Copy pointers */
 
     return (HTStructured*) me;
 }
@@ -7623,15 +7544,15 @@ PUBLIC HTStream* HTMLPresent ARGS3(
 **	marking at such so that it is retried on reload.
 **
 ** On entry,
-**	sink 	is a stream to the output device if any
+**	sink	is a stream to the output device if any
 **	number	is the HTTP error number
-**	message	is the human readable message.
+**	message is the human readable message.
 **
 ** On exit,
-**	returns	a negative number to indicate lack of success in the load.
+**	returns a negative number to indicate lack of success in the load.
 */
 PUBLIC int HTLoadError ARGS3(
-	HTStream *, 	sink,
+	HTStream *,	sink,
 	int,		number,
 	CONST char *,	message)
 {
diff --git a/src/HTML.h b/src/HTML.h
index afee69f9..7507d3ea 100644
--- a/src/HTML.h
+++ b/src/HTML.h
@@ -215,6 +215,10 @@ struct _HTStream {
     /* .... */
 };
 
+extern  HTStyle *styles[HTML_ELEMENTS+31]; /* adding 24 nested list styles  */
+					   /* and 3 header alignment styles */
+					   /* and 3 div alignment styles    */
+
 /*
  *	Semi-Private functions. - FM
  */
@@ -222,6 +226,11 @@ extern void HTML_put_character PARAMS((HTStructured *me, char c));
 extern void HTML_put_string PARAMS((HTStructured *me, CONST char *s));
 extern void HTML_write PARAMS((HTStructured *me, CONST char *s, int l));
 extern int HTML_put_entity PARAMS((HTStructured *me, int entity_number));
+extern void actually_set_style PARAMS((HTStructured * me));
+
+/*	Style buffering avoids dummy paragraph begin/ends.
+*/
+#define UPDATE_STYLE if (me->style_change) { actually_set_style(me); }
 #endif /* Lynx_HTML_Handler */
 
 extern void strtolower PARAMS((char* i));
diff --git a/src/LYCharSets.c b/src/LYCharSets.c
index 6b0812d9..7d5d0635 100644
--- a/src/LYCharSets.c
+++ b/src/LYCharSets.c
@@ -420,6 +420,9 @@ PUBLIC LYUCcharset LYCharSet_UC[MAXCHARSETS]=
  *  Add the code of the the lowest character with the high bit set
  *  that can be directly displayed.
  *  The order of LYCharSets and LYlowest_eightbit MUST be the same.
+ *
+ *  (If charset have chartrans unicode table,
+ *  LYlowest_eightbit will be verified/modified anyway.)
  */
 PUBLIC int LYlowest_eightbit[MAXCHARSETS]={
 	160,	/* ISO Latin 1		*/
@@ -778,13 +781,21 @@ PUBLIC CONST char * HTMLGetEntityName ARGS1(
  *  Function to return the UCode_t (long int) value for entity names
  *  in the ISO_Latin1 and UC_entity_info extra_entities arrays.  It
  *  returns 0 if not found. - FM
+ *
+ *  Unicode-based extra_entities[] table now handles all the names from old
+ *  style entities[] too.  In the future we will try to redirect all calls to
+ *  both entities[] and extra_entities[] through HTMLGetEntityUCValue() only.
+ *  Also, we should not worry about control characters, they will pass through
+ *  Unicode anyway and should be processed *after* calling this function.
+ *  (see put_special_unicodes() in SGML.c).  - LP
  */
 PUBLIC UCode_t HTMLGetEntityUCValue ARGS1(
 	CONST char *,	name)
 {
     UCode_t value = 0;
-    int i, high, low, diff = 0;
-    CONST char ** entities = HTML_dtd.entity_names;
+    size_t i, high, low;
+    int diff = 0;
+/*  CONST char ** entities = HTML_dtd.entity_names;  */
     CONST UC_entity_info * extra_entities = HTML_dtd.extra_entity_info;
 
     /*
@@ -793,6 +804,12 @@ PUBLIC UCode_t HTMLGetEntityUCValue ARGS1(
     if (!(name && *name))
 	return(value);
 
+
+#ifdef NOTDEFINED
+/*
+**  extra_entities[] now handle all names from entities[], so disable latter.
+*/
+
     /*
      *	Handle names that have control characters
      *	or strings in ISO_Latin1[]. - FM
@@ -849,6 +866,11 @@ PUBLIC UCode_t HTMLGetEntityUCValue ARGS1(
     /*
      *	Not yet found, so try UC_entity_info extra_entities[]. - FM
      */
+#endif /* NOTDEFINED */
+
+    /*
+     *	Try UC_entity_info extra_entities[].
+     */
     for (low = 0, high = HTML_dtd.number_of_extra_entities;
 	 high > low;
 	 diff < 0 ? (low = i+1) : (high = i)) {
@@ -920,7 +942,7 @@ PUBLIC void HTMLUseCharacterSet ARGS1(int,i)
 
 /*
  *  Initializer, calls initialization function for the
- *  CHARTRANS handling if compiled in. - KW
+ *  CHARTRANS handling. - KW
  */
 PUBLIC int LYCharSetsDeclared NOPARAMS
 {
diff --git a/src/LYCharUtils.c b/src/LYCharUtils.c
index 47a0ece5..e830d9ea 100644
--- a/src/LYCharUtils.c
+++ b/src/LYCharUtils.c
@@ -833,6 +833,614 @@ PUBLIC void LYGetChartransInfo ARGS1(
 				      UCT_STAGE_STRUCTURED);
 }
 
+#if 0
+/*
+**  This function reallocates an allocated string and converts
+**  characters for the current display character set.  It assumes
+**  that invalid control characters have been dealt with by the
+**  SGML (or other initial) parser of the document input stream
+**  (i.e. are present only if elements or global flags have been
+**  set to allow them), and that otherwise this is a copy of the
+**  string with the charset of the input stream.  It handles Lynx
+**  special characters based on the 'me' structure's element values
+**  (the me->UsePlainSpace and me->HiddenValue elements, and its
+**  chartrans related elements), and calls to other functions which
+**  return structure element values.  HTChunk functions are used to
+**  keep memory allocations at a minimum. - FM
+*/
+PUBLIC void LYExpandString ARGS2(
+	HTStructured *,		me,
+	char **,		str)
+{
+    char *p = *str;
+    HTChunk *s;
+    BOOLEAN plain_space, hidden;
+    char c;
+    unsigned char c_unsign;
+    char saved_char_in = '\0';
+    BOOLEAN chk;
+    UCode_t code, uck;
+    char replace_buf [64];
+    char utf_buf[8], utf_count = 0;
+    char *utf_buf_p = utf_buf;
+    UCode_t utf_char = 0, value;
+    CONST char *name;
+    int i, j, high, low, diff = 0;
+
+    /*
+    **  Don't do anything if we have no structure
+    **  or string, or are in CJK mode. - FM
+    */
+    if (!me || !p || *p == '\0' ||
+        HTCJK != NOCJK)
+        return;
+
+    /*
+    **  Set "convenience copies" of me structure
+    **  elements. - FM
+    */
+    plain_space = me->UsePlainSpace;
+    hidden = me->HiddenValue;
+
+    /*
+    **  Check for special input charsets - FM
+    */
+    if (!strcmp(me->inUCI->MIMEname, "x-transparent")) {
+	/*
+	**  Conversions not intended. - FM
+	*/
+	return;
+    }
+    if (!strcmp(me->inUCI->MIMEname, "mnemonic") ||
+	!strcmp(me->inUCI->MIMEname, "mnemonic+ascii+0")) {
+	/*
+	**  All ASCII representations of Unicode characters,
+	**  and we have no reverse translation code for the
+	**  multibyte characters, so punt. - FM
+	*/
+	return;
+    }
+    if (me->inUCLYhndl < 0 || me->outUCLYhndl < 0) {
+	/*
+	**  The chartrans procedure failed, so we don't
+	**  do anything, and hope for the best. - FM
+	*/
+	if (TRACE) {
+	    fprintf(stderr,
+		    "LYExpandString: Bad in (%d) or out (%d) handle(s).\n",
+		    me->inUCLYhndl, me->outUCLYhndl);
+	}
+	return;
+    }
+
+    /*
+    **  Zero the UTF-8 multibytes buffer. - FM
+    */
+    utf_buf[0] = utf_buf[6] = utf_buf[7] = '\0';
+
+    /*
+    **  Set up an HTChunk for accumulating the expanded copy
+    **  of the string, so that allocations are done in 128
+    **  byte increments, only as required. - FM
+    */
+    s = HTChunkCreate(128);
+
+    /*
+    **  Check each character in the original string,
+    **  and add the characters or substitutions to
+    **  our clean copy. - FM
+    */
+    for (i = 0; p[i]; i++) {
+	/*
+	**  Make sure the character is handled as Unicode
+	**  whenever that's appropriate.  - FM
+	*/
+	c = p[i];
+	c_unsign = (unsigned char)c;
+	code = (UCode_t)c_unsign;
+	saved_char_in = '\0';
+	/*
+	**  Combine any UTF-8 multibytes into Unicode
+	**  to check for special characters. - FM
+	*/
+	if (me->T.decode_utf8) {
+	    /*
+	    **  Our input charset is UTF-8, so check
+	    **  for non-ASCII characters. - FM
+	    */
+	    if (c_unsign > 127) {
+		/*
+		**  We have an octet from a multibyte character. - FM
+		*/
+		if (utf_count > 0 && (c & 0xc0) == 0x80) {
+		    /*
+		    **  Adjust the UCode_t value, add the octet
+		    **  to the buffer, and decrement the byte
+		    **  count. - FM
+		    */
+		    utf_char = (utf_char << 6) | (c & 0x3f);
+		    utf_count--;
+		    *utf_buf_p = c;
+		    utf_buf_p++;
+		    if (utf_count == 0) {
+			/*
+			**  We have all of the bytes, so terminate
+			**  the buffer and set 'code' to the UCode_t
+			**  value. - FM
+			*/
+			*utf_buf_p = '\0';
+			code = utf_char;
+			/*
+			**  Set up the monobyte character
+			**  values or non-character flags
+			**  and fall through. - FM
+			*/
+			if (code > 0 && code < 256) {
+			    c = ((char)(code & 0xff));
+			    c_unsign = (unsigned char)c;
+			}
+		    } else {
+			/*
+			**  Get the next byte. - FM
+			*/
+			continue;
+		    }
+		} else {
+		    /*
+		    **  Start handling a new multibyte character. - FM
+		    */
+		    utf_buf[0] = c;
+		    utf_buf_p = &utf_buf[1];
+		    if ((c & 0xe0) == 0xc0) {
+			utf_count = 1;
+			utf_char = (c & 0x1f);
+		    } else if ((c & 0xf0) == 0xe0) {
+			utf_count = 2;
+			utf_char = (c & 0x0f);
+		    } else if ((c & 0xf8) == 0xf0) {
+			utf_count = 3;
+			utf_char = (c & 0x07);
+		    } else if ((c & 0xfc) == 0xf8) {
+			utf_count = 4;
+			utf_char = (c & 0x03);
+		    } else if ((c & 0xfe) == 0xfc) {
+			utf_count = 5;
+			utf_char = (c & 0x01);
+		    } else {
+			/*
+			**  We got garbage, even though it should
+			**  have been filtered out by the SGML or
+			**  input stream parser, so we'll ignore
+			**  it. - FM
+			*/
+			utf_count = 0;
+			utf_buf[0] = '\0';
+			utf_buf_p = utf_buf;
+		    }
+		    /*
+		    **  Get the next byte. - FM
+		    */
+		    continue;
+		}
+	    } else if (utf_count > 0) {
+		/*
+		**  Got an ASCII character when expecting
+		**  UTF-8 multibytes, so ignore the buffered
+		**  multibye characters and fall through with
+		**  the current ASCII character. - FM
+		*/
+		utf_count = 0;
+		utf_buf[0] = '\0';
+		utf_buf_p = utf_buf;
+		code = (UCode_t)c_unsign;
+	    } else {
+		/*
+		**  Got a valid ASCII character, so fall
+		**  through with it. - FM
+		*/
+		code = (UCode_t)c_unsign;
+	    }
+	}
+	/*
+	**  Convert characters from non-UTF-8 charsets
+	**  to Unicode (if appropriate). - FM
+	*/
+	if (!(me->T.decode_utf8 &&
+	      (unsigned char)p[i] > 127)) {
+#ifdef NOTDEFINED
+	    if (me->T.strip_raw_char_in)
+		saved_char_in = c;
+#endif /* NOTDEFINED */
+	    if (me->T.trans_to_uni &&
+		(code >= 127 ||
+		 (code < 32 && code != 0 &&
+		  me->T.trans_C0_to_uni))) {
+		/*
+		**  Convert the octet to Unicode. - FM
+		*/
+		code = (UCode_t)UCTransToUni(c, me->inUCLYhndl);
+		if (code > 0) {
+		    saved_char_in = c;
+		    if (code < 256) {
+			c = ((char)(code & 0xff));
+			c_unsign = (unsigned char)c;
+		    }
+		}
+	    } else if (code < 32 && code != 0 &&
+		       me->T.trans_C0_to_uni) {
+		/*
+		**  Quote from SGML.c:
+		**  	"This else if may be too ugly to keep. - KW"
+		*/
+		if (me->T.trans_from_uni &&
+		    (((code = UCTransToUni(c, me->inUCLYhndl)) >= 32) ||
+		     (me->T.transp &&
+		      (code = UCTransToUni(c, me->inUCLYhndl)) > 0))) {
+		    saved_char_in = c;
+		    if (code < 256) {
+			c = ((char)(code & 0xff));
+			c_unsign = (unsigned char)c;
+		    }
+		} else {
+		    uck = -1;
+		    if (me->T.transp) {
+			uck = UCTransCharStr(replace_buf, 60, c,
+					     me->inUCLYhndl,
+					     me->inUCLYhndl, NO);
+		    }
+		    if (!me->T.transp || uck < 0) {
+			uck = UCTransCharStr(replace_buf, 60, c,
+					     me->inUCLYhndl,
+					     me->outUCLYhndl, YES);
+		    }
+		    if (uck == 0) {
+			continue;
+		    } else if (uck < 0) {
+			utf_buf[0] = '\0';
+			code = (unsigned char)c;
+		    } else {
+			c = replace_buf[0];
+			if (c && replace_buf[1]) {
+			    HTChunkPuts(s, replace_buf);
+			    continue;
+			}
+		    }
+		    utf_buf[0] = '\0';
+		    code = (unsigned char)c;
+		} /*  Next line end of ugly stuff for C0. - KW */
+	    } else {
+		utf_buf[0] = '\0';
+		code = (unsigned char)c;
+	    }
+	}
+	/*
+	**  Ignore low ISO 646 7-bit control characters
+	**  if they sneeked through (should have been
+	**  filtered by the parser). - FM
+	*/
+	if (code < 32 &&
+	    c != 9 && c != 10 && c != 13) {
+	    continue;
+	}
+	/*
+	**  Ignore 127 if we don't have HTPassHighCtrlRaw
+	**  and it sneeked through (should have been
+	**  filtered by the parser). - FM
+	*/
+	if (c == 127 &&
+	    !(me->T.transp ||
+	      code >= LYlowest_eightbit[me->inUCLYhndl])) {
+	    continue;
+	}
+	/*
+	**  Ignore 8-bit control characters 128 - 159 if we don't
+	**  have HTPassHighCtrlRaw set and they sneeked through
+	**  (should have been filtered by the parser). - FM
+	*/
+	if (code > 127 && code < 160 &&
+	    !(me->T.transp ||
+	      code >= LYlowest_eightbit[me->inUCLYhndl])) {
+	    continue;
+	}
+	/*
+	**  For 160 (nbsp), substitute Lynx special character
+	**  (or a space if plain_space or hidden is set) if
+	**  HTPassHighCtrlRaw is not set. - FM
+	*/
+        if (code == 160) {
+	    if (!me->T.pass_160_173_raw) {
+		if (plain_space || hidden) {
+		    HTChunkPutc(s, ' ');
+		} else {
+		    HTChunkPutc(s, HT_NON_BREAK_SPACE);
+		}
+	    } else if (!me->T.output_utf8) {
+		HTChunkPutc(s, ((char)(code & 0xff)));
+	    } else if (me->T.decode_utf8 && *utf_buf) {
+		HTChunkPuts(s, utf_buf);
+		utf_buf[0] == '\0';
+		utf_buf_p = utf_buf;
+	    } else {
+		HTChunkPutUtf8Char(s, code);
+	    }
+	    continue;
+	}
+	/*
+	**  For 173 (shy), substitute Lynx special character
+	**  (or skip it if plain_space or hidden is set) if
+	**  HTPassHighCtrlRaw is not set. - FM
+	*/
+        if (code == 173) {
+	    if (!me->T.pass_160_173_raw) {
+		if (!(plain_space || hidden)) {
+		    HTChunkPutc(s, LY_SOFT_HYPHEN);
+		}
+	    } else if (!me->T.output_utf8) {
+		HTChunkPutc(s, ((char)(code & 0xff)));
+	    } else if (me->T.decode_utf8 && *utf_buf) {
+		HTChunkPuts(s, utf_buf);
+		utf_buf[0] == '\0';
+		utf_buf_p = utf_buf;
+	    } else {
+		HTChunkPutUtf8Char(s, code);
+	    }
+	    continue;
+	}
+	/*
+	**  For 8194 (ensp), 8195 (emsp), or 8201 (thinsp), use
+	**  an ASCII space (32) if plain_space or hidden is TRUE,
+	**  otherwise use the Lynx special character. - FM
+	*/
+	if (code == 8194 || code == 8195 || code == 8201) {
+	    if (plain_space || hidden) {
+		HTChunkPutc(s, ' ');
+	    } else {
+		HTChunkPutc(s, HT_EM_SPACE);
+	    }
+	    if (me->T.decode_utf8 && *utf_buf) {
+		utf_buf[0] == '\0';
+		utf_buf_p = utf_buf;
+	    }
+	    continue;
+	}
+	/*
+	**  For 8211 (ndash) or 8212 (mdash), use an ASCII dash. - FM
+	*/
+	if (code == 8211 || code == 8212) {
+	    HTChunkPutc(s, '-');
+	    if (me->T.decode_utf8 && *utf_buf) {
+		utf_buf[0] == '\0';
+		utf_buf_p = utf_buf;
+	    }
+	    continue;
+	}
+	/*
+	**  If we want the raw character, pass it now. - FM
+	*/
+	if (me->T.use_raw_char_in && saved_char_in) {
+	    HTChunkPutc(s, saved_char_in);
+	    continue;
+	}
+	/*
+	**  Seek a translation from the chartrans tables.
+	*/
+	if ((chk = (me->T.trans_from_uni && code >= 160)) &&
+	    (uck = UCTransUniChar(code, me->outUCLYhndl)) >= 32 &&
+	    uck < 256 &&
+	    (uck < 127 ||
+	     uck >= LYlowest_eightbit[me->outUCLYhndl])) {
+	    if (uck == 160 && me->outUCLYhndl == 0) {
+		/*
+		**  Would only happen if some other Unicode
+		**  is mapped to Latin-1 160.
+		*/
+		if (!(hidden ||
+		      me->T.pass_160_173_raw)) {
+		    if (plain_space) {
+			HTChunkPutc(s, ' ');
+		    } else {
+			HTChunkPutc(s, HT_NON_BREAK_SPACE);
+		    }
+		} else {
+		    HTChunkPutc(s, ((char)(uck & 0xff)));
+		}
+		continue;
+	    } else if (uck == 173 && me->outUCLYhndl == 0) {
+		/*
+		**  Would only happen if some other Unicode
+		**  is mapped to Latin-1 173.
+		*/
+		if (!(hidden ||
+		      me->T.pass_160_173_raw)) {
+		    if (!plain_space) {
+			HTChunkPutc(s, LY_SOFT_HYPHEN);
+		    }
+		} else {
+		    HTChunkPutc(s, ((char)(uck & 0xff)));
+		}
+		continue;
+	    }
+	    HTChunkPutc(s, ((char)(uck & 0xff)));
+	    continue;
+	} else if (chk &&
+		   (uck == -4 ||
+		    (me->T.repl_translated_C0 &&
+		     uck > 0 && uck < 32)) &&
+		   /*
+		   **  Not found; look for replacement string.
+		   */
+		   (uck = UCTransUniCharStr(replace_buf,
+					    60, code,
+					    me->outUCLYhndl,
+					    0) >= 0)) { 
+	    /*
+	    **  Got a replacement string.
+	    */
+	    HTChunkPuts(s, replace_buf);
+	    continue;
+    	}
+	/*
+	**  If we want raw UTF-8, output that now. - FM
+	*/
+	if (me->T.output_utf8 &&
+	    code > 127 && code <= 0x7fffffffL) {
+	    if (me->T.decode_utf8 && *utf_buf) {
+		HTChunkPuts(s, utf_buf);
+		utf_buf[0] == '\0';
+		utf_buf_p = utf_buf;
+	    } else {
+		HTChunkPutUtf8Char(s, code);
+	    }
+	    continue;
+	}
+	/*
+	**  If it's 8482 (trade), or is any other (> 160) 8-bit
+	**  chararcter and we have not set HTPassEightBitRaw
+	**  nor have the "ISO Latin 1" character set selected,
+	**  back translate for our character set. - FM
+	*/
+	if ((code == 8482) ||
+	    (code > 160 && code < 256 &&
+	     me->outUCLYhndl != 0 &&
+	     (!(HTPassEightBitRaw ||
+	        (me->T.do_8bitraw && !me->T.trans_from_uni))))) {
+	    if (code == 8482) {
+	        name = "trade";
+	    } else {
+		value = (code - 160);
+		name = HTMLGetEntityName(value);
+	    }
+	    for (low = 0, high = HTML_dtd.number_of_entities;
+		 high > low;
+		 diff < 0 ? (low = j+1) : (high = j)) {
+		/*
+		**  Binary search.
+		*/
+		j = (low + (high-low)/2);
+		diff = strcmp(HTML_dtd.entity_names[j], name);
+		if (diff == 0) {
+		    HTChunkPuts(s, LYCharSets[me->outUCLYhndl][j]);
+		    break;
+		}
+	    }
+	    if (diff == 0) {
+		continue;
+	    }
+	}
+	/*
+	**  If it's ASCII at this point, use it. - FM
+	*/
+	if (code < 127 && code > 0) {
+	    HTChunkPutc(s, ((char)(code & 0xff)));
+	    continue;
+	}
+	/*
+	**  At this point, if we should have translated, the
+	**  translation has failed.  We should have sent UTF-8
+	**  output to the parser already, but what the heck,
+	**  try again. - FM
+	*/
+	if (me->T.output_utf8 && *utf_buf) {
+	    HTChunkPuts(s, utf_buf);
+	    utf_buf[0] == '\0';
+	    utf_buf_p = utf_buf;
+	    continue;
+	}
+#ifdef NOTDEFINED
+	/*
+	**  Check for a strippable koi8-r 8-bit character. - FM
+	*/
+	if (me->T.strip_raw_char_in &&
+	    (unsigned char)saved_char_in >= 192 &&
+	    (unsigned char)saved_char_in < 255 &&
+	    saved_char_in) {
+	    /*
+	    **  KOI8 special: strip high bit, gives (somewhat) readable
+	    **  ASCII or KOI7 - it was constructed that way! - KW
+	    */
+	    HTChunkPutc(s, (saved_char_in & 0x7f));
+	    continue;
+	}
+#endif /* NOTDEFINED */
+	/*
+	**  Ignore 8204 (zwnj), 8205 (zwj)
+	**  8206 (lrm), and 8207 (rlm),
+	**  if we get to here. - FM
+	*/
+	if (code == 8204 || code == 8205 ||
+	    code == 8206 || code == 8207) {
+	    if (TRACE) {
+		fprintf(stderr,
+			"LYExpandString: Ignoring '%ld'.\n", code);
+	    }
+	    if (me->T.decode_utf8 && *utf_buf) {
+		utf_buf[0] == '\0';
+		utf_buf_p = utf_buf;
+	    }
+	    continue;
+	}
+	/*
+	**  If we don't actually want the character,
+	**  make it safe and output that now. - FM
+	*/
+	if ((c_unsign > 0 &&
+	     c_unsign < LYlowest_eightbit[me->outUCLYhndl]) ||
+	    (me->T.trans_from_uni && !HTPassEightBitRaw)) {
+	    /*
+	    **  If we do not have the "7-bit approximations" as our
+	    **  output character set (in which case we did it already)
+	    **  seek a translation for that.  Otherwise, or if the
+	    **  translation fails, use UHHH notation. - FM
+	    */
+	    if ((chk = (me->outUCLYhndl !=
+			UCGetLYhndl_byMIME("us-ascii"))) &&
+		(uck = UCTransUniChar(code,
+				      UCGetLYhndl_byMIME("us-ascii")))
+				      >= 32 && uck < 127) {
+		/*
+		**  Got an ASCII character (yippey). - FM
+		*/
+		c = ((char)(uck & 0xff));
+		HTChunkPutc(s, c);
+		continue;
+	    } else if ((uck == -4) &&
+		       (uck = UCTransUniCharStr(replace_buf,
+						60, code,
+						UCGetLYhndl_byMIME("us-ascii"),
+						0) >= 0)) {
+		/*
+		**  Got a repacement string (yippey). - FM
+		*/
+		HTChunkPuts(s, replace_buf);
+		continue;
+	    } else {
+		/*
+		**  Out of luck, so use the UHHH notation (ugh). - FM
+		*/
+		sprintf(replace_buf, "U%.2lX", code);
+		HTChunkPuts(s, replace_buf);
+		continue;
+	    }
+	}
+	/*
+	**  If we get to here and have a monobyte character,
+	**  pass it. - FM
+	*/
+	if (c_unsign > 0 && c_unsign < 256) {
+	    HTChunkPutc(s, c);
+	}
+    }
+
+    /*
+    **  Terminate the expanded string,
+    **  replace the original, and free
+    **  the chunk. - FM
+    */
+    HTChunkTerminate(s);
+    StrAllocCopy(*str, s->data);
+    HTChunkFree(s);
+}
+#endif
 
 /*
 ** Get UCS character code for one character from UTF-8 encoded string.
@@ -1042,7 +1650,7 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
     enum _state
 	{ S_text, S_esc, S_dollar, S_paren, S_nonascii_text, S_dollar_paren,
 	S_trans_byte, S_check_ent, S_ncr, S_check_uni, S_named, S_check_name,
-	S_check_name_trad, S_recover,
+	S_recover,
 	S_got_oututf8, S_got_outstring, S_put_urlstring,
 	S_got_outchar, S_put_urlchar, S_next_char, S_done} state = S_text;
     enum _parsing_what
@@ -1082,7 +1690,7 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 	do_ent = FALSE;
 
     /* Can't do, caller should figure out what to do... */
-    if (UCCanTranslateFromTo(cs_from, cs_to) == TQ_NO) {
+    if (!UCCanTranslateFromTo(cs_from, cs_to)) {
 	if (cs_to < 0)
 	    return NULL;
 	if (!do_ent && no_bytetrans)
@@ -1116,21 +1724,8 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
     **	Create a buffer string seven times the length of the original,
     **	so we have plenty of room for expansions. - FM
     */
-#ifdef OLDSTUFF
-    len = (strlen(p) * 7) + 1;
-    if (len < 16)
-	len = 16;
-    if ((Str = (char *)calloc(1, len)) == NULL) {
-	fprintf(stderr,
-		"LYUCFullyTranslateString_1: calloc(1, %lu) failed for '%s'\r\n",
-		(unsigned long)len, *str);
-	outofmem(__FILE__, "LYUCFullyTranslateString_1");
-    }
-    q = Str;
-#else
     len = strlen(p) + 16;
     q = p;
-#endif /* OLDSTUFF */
 
     qs = q;
 
@@ -1651,7 +2246,7 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 		    } else {
 			name = HTMLGetEntityName(code - 160);
 		    }
-		    state = S_check_name_trad;
+		    state = S_check_name;
 		    break;
 		}
 
@@ -1705,127 +2300,9 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 	    state = S_check_name;
 	    break;
 
-	case S_check_name_trad:
-	    /*
-	     *	Check for an entity name in the traditional (LYCharSets.c)
-	     *	table.
-	     */
-	    for (low = 0, high = HTML_dtd.number_of_entities;
-		 high > low;
-		 diff < 0 ? (low = i+1) : (high = i)) {
-		/*
-		**  Binary search.
-		*/
-		i = (low + (high-low)/2);
-		diff = strcmp(entities[i], name);
-		if (diff == 0) {
-		    strncpy(replace_buf,
-			    (cs_to >= 0 && LYCharSets[cs_to]) ?
-			    LYCharSets[cs_to][i] : LYCharSets[0][i],
-			    sizeof(replace_buf));
-		    replace_buf[sizeof(replace_buf) - 1] = '\0';
-		    /*
-		    **	Found the entity.  If the length
-		    **	of the value exceeds the length of
-		    **	replace_buf it is cut off.
-		    */
-		    state = S_got_outstring;
-		    break;
-		}
-	    }
-	    if (diff == 0) {
-		break;
-	    }
-	    /*
-	    **	Entity name lookup failed (diff != 0).
-	    **	Recover and continue.
-	    */
-	    state = S_recover;
-	    break;
-
 	case S_check_name:
 	    /*
-	     *	Check for a name that was really given as a named
-	     *	entity. - kw
-	     */
-	    if (hidden) {
-		/*
-		**  If it's hidden, use 160 for nbsp. - FM
-		*/
-		if (!strcmp("nbsp", name) ||
-		    (replace_buf[1] == '\0' &&
-		     replace_buf[0] == HT_NON_BREAK_SPACE)) {
-		    replace_buf[0] = 160;
-		    replace_buf[1] = '\0';
-		    state = S_got_outstring;
-		    break;
-		    /*
-		    **	If it's hidden, use 173 for shy. - FM
-		    */
-		} else if (!strcmp("shy", name) ||
-			   (replace_buf[1] == '\0' &&
-			    replace_buf[0] == LY_SOFT_HYPHEN)) {
-		    replace_buf[0] = 173;
-		    replace_buf[1] = '\0';
-		    state = S_got_outstring;
-		    break;
-		}
-		/*
-		**  Check whether we want a plain space for nbsp,
-		**  ensp, emsp or thinsp. - FM
-		*/
-	    } else if (plain_space) {
-		if (!strcmp("nbsp", name) ||
-		    !strcmp("emsp", name) ||
-		    !strcmp("ensp", name) ||
-		    !strcmp("thinsp", name) ||
-		    (replace_buf[1] == '\0' &&
-		     replace_buf[0] == HT_EM_SPACE)) {
-		    code = ' ';
-		    state = S_got_outchar;
-		    break;
-		    /*
-		    **	If plain_space is set, ignore shy. - FM
-		    */
-		} else if (!strcmp("shy", name) ||
-			   (replace_buf[1] == '\0' &&
-			    replace_buf[0] == LY_SOFT_HYPHEN)) {
-		    replace_buf[0] = '\0';
-		    state = S_got_outstring;
-		    break;
-		}
-	    }
-	    /*
-	    **	Not recognized specially, look up in extra entities table.
-	    */
-	    for (low = 0, high = HTML_dtd.number_of_extra_entities;
-		 high > low;
-		 diff < 0 ? (low = i+1) : (high = i)) {
-		/*
-		**  Binary search.
-		*/
-		i = (low + (high - low)/2);
-		diff = strcmp(extra_entities[i].name, p);
-		if (diff == 0) {
-		    /*
-		    **	Found the entity.
-		    */
-		    code = extra_entities[i].code;
-		    if (code <= 0x7fffffffL && code > 0) {
-			state = S_check_uni;
-		    } else {
-			state = S_recover;
-		    }
-		    break;
-		}
-	    }
-	    if (diff == 0)
-		break;
-
-	    /*
-	    **	Seek the Unicode value for the entity.
-	    **	This could possibly replace all the rest of
-	    **	`case S_check_name'. - kw
+	    **	Seek the Unicode value for the named entity.
 	    */
 	    if ((code = HTMLGetEntityUCValue(name)) > 0) {
 		state = S_check_uni;
@@ -1835,7 +2312,7 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 	    **	Didn't find the entity.
 	    **	Check the traditional tables.
 	    */
-	    state = S_check_name_trad;
+	    state = S_recover;
 	    break;
 
 				/* * * O U T P U T   S T A T E S * * */
@@ -1924,1214 +2401,6 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 	}
     }
 
-#if 0
-    while (*p) {
-	if ((HTCJK != NOCJK && !hidden) || stype != st_HTML) {
-	    /*
-	    **	Handle CJK escape sequences, based on patch
-	    **	from Takuya ASADA (asada@three-a.co.jp). - FM
-	    */
-	    switch(state) {
-		case S_text:
-		    if (*p == '\033') {
-			state = S_esc;
-			if (stype == st_URL) {
-			    *q++ = '%'; *q++ = '1'; *q++ = 'B';
-			    p++;
-			} else {
-			    *q++ = *p++;
-			}
-			continue;
-		    }
-		    break;
-
-		case S_esc:
-		    if (*p == '$') {
-			state = S_dollar;
-			*q++ = *p++;
-			continue;
-		    } else if (*p == '(') {
-			state = S_paren;
-			*q++ = *p++;
-			continue;
-		    } else {
-			state = S_text;
-		    }
-
-		case S_dollar:
-		    if (*p == '@' || *p == 'B' || *p == 'A') {
-			state = S_nonascii_text;
-			*q++ = *p++;
-			continue;
-		    } else if (*p == '(') {
-			state = S_dollar_paren;
-			*q++ = *p++;
-			continue;
-		    } else {
-			state = S_text;
-		    }
-		    break;
-
-		case S_dollar_paren:
-		    if (*p == 'C') {
-			state = S_nonascii_text;
-			*q++ = *p++;
-			continue;
-		    } else {
-			state = S_text;
-		    }
-		    break;
-
-		case S_paren:
-		    if (*p == 'B' || *p == 'J' || *p == 'T')  {
-			state = S_text;
-			*q++ = *p++;
-			continue;
-		    } else if (*p == 'I') {
-			state = S_nonascii_text;
-			*q++ = *p++;
-			continue;
-		    } else {
-			state = S_text;
-		    }
-		    break;
-
-		case S_nonascii_text:
-		    if (*p == '\033') {
-			state = S_esc;
-			if (stype == st_URL) {
-			    *q++ = '%'; *q++ = '1'; *q++ = 'B';
-			    p++;
-			    continue;
-			}
-		    }
-		    *q++ = *p++;
-		    continue;
-
-	    }
-	} else if (*p == '\033' &&
-		   !hidden) {
-	    /*
-	    **	CJK handling not on, and not a hidden INPUT,
-	    **	so block escape. - FM
-	    */
-	    p++;
-	    continue;
-	}
-
-	code = *p;
-	/*
-	**  Check for a numeric or named entity. - FM
-	*/
-	if (*p == '&') {
-	    BOOL isHex = FALSE;
-	    BOOL isDecimal = FALSE;
-	    p++;
-	    len = strlen(p);
-	    /*
-	    **	Check for a numeric entity. - FM
-	    */
-	    if (*p == '#' && len > 2 &&
-		TOLOWER((unsigned char)*(p+1)) == 'x' &&
-		(unsigned char)*(p+2) < 127 &&
-		isxdigit((unsigned char)*(p+2))) {
-		isHex = TRUE;
-	    } else if (*p == '#' && len > 2 &&
-		       (unsigned char)*(p+1) < 127 &&
-		       isdigit((unsigned char)*(p+1))) {
-		isDecimal = TRUE;
-	    }
-	    if (isHex || isDecimal) {
-		if (isHex) {
-		    p += 2;
-		    cp = p;
-		} else {
-		    cp = ++p;
-		}
-		while (*p && (unsigned char)*p < 127 &&
-		       (isHex ? isxdigit((unsigned char)*p) :
-				isdigit((unsigned char)*p))) {
-		    p++;
-		}
-		/*
-		**  Save the terminator and isolate the digit(s). - FM
-		*/
-		cpe = *p;
-		if (*p)
-		    *p++ = '\0';
-		/*
-		** Show the numeric entity if the value:
-		**  (1) Is greater than 255 and unhandled Unicode.
-		**  (2) Is less than 32, and not valid and we don't
-		**	have HTCJK set.
-		**  (3) Is 127 and we don't have HTPassHighCtrlRaw
-		**	or HTCJK set.
-		**  (4) Is 128 - 159 and we don't have HTPassHighCtrlNum set.
-		*/
-		if (((isHex ? sscanf(cp, "%lx", &lcode) :
-			      sscanf(cp, "%ld", &lcode)) != 1) ||
-		    lcode > 0x7fffffffL || lcode < 0 ||
-		    ((code =lcode) < 32 &&
-		     code != 9 && code != 10 && code != 13 &&
-		     HTCJK == NOCJK) ||
-		    (code == 127 &&
-		     !(HTPassHighCtrlRaw || HTCJK != NOCJK)) ||
-		    (code > 127 && code < 160 &&
-		     !HTPassHighCtrlNum)) {
-		    /*
-		    **	Illegal or not yet handled value.
-		    **	Recover the "&#" and continue
-		    **	from there. - FM
-		    */
-		    *q++ = '&';
-		    *q++ = '#';
-		    if (isHex)
-			*q++ = 'x';
-		    if (cpe != '\0')
-			*(p-1) = cpe;
-		    p = cp;
-		    continue;
-		}
-		/*
-		**  Convert the value as an unsigned char,
-		**  hex escaped if isURL is set and it's
-		**  8-bit, and then recycle the terminator
-		**  if it is not a semicolon. - FM
-		*/
-		if (code > 159 && stype == st_URL) {
-		    int e;
-		    if (LYCharSet_UC[cs_to].enc == UCT_ENC_UTF8) {
-			UCPutUtf8ToBuffer(replace_buf, code, YES);
-			esc = HTEscape(replace_buf, URL_XALPHAS);
-		    } else {
-			buf[0] = code;
-			esc = HTEscape(buf, URL_XALPHAS);
-		    }
-		    for (e = 0; esc[e]; e++)
-			*q++ = esc[e];
-		    FREE(esc);
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		}
-		    /*
-		    **	For 160 (nbsp), use that value if it's
-		    **	a hidden INPUT, otherwise use an ASCII
-		    **	space (32) if plain_space is TRUE,
-		    **	otherwise use the Lynx special character. - FM
-		    */
-		if (code == 160) {
-		    if (hidden) {
-			*q++ = 160;
-		    } else if (plain_space) {
-			*q++ = ' ';
-		    } else {
-			*q++ = HT_NON_BREAK_SPACE;
-		    }
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		}
-		    if ((code == 1) ||
-			(code > 129 && code < 156)) {
-			/*
-			**  Assume these are MicroSoft code points,
-			**  inflicted on us by FrontPage. - FM
-			*/
-			switch (code) {
-			    case 1:
-				/*
-				**  WHITE SMILING FACE
-				*/
-				code = 0x263a;
-				break;
-			    case 130:
-				/*
-				**  SINGLE LOW-9 QUOTATION MARK (sbquo)
-				*/
-				code = 0x201a;
-				break;
-			    case 132:
-				/*
-				**  DOUBLE LOW-9 QUOTATION MARK (bdquo)
-				*/
-				code = 0x201e;
-				break;
-			    case 133:
-				/*
-				**  HORIZONTAL ELLIPSIS (hellip)
-				*/
-				code = 0x2026;
-				break;
-			    case 134:
-				/*
-				**  DAGGER (dagger)
-				*/
-				code = 0x2020;
-				break;
-			    case 135:
-				/*
-				**  DOUBLE DAGGER (Dagger)
-				*/
-				code = 0x2021;
-				break;
-			    case 137:
-				/*
-				**  PER MILLE SIGN (permil)
-				*/
-				code = 0x2030;
-				break;
-			    case 139:
-				/*
-				**  SINGLE LEFT-POINTING ANGLE QUOTATION MARK
-				**  (lsaquo)
-				*/
-				code = 0x2039;
-				break;
-			    case 145:
-				/*
-				**  LEFT SINGLE QUOTATION MARK (lsquo)
-				*/
-				code = 0x2018;
-				break;
-			    case 146:
-				/*
-				**  RIGHT SINGLE QUOTATION MARK (rsquo)
-				*/
-				code = 0x2019;
-				break;
-			    case 147:
-				/*
-				**  LEFT DOUBLE QUOTATION MARK (ldquo)
-				*/
-				code = 0x201c;
-				break;
-			    case 148:
-				/*
-				**  RIGHT DOUBLE QUOTATION MARK (rdquo)
-				*/
-				code = 0x201d;
-				break;
-			    case 149:
-				/*
-				**  BULLET (bull)
-				*/
-				code = 0x2022;
-				break;
-			    case 150:
-				/*
-				**  EN DASH (ndash)
-				*/
-				code = 0x2013;
-				break;
-			    case 151:
-				/*
-				**  EM DASH (mdash)
-				*/
-				code = 0x2014;
-				break;
-			    case 152:
-				/*
-				**  SMALL TILDE (tilde)
-				*/
-				code = 0x02dc;
-				break;
-			    case 153:
-				/*
-				**  TRADE MARK SIGN (trade)
-				*/
-				code = 0x2122;
-				break;
-			    case 155:
-				/*
-				**  SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
-				**  (rsaquo)
-				*/
-				code = 0x203a;
-				break;
-			    default:
-				/*
-				**  Do not attempt a conversion
-				**  to valid Unicode values.
-				*/
-				break;
-			}
-		    }
-		/*
-		    **	For 173 (shy), use that value if it's
-		    **	a hidden INPUT, otherwise ignore it
-		    **	if plain_space is TRUE, otherwise use
-		    **	the Lynx special character. - FM
-		    */
-		if (code == 173) {
-		    if (hidden) {
-			*q++ = 173;
-		    } else if (plain_space) {
-			;
-		    } else {
-			*q++ = LY_SOFT_HYPHEN;
-		    }
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		}
-		    /*
-		    **	For 8211 (ndash or endash), and 8212
-		    **	(mdash or emdash), use an ASCII hyphen
-		    **	('-'). - FM
-		    */
-		    if (code == 8211 ||
-			code == 8212) {
-			HTChunkPutc(s, '-');
-			if (cpe != ';' && cpe != '\0') {
-			    p--;
-			    *p = cpe;
-			}
-			continue;
-		    }
-		/*
-		**  Seek a translation from the chartrans tables.
-		*/
-		if ((uck = UCTransUniChar(code,
-					  cs_to)) >= 32 &&
-		    uck < 256 &&
-		    (uck < 127 || uck >= lowest_8)) {
-		    if (uck == 160 && cs_to == 0) {
-			/*
-			**  Would only happen if some other unicode
-			**  is mapped to Latin-1 160.
-			    */
-			if (hidden) {
-			    *q++ = 160;
-			} else if (plain_space) {
-			    *q++ = ' ';
-			} else {
-			    *q++ = HT_NON_BREAK_SPACE;
-			}
-			if (cpe != ';' && cpe != '\0') {
-			    p--;
-			    *p = cpe;
-			}
-			continue;
-		    } else if (uck == 173 && cs_to == 0) {
-			/*
-			    **	Would only happen if some other unicode
-			    **	is mapped to Latin-1 173.
-			    */
-			if (hidden) {
-			    *q++ = 173;
-			} else if (plain_space) {
-			    ;
-			} else {
-			    *q++ = LY_SOFT_HYPHEN;
-			}
-			if (cpe != ';' && cpe != '\0') {
-			    p--;
-			    *p = cpe;
-			}
-			continue;
-		    } else {
-			*q++ = (char)uck;
-		    }
-		} else if ((uck == -4 ||
-			    (repl_translated_C0 &&
-			     uck > 0 && uck < 32)) &&
-			   /*
-			       **  Not found; look for replacement string.
-			       */
-			   (uck = UCTransUniCharStr(replace_buf,
-						    60, code,
-						    current_char_set,
-						    0) >= 0)) {
-		    for (i = 0; replace_buf[i]; i++) {
-			*q++ = replace_buf[i];
-		    }
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		} else if (output_utf8 &&
-			   code > 127 && code < 0x7fffffffL) {
-		    UCPutUtf8ToBuffer(q, code, NO);
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		/*
-		**  For 8482 (trade) use the character reference if it's
-		**  a hidden INPUT, otherwise use whatever the tables have
-		**  for &trade;. - FM & KW
-		*/
-		} else if (code == 8482 && hidden) {
-			*q++ = '&';
-			*q++ = '#';
-			if (isHex)
-			    *q++ = 'x';
-			if (cpe != '\0')
-			    *(p-1) = cpe;
-			p = cp;
-			continue;
-		/*
-		**  For 8194 (ensp), 8195 (emsp), or 8201 (thinsp),
-		**  use the character reference if it's a hidden INPUT,
-		**  otherwise use an ASCII space (32) if plain_space is
-		**  TRUE, otherwise use the Lynx special character. - FM
-		*/
-		} else if (code == 8194 || code == 8195 || code == 8201) {
-		    if (hidden) {
-			*q++ = '&';
-			*q++ = '#';
-			if (isHex)
-			    *q++ = 'x';
-			if (cpe != '\0')
-			    *(p-1) = cpe;
-			p = cp;
-			continue;
-		    } else if (plain_space) {
-			*q++ = ' ';
-		    } else {
-			*q++ = HT_EM_SPACE;
-		    }
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		    /*
-		    **	For 8211 (ndash) or 8212 (mdash), use the character
-		    **	reference if it's a hidden INPUT, otherwise use an
-		    **	ASCII dash. - FM
-		    */
-		} else if (code == 8211 || code == 8212) {
-		    if (hidden) {
-			*q++ = '&';
-			*q++ = '#';
-			if (isHex)
-			    *q++ = 'x';
-			if (cpe != '\0')
-			    *(p-1) = cpe;
-			p = cp;
-			continue;
-		    } else {
-			*q++ = '-';
-		    }
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		    /*
-		    **	Ignore (8204) zwnj, if we get to here. - FM
-		    */
-		} else if (code == 8204) {
-			if (TRACE) {
-			    fprintf(stderr,
-				    "LYUnEscapeEntities: Ignoring '%s%s;'.\n",
-				    (isHex ? "&#x" : "&#"),
-				    cp);
-			}
-			if (cpe != ';' && cpe != '\0') {
-			    p--;
-			    *p = cpe;
-			}
-			continue;
-		    } else
-		    /*
-		    **	Ignore 8205 (zwj),
-		    **	8206 (lrm), and 8207 (rln), if we get to here. - FM
-		    */
-		    if (code == 8205 ||
-			code == 8206 ||
-			code == 8207) {
-			if (TRACE) {
-			    fprintf(stderr,
-				    "LYUnEscapeEntities: Ignoring '%s%s'.\n",
-				    (isHex ? "&#x" : "&#"),
-				    cp);
-			}
-			if (cpe != ';' && cpe != '\0') {
-			    p--;
-			    *p = cpe;
-			}
-			continue;
-		    /*
-		    **	Show the numeric entity if the value:
-		    **	(1) Is greater than 255 and unhandled Unicode.
-		    */
-		} else if (code > 255 && code != 8482) {
-		    /*
-			**  Illegal or not yet handled value.
-			**  Recover the "&#" and continue
-			**  from there. - FM
-			*/
-		    *q++ = '&';
-		    *q++ = '#';
-		    if (isHex)
-			*q++ = 'x';
-		    if (cpe != '\0')
-			*(p-1) = cpe;
-		    p = cp;
-		    continue;
-		/*
-		**  If it's ASCII, or is 8-bit but HTPassEightBitNum
-		**  is set or the character set is "ISO Latin 1",
-		**  use it's value. - FM
-		*/
-		} else if (code < 161 ||
-			   (code < 256 &&
-			    (HTPassEightBitNum ||
-			     !strncmp(LYchar_set_names[current_char_set],
-				      "ISO Latin 1", 11)))) {
-		    /*
-		    **	No conversion needed.
-		    */
-		    *q++ = (unsigned char)code;
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		    /*
-		    **	If we get to here, convert and handle
-		    **	the character as a named entity. - FM
-		    */
-		} else {
-		    if (code == 8482) {
-			/*
-			**  Trade mark sign falls through to here. - KW
-			*/
-			name = "trade";
-		    } else {
-			code -= 160;
-			name = HTMLGetEntityName(code);
-		    }
-		    for (low = 0, high = HTML_dtd.number_of_entities;
-			 high > low;
-			 diff < 0 ? (low = i+1) : (high = i)) {
-			/*
-			**  Binary search.
-			*/
-			i = (low + (high-low)/2);
-			diff = strcmp(entities[i], name);
-			if (diff == 0) {
-			    /*
-			    **	Found the entity.
-			    */
-			    int j;
-			    for (j = 0; p_entity_values[i][j]; j++)
-				*q++ = (unsigned char)(p_entity_values[i][j]);
-			    break;
-			}
-		    }
-			/*
-			**  No point in repeating for extra entities. - kw
-			*/
-		    if (diff != 0) {
-			/*
-			**  Didn't find the entity.
-			**  Recover the "&#" and continue
-			**  from there. - FM
-			*/
-			*q++ = '&';
-			*q++ = '#';
-			if (isHex)
-			    *q++ = 'x';
-			if (cpe != '\0')
-			    *(p-1) = cpe;
-			p = cp;
-			continue;
-		    }
-		    /*
-		    **	Recycle the terminator if it isn't the
-		    **	standard ';' for HTML. - FM
-		    */
-		    if (cpe != ';' && cpe != '\0') {
-			p--;
-			*p = cpe;
-		    }
-		    continue;
-		}
-
-	    /*
-	    **	Check for a named entity. - FM
-	    */
-	    } else if ((unsigned char)*p < 127 &&
-		       isalnum((unsigned char)*p)) {
-		cp = p;
-		while (*cp && (unsigned char)*cp < 127 &&
-		       isalnum((unsigned char)*cp))
-		    cp++;
-		cpe = *cp;
-		*cp = '\0';
-
-		/*
-		**  For 160 (nbsp), use an ASCII space (32) if
-		**  plain_space or hidden is TRUE, otherwise use
-		**  the Lynx special character. - FM
-		*/
-		if (!strcmp(p, "nbsp")) {
-		    if (hidden || plain_space) {
-			HTChunkPutc(s, ' ');
-		    } else {
-			HTChunkPutc(s, HT_NON_BREAK_SPACE);
-		    }
-		    *cp = cpe;
-		    if (*cp != ';')
-			p = cp;
-		    else
-			p = (cp+1);
-		    continue;
-		}
-		/*
-		**  For 173 (shy), skip it if plain_space or hidden is
-		**  TRUE, otherwise use the Lynx special character. - FM
-		*/
-		if (!strcmp(p, "shy")) {
-		    if (!(plain_space || hidden)) {
-			HTChunkPutc(s, LY_SOFT_HYPHEN);
-		    }
-		    *cp = cpe;
-		    if (*cp != ';')
-			p = cp;
-		    else
-			p = (cp+1);
-		    continue;
-		}
-		/*
-		**  For 8194 (ensp), 8195 (emsp), and 8201
-		**  (thinsp), use an ASCII space (32) if
-		**  hidden or plain_space is TRUE, otherwise
-		**  use the Lynx special character. - FM
-		*/
-		if (!strcmp(p, "ensp") || !strcmp(p, "emsp") ||
-		    !strcmp(p, "thinsp")) {
-		    if (hidden || plain_space) {
-			HTChunkPutc(s, ' ');
-		    } else {
-			HTChunkPutc(s, HT_EM_SPACE);
-		    }
-		    *cp = cpe;
-		    if (*cp != ';')
-			p = cp;
-		    else
-			p = (cp+1);
-		    continue;
-		}
-		/*
-		**  For 8211 (ndash or endash), and 8212
-		**  (mdash or emdash), use an ASCII space
-		**  (32). - FM
-		*/
-		if (!strcmp(p, "ndash") ||
-		    !strcmp(p, "endash") ||
-		    !strcmp(p, "mdash") ||
-		    !strcmp(p, "emdash")) {
-		    HTChunkPutc(s, '-');
-		    *cp = cpe;
-		    if (*cp != ';')
-			p = cp;
-		    else
-			p = (cp+1);
-		    continue;
-		}
-		for (low = 0, high = HTML_dtd.number_of_entities;
-		     high > low ;
-		     diff < 0 ? (low = i+1) : (high = i)) {
-		    /*
-		    **	Binary search.
-		    */
-		    i = (low + (high-low)/2);
-		    diff = strcmp(entities[i], p);
-		    if (diff == 0) {
-			/*
-			**  Found the entity.  Assume that the length
-			**  of the value does not exceed the length of
-			**  the raw entity, so that the overall string
-			**  does not need to grow.  Make sure this stays
-			**  true in the LYCharSets arrays. - FM
-			*/
-			int j;
-			/*
-			**  Found the entity. Convert it to
-			**  an ISO-8859-1 character, or our
-			**  substitute for any non-ISO-8859-1
-			**  character, hex escaped if isURL
-			**  is set and it's 8-bit. - FM
-			*/
-			if (stype != st_HTML) {
-			    int e;
-			    buf[0] = HTMLGetLatinOneValue(i);
-			    if (buf[0] == '\0') {
-				/*
-				**  The entity does not have an 8859-1
-				**  representation of exactly one char length.
-				**  Try to deal with it anyway - either HTEscape
-				**  the whole mess, or pass through raw.  So
-				**  make sure the ISO_Latin1 table, which is the
-				**  first table in LYCharSets, has reasonable
-				**  substitution strings! (if it really must
-				**  have any longer than one char) - KW
-				*/
-				if (!LYCharSets[0][i][0]) {
-				    /*
-				    **	Totally empty, skip. - KW
-				    */
-				    ; /* do nothing */
-				} else if (stype == st_URL) {
-				    /*
-				    **	All will be HTEscape'd. - KW
-				    */
-				    esc = HTEscape(LYCharSets[0][i], URL_XALPHAS);
-				    for (e = 0; esc[e]; e++)
-					*q++ = esc[e];
-				    FREE(esc);
-				} else {
-				    /*
-				    **	Nothing will be HTEscape'd. - KW
-				    */
-				    for (e = 0; LYCharSets[0][i][e]; e++) {
-					*q++ =
-					    (unsigned char)(LYCharSets[0][i][e]);
-				    }
-				}
-			    } else if ((unsigned char)buf[0] > 159 &&
-				       stype == st_URL) {
-				if (LYCharSet_UC[cs_to].enc == UCT_ENC_UTF8) {
-				    UCPutUtf8ToBuffer(replace_buf, code, YES);
-				    esc = HTEscape(replace_buf, URL_XALPHAS);
-				} else {
-				    buf[0] = code;
-				    esc = HTEscape(buf, URL_XALPHAS);
-				}
-				for (e = 0; esc[e]; e++)
-				    *q++ = esc[e];
-				FREE(esc);
-			    } else {
-				*q++ = buf[0];
-			    }
-			/*
-			**  If it's hidden, use 160 for nbsp. - FM
-			*/
-			} else if (hidden &&
-			    !strcmp("nbsp", entities[i])) {
-			    *q++ = 160;
-			/*
-			**  If it's hidden, use 173 for shy. - FM
-			*/
-			} else if (hidden &&
-				   !strcmp("shy", entities[i])) {
-			    *q++ = 173;
-			/*
-			**  Check whether we want a plain space for nbsp,
-			**  ensp, emsp or thinsp. - FM
-			*/
-			} else if (plain_space &&
-				   (!strcmp("nbsp", entities[i]) ||
-				    !strcmp("emsp", entities[i]) ||
-				    !strcmp("ensp", entities[i]) ||
-				    !strcmp("thinsp", entities[i]))) {
-			    *q++ = ' ';
-			/*
-			**  If plain_space is set, ignore shy. - FM
-			*/
-			} else if (plain_space &&
-				   !strcmp("shy", entities[i])) {
-			    ;
-			/*
-			**  If we haven't used something else, use the
-			**  the translated value or string. - FM
-			*/
-			} else {
-			    for (j = 0; p_entity_values[i][j]; j++) {
-				*q++ = (unsigned char)(p_entity_values[i][j]);
-			    }
-			}
-			/*
-			**  Recycle the terminator if it isn't the
-			**  standard ';' for HTML. - FM
-			*/
-			*cp = cpe;
-			if (*cp != ';')
-			    p = cp;
-			else
-			    p = (cp+1);
-			break;
-		    }
-		}
-		if (diff != 0) {
-		    /*
-		    **	Not found, repeat for extra entities. - FM
-		    */
-		    for (low = 0, high = HTML_dtd.number_of_extra_entities;
-			 high > low;
-			 diff < 0 ? (low = i+1) : (high = i)) {
-			/*
-			**  Binary search.
-			*/
-			i = (low + (high - low)/2);
-			diff = strcmp(extra_entities[i].name, p);
-			if (diff == 0) {
-			    /*
-			    **	Found the entity.
-			    */
-			    code = extra_entities[i].code;
-			    if ((stype == st_URL && code > 127) ||
-				(stype == st_other &&
-				 (code > 255 ||
-				  LYCharSet_UC[cs_to].enc == UCT_ENC_UTF8))) {
-				int e;
-				if (stype == st_URL) {
-				    if (LYCharSet_UC[cs_to].enc == UCT_ENC_UTF8 ||
-					code > 255) {
-					UCPutUtf8ToBuffer(replace_buf, code, YES);
-					esc = HTEscape(replace_buf, URL_XALPHAS);
-				    } else {
-					buf[0] = code;
-					esc = HTEscape(buf, URL_XALPHAS);
-				    }
-				    for (e = 0; esc[e]; e++)
-					*q++ = esc[e];
-				    FREE(esc);
-				} else if (LYCharSet_UC[cs_to].enc == UCT_ENC_UTF8 ||
-					   code > 255) {
-				    UCPutUtf8ToBuffer(q, code, NO);
-				} else {
-				    *q++ = buf[0];
-				}
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-				/*
-				**  If it's hidden, use 160 for nbsp. - FM
-				*/
-			    }
-			    if (code == 160) {
-				/*
-				**  nbsp.
-				*/
-				if (hidden) {
-				    *q++ = 160;
-				} else if (plain_space) {
-				    *q++ = ' ';
-				} else {
-				    *q++ = HT_NON_BREAK_SPACE;
-				}
-				/*
-				**  Recycle the terminator if it isn't the
-				**  standard ';' for HTML. - FM
-				*/
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-			    } else if (code == 173) {
-				/*
-				**  shy.
-				*/
-				if (hidden) {
-				    *q++ = 173;
-				} else if (plain_space) {
-				    ;
-				} else {
-				    *q++ = LY_SOFT_HYPHEN;
-				}
-				/*
-				**  Recycle the terminator if it isn't the
-				**  standard ';' for HTML. - FM
-				*/
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-			    } else if (code == 8194 ||
-				       code == 8195 ||
-				       code == 8201) {
-				/*
-				**  ensp, emsp or thinsp.
-				*/
-				if (hidden) {
-				    *q++ = '&';
-				    *cp = cpe;
-				    break;
-				} else if (plain_space) {
-				    *q++ = ' ';
-				} else {
-				    *q++ = HT_EM_SPACE;
-				}
-				/*
-				**  Recycle the terminator if it isn't the
-				**  standard ';' for HTML. - FM
-				*/
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-			    } else if (code == 8211 ||
-				       code == 8212) {
-				/*
-				**  ndash or mdash.
-				*/
-				if (hidden) {
-				    *q++ = '&';
-				    *cp = cpe;
-				    break;
-				} else {
-				    *q++ = '-';
-				}
-				/*
-				**  Recycle the terminator if it isn't the
-				**  standard ';' for HTML. - FM
-				*/
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-			    } else if (output_utf8 &&
-				       code > 127 &&
-				       code < 0x7fffffffL) {
-				UCPutUtf8ToBuffer(q, code, NO);
-				/*
-				**  Recycle the terminator if it isn't the
-				**  standard ';' for HTML. - FM
-				*/
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-			    }
-		    if ((chk && uck == -4) &&
-			(uck = UCTransUniCharStr(replace_buf,
-						 60, code,
-					      UCGetLYhndl_byMIME("us-ascii"),
-						 0) >= 0)) {
-			/*
-			**  Got a replacement string (yippey). - FM
-			*/
-			HTChunkPuts(s, replace_buf);
-			*cp = cpe;
-			if (*cp != ';')
-			    p = cp;
-			else
-			    p = (cp+1);
-			continue;
-		    }
-		    /*
-		    **	Ignore (8204) zwnj, if we get to here. - FM
-		    */
-		    if (!strcmp(p, "zwnj")) {
-			if (TRACE) {
-			    fprintf(stderr,
-				    "LYUnEscapeEntities: Ignoring '%s'.\n",
-				    p);
-			}
-			*cp = cpe;
-			if (*cp != ';')
-			    p = cp;
-			else
-			    p = (cp+1);
-			continue;
-		    }
-		    /*
-		    **	Ignore 8205 (zwj),
-		    **	8206 (lrm), and 8207 (rln), if we get to here. - FM
-		    */
-		    if (!strcmp(p, "zwj") ||
-			!strcmp(p, "lrm") ||
-			!strcmp(p, "rlm")) {
-			if (TRACE) {
-			    fprintf(stderr,
-				    "LYUnEscapeEntities: Ignoring '%s'.\n",
-				    p);
-			}
-			*cp = cpe;
-			if (*cp != ';')
-			    p = cp;
-			else
-			    p = (cp+1);
-			continue;
-		    }
-			    /*
-			    **	Seek a translation from the chartrans tables.
-			    */
-			    if (((uck = UCTransUniChar(code,
-						current_char_set)) >= 32 ||
-				 uck == 9 || uck == 10 || uck == 13) &&
-				 uck < 256 &&
-				 (uck < 127 ||
-				  uck >= lowest_8)) {
-				if (uck == 160 && current_char_set == 0) {
-				    /*
-				    **	Would only happen if some other unicode
-				    **	is mapped to Latin-1 160.
-				    */
-				    if (hidden) {
-					*q++ = 160;
-				    } else if (plain_space) {
-					*q++ = ' ';
-				    } else {
-					*q++ = HT_NON_BREAK_SPACE;
-				    }
-				    /*
-				    **	Recycle the terminator if it isn't the
-				    **	standard ';' for HTML. - FM
-				    */
-				    *cp = cpe;
-				    if (*cp != ';')
-					p = cp;
-				    else
-					p = (cp+1);
-				    break;
-				} else if (uck == 173 &&
-					   current_char_set == 0) {
-				    /*
-				    **	Would only happen if some other unicode
-				    **	is mapped to Latin-1 173.
-				    */
-				    if (hidden) {
-					*q++ = 173;
-				    } else if (plain_space) {
-					;
-				    } else {
-					*q++ = LY_SOFT_HYPHEN;
-				    }
-				    /*
-				    **	Recycle the terminator if it isn't the
-				    **	standard ';' for HTML. - FM
-				    */
-				    *cp = cpe;
-				    if (*cp != ';')
-					p = cp;
-				    else
-					p = (cp+1);
-				    break;
-				} else if (!hidden && uck == 10 &&
-					   q != Str && *(q-1) == 13) {
-				    /*
-				    **	If this is not a hidden string, and we
-				    **	have an encoded encoded LF (&#10) of a
-				    **	CRLF pair, drop the CR. - kw
-				    */
-				    *(q-1) = (char)uck;
-				} else {
-				    *q++ = (char)uck;
-				}
-				/*
-				**  Recycle the terminator if it isn't the
-				**  standard ';' for HTML. - FM
-				*/
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-			    } else if ((uck == -4 ||
-					(repl_translated_C0 &&
-					 uck > 0 && uck < 32)) &&
-				       /*
-				       **  Not found.  Look for
-				       **  replacement string.
-				       */
-				       (uck =
-					    UCTransUniCharStr(replace_buf,
-							      60,
-							      code,
-							    current_char_set,
-							       0) >= 0)) {
-				for (i = 0; replace_buf[i]; i++) {
-				    *q++ = replace_buf[i];
-				}
-				/*
-				**  Recycle the terminator if it isn't the
-				**  standard ';' for HTML. - FM
-				*/
-				*cp = cpe;
-				if (*cp != ';')
-				    p = cp;
-				else
-				    p = (cp+1);
-				break;
-			    }
-			    *cp = cpe;
-			    *q++ = '&';
-			    break;
-			}
-		    }
-		}
-		*cp = cpe;
-		if (diff != 0) {
-		    /*
-		    **	Entity not found.  Add the '&' and
-		    **	continue processing from there. - FM
-		    */
-		    *q++ = '&';
-		}
-		continue;
-	    /*
-	    **	If we get to here, it's a raw ampersand. - FM
-	    */
-	    } else {
-		*q++ = '&';
-		continue;
-	    }
-	/*
-	**  Not an entity.  Check whether we want nbsp, ensp,
-	**  emsp (if translated elsewhere) or 160 converted to
-	**  a plain space. - FM
-	*/
-	} else {
-	    if ((plain_space) &&
-		(*p == HT_NON_BREAK_SPACE || *p == HT_EM_SPACE ||
-		 (((unsigned char)*p) == 160 &&
-		  !(hidden ||
-		    HTPassHighCtrlRaw || HTPassHighCtrlNum ||
-		    HTCJK != NOCJK)))) {
-		*q++ = ' ';
-		p++;
-	    } else if (stype == st_URL &&
-		       (code >= 127 ||
-			(code < 32 && (code != 9 && code != 10)))) {
-		*q++ = '%';
-		*q++ = hex[(code >> 4) & 15];
-		*q++ = hex[(code & 15)];
-		p++;
-		/*
-		**  If it's hidden, use 160 for nbsp. - FM
-		*/
-	    } else if (!hidden && *p == 10 && q != Str && *(q-1) == 13) {
-		/*
-		**  If this is not a hidden string, and the current char is
-		**  the LF ('\n') of a CRLF pair, drop the CR ('\r'). - KW
-		*/
-		*(q-1) = *p++;
-	    } else {
-		*q++ = *p++;
-	    }
-	}
-    }
-#endif /* 0 */
-
     *q = '\0';
     if (chunk) {
 	HTChunkPutb(CHUNK, qs, q-qs + 1); /* also terminates */
@@ -3153,243 +2422,6 @@ PRIVATE char ** LYUCFullyTranslateString_1 ARGS9(
 #undef REPLACE_CHAR
 #undef REPLACE_STRING
 
-#ifdef OLDSTUFF
-
-/*
-**  This is a generalized version of what was previously LYExpandString.
-**
-**  This function translates a string from charset
-**  cs_from to charset cs_to, reallocating it if necessary.
-**
-**  If use_lynx_specials is YES, translate 160 and 173
-**  (U+00A0 and U+00AD) to HT_NON_BREAK_SPACE and
-**  LY_SOFT_HYPHEN, respectively (unless input and output
-**  charset are both iso-8859-1, for compatibility with
-**  usage in HTML.c).
-**
-**  Returns YES if string translated or translation
-**		unnecessary,
-**	    NO otherwise.
-**
-*/
-#define REPLACE_STRING(s) \
-		p[i] = '\0'; \
-		StrAllocCat(*str, q); \
-		StrAllocCat(*str, s); \
-		q = (puni > p+i ? puni+1 : &p[i+1])
-
-#define REPLACE_CHAR(c) if (puni > &p[i]) { \
-		p[i] = c; \
-		p[i+1] = '\0'; \
-		StrAllocCat(*str, q); \
-		q = puni + 1; \
-	    } else \
-		p[i] = c
-
-/*
- *  Back: try 'backward' translation
- *  PlainText: only used with Back (?)
- */
-PRIVATE BOOL LYUCTranslateString ARGS7(
-	char **, str,
-	int,	cs_from,
-	int,	cs_to,
-	BOOL,	use_lynx_specials,
-	BOOLEAN,	PlainText,
-	BOOL,	Back,
-	CharUtil_st,	stype)	/* stype unused */
-{
-    char *p = *str;
-    char *q = *str;
-    CONST char *name;
-    char replace_buf[21];
-    UCode_t unsign_c, uck;
-    UCTransParams T;
-    BOOL from_is_utf8, done;
-    char * puni;
-    int i, j, value, high, low, diff = 0;
-
-    /*
-    **	Don't do anything if we have no string,
-    **	or if original AND target character sets
-    **	are both iso-8859-1,
-    **	or if we are in CJK mode.
-    */
-    if (!p || *p == '\0' ||
-	(cs_to == 0 && cs_from == cs_to) ||
-	HTCJK != NOCJK)
-	return YES;
-
-    /* No need to translate or examine the string any further */
-    else if (!use_lynx_specials && !Back &&
-	     UCNeedNotTranslate(cs_from, cs_to))
-	return YES;
-
-    /* Can't do, caller should figure out what to do... */
-    else if (UCCanTranslateFromTo(cs_from, cs_to) == TQ_NO)
-	return NO;
-    /*
-    **	Start a clean copy of the string, without
-    **	invalidating our pointer to the original. - FM
-    */
-    *str = NULL;
-    StrAllocCopy(*str, "");
-
-    UCTransParams_clear(&T);
-    UCSetTransParams(&T, cs_from, &LYCharSet_UC[cs_from],
-		     cs_to, &LYCharSet_UC[cs_to]);
-    from_is_utf8 = (LYCharSet_UC[cs_from].enc == UCT_ENC_UTF8);
-    puni = p;
-    /*
-    **	Check each character in the original string,
-    **	and add the characters or substitutions to
-    **	our clean copy. - FM
-    */
-    for (i = 0; p[i]; i++) {
-	unsign_c = (unsigned char)p[i];
-	done = NO;
-	if (Back) {
-	    int rev_c;
-	    if (p[i] == HT_NON_BREAK_SPACE ||
-		p[i] == HT_EM_SPACE) {
-		if (PlainText) {
-		    unsign_c = p[i] = ' ';
-		    done = YES;
-		} else {
-		    p[i] = 160;
-		    unsign_c = 160;
-		    if (LYCharSet_UC[cs_to].enc == UCT_ENC_8859 ||
-			(LYCharSet_UC[cs_to].like8859 & UCT_R_8859SPECL)) {
-			done = YES;
-		    }
-		}
-	    } else if (p[i] == LY_SOFT_HYPHEN) {
-		p[i] = 173;
-		unsign_c = 173;
-		if (LYCharSet_UC[cs_to].enc == UCT_ENC_8859 ||
-		    (LYCharSet_UC[cs_to].like8859 & UCT_R_8859SPECL)) {
-		    done = YES;
-		}
-	    } else if (unsign_c < 127 || T.transp) {
-		done = YES;
-	    }
-	    if (!done) {
-		rev_c = UCReverseTransChar(p[i], cs_to, cs_from);
-		if (rev_c > 127) {
-		    p[i] = rev_c;
-		    done = YES;
-		}
-	    }
-	} else if (unsign_c < 127)
-	    done = YES;
-
-	if (!done) {
-	    if (from_is_utf8) {
-		if ((p[i]&0xc0)==0xc0) {
-		    puni = p+i;
-		    unsign_c = UCGetUniFromUtf8String(&puni);
-		    if (unsign_c <= 0) {
-			unsign_c = (unsigned char)p[i];
-			puni = p+i;
-		    }
-		}
-	    } else if (use_lynx_specials && !Back &&
-		       (unsign_c == 160 || unsign_c == 173) &&
-		       (LYCharSet_UC[cs_from].enc == UCT_ENC_8859 ||
-			(LYCharSet_UC[cs_from].like8859 & UCT_R_8859SPECL))) {
-		if (unsign_c == 160)
-		    p[i] = HT_NON_BREAK_SPACE;
-		else if (unsign_c == 173)
-		    p[i] = LY_SOFT_HYPHEN;
-		done = YES;
-	    } else if (T.trans_to_uni) {
-		unsign_c = UCTransToUni(p[i], cs_from);
-		if (unsign_c <= 0) {
-		    /* What else can we do? */
-		    unsign_c = (unsigned char)p[i];
-		}
-#ifdef NOTUSED_FOTEMODS
-	    } else if (T.strip_raw_char_in &&
-		       (unsigned char)p[i] >= 0xc0 &&
-		       (unsigned char)p[i] < 255) {
-		REPLACE_CHAR((p[i] & 0x7f));
-		done = YES;
-#endif /* NOTUSED_FOTEMODS */
-	    } else if (!T.trans_from_uni) {
-		done = YES;
-	    }
-	    /*
-	    **	Substitute Lynx special character for
-	    **	160 (nbsp) if use_lynx_specials is set.
-	    */
-	    if (!done && use_lynx_specials && !Back &&
-		(unsign_c == 160 || unsign_c == 173)) {
-		REPLACE_CHAR((unsign_c==160 ? HT_NON_BREAK_SPACE : LY_SOFT_HYPHEN));
-		done = YES;
-	    }
-	}
-	/* At this point we should have the UCS value in unsign_c */
-	if (!done) {
-	    if (T.output_utf8 && UCPutUtf8ToBuffer(replace_buf, unsign_c, YES)) {
-		REPLACE_STRING(replace_buf);
-	    } else if ((uck = UCTransUniChar(unsign_c, cs_to)) >= 32 &&
-		uck < 256) {
-		REPLACE_CHAR((char)uck) ;
-	    } else if (uck == UCTRANS_NOTFOUND &&
-			(uck = UCTransUniCharStr(replace_buf,21, unsign_c,
-						 cs_to, 0)) >= 0) {
-		REPLACE_STRING(replace_buf);
-	    }
-	    /*
-	    ** fall through to old method:
-	    **
-	    **	Substitute other 8-bit characters based on
-	    **	the LYCharsets.c tables if HTPassEightBitRaw
-	    **	is not set. - FM
-	    */
-	    else if (unsign_c > 160 && unsign_c <= 255 &&
-		     !HTPassEightBitRaw) {
-		value = (int)(unsign_c - 160);
-		name = HTMLGetEntityName(value);
-		for (low = 0, high = HTML_dtd.number_of_entities;
-		     high > low;
-		     diff < 0 ? (low = j+1) : (high = j)) {
-		    /* Binary search */
-		    j = (low + (high-low)/2);
-		    diff = strcmp(HTML_dtd.entity_names[j], name);
-		    if (diff == 0) {
-			REPLACE_STRING(LYCharSets[cs_to][j]);
-			break;
-		    }
-		}
-		if (diff != 0) {
-		    sprintf(replace_buf, "U%.2lX", unsign_c);
-		    REPLACE_STRING(replace_buf);
-		}
-	    } else if (unsign_c > 255) {
-#ifdef NOTUSED_FOTEMODS
-		if (T.strip_raw_char_in &&
-		    (unsigned char)p[i] >= 0xc0 &&
-		    (unsigned char)p[i] < 255) {
-		    REPLACE_CHAR((p[i] & 0x7f));
-		} else
-#endif /* NOTUSED_FOTEMODS */
-		{
-		    sprintf(replace_buf, "U%.2lX", unsign_c);
-		    REPLACE_STRING(replace_buf);
-		}
-	    }
-	}
-	if ((puni-p) > i)
-	    i = (puni-p);	/* point to last byte of UTF sequence */
-    }
-    StrAllocCat(*str, q);
-    free_and_clear(&p);
-    return YES;
-}
-
-#endif /* OLDSTUFF */
-
 PUBLIC BOOL LYUCFullyTranslateString ARGS7(
 	char **, str,
 	int,	cs_from,
@@ -3401,13 +2433,6 @@ PUBLIC BOOL LYUCFullyTranslateString ARGS7(
 {
     BOOL ret = YES;
     /* May reallocate *str even if cs_to == 0 */
-#ifdef OLDSTUFF
-    if (!LYUCTranslateString(str, cs_from, cs_to, use_lynx_specials, FALSE, NO, stype)) {
-	LYExpandString_old(str);
-	ret = NO;
-    }
-#endif
-
     if (!LYUCFullyTranslateString_1(str, cs_from, cs_to, TRUE,
 				    use_lynx_specials, plain_space, hidden,
 				    NO, stype)) {
@@ -3424,14 +2449,10 @@ PUBLIC BOOL LYUCTranslateBackFormData ARGS4(
 {
     char ** ret;
     /* May reallocate *str */
-#ifdef OLDSTUFF
-    return (LYUCTranslateString(str, cs_from, cs_to, NO, plain_space, YES, st_HTML));
-#else
     ret = (LYUCFullyTranslateString_1(str, cs_from, cs_to, FALSE,
 				       NO, plain_space, YES,
 				       YES, st_HTML));
     return (ret != NULL);
-#endif
 }
 
 /*
@@ -3656,6 +2677,7 @@ PUBLIC void LYHandleMETA ARGS4(
 	    cp1 += 7;
 	    while (*cp1 == ' ' || *cp1 == '=' || *cp1 == '"')
 		cp1++;
+
 	    StrAllocCopy(cp3, cp1); /* copy to mutilate more */
 	    for (cp4 = cp3; (*cp4 != '\0' && *cp4 != '"' &&
 			     *cp4 != ';'  && *cp4 != ':' &&
@@ -3665,7 +2687,7 @@ PUBLIC void LYHandleMETA ARGS4(
 	    *cp4 = '\0';
 	    cp4 = cp3;
 	    chndl = UCGetLYhndl_byMIME(cp3);
-	    if (UCCanTranslateFromTo(chndl, current_char_set) != TQ_NO) {
+	    if (UCCanTranslateFromTo(chndl, current_char_set)) {
 		chartrans_ok = YES;
 		StrAllocCopy(me->node_anchor->charset, cp4);
 		HTAnchor_setUCInfoStage(me->node_anchor, chndl,
@@ -3676,7 +2698,7 @@ PUBLIC void LYHandleMETA ARGS4(
 		 *  Got something but we don't recognize it.
 		 */
 		chndl = UCLYhndl_for_unrec;
-		if (UCCanTranslateFromTo(chndl, current_char_set) != TQ_NO) {
+		if (UCCanTranslateFromTo(chndl, current_char_set)) {
 		    chartrans_ok = YES;
 		    HTAnchor_setUCInfoStage(me->node_anchor, chndl,
 					    UCT_STAGE_PARSER,
@@ -3758,8 +2780,11 @@ PUBLIC void LYHandleMETA ARGS4(
 				"ISO Latin 2", 11)) {
 		StrAllocCopy(me->node_anchor->charset, "iso-8859-2");
 		HTPassEightBitRaw = TRUE;
-
+	    /*
+	     *  Check for an iso-8859-# we don't know. - FM
+	     */
 	    } else if (!strncmp(cp4, "iso-8859-", 9) &&
+		       isdigit(cp4[9]) &&
 		       !strncmp(LYchar_set_names[current_char_set],
 				"Other ISO Latin", 15)) {
 		/*
@@ -4038,7 +3063,6 @@ free_META_copies:
     FREE(content);
 }
 
-#ifdef NOTDEFINED
 /*
 **  This function handles P elements in HTML streams.
 **  If start is TRUE it handles a start tag, and if
@@ -4125,7 +3149,7 @@ PUBLIC void LYHandleP ARGS5(
 		me->sp->style->alignment = HT_LEFT;
 	}
 
-	LYCheckForID(me, present, value, (int)HTML_P_ID);
+	CHECK_ID(HTML_P_ID);
 
 	/*
 	 *  Mark that we are starting a new paragraph
@@ -4137,7 +3161,6 @@ PUBLIC void LYHandleP ARGS5(
 
     return;
 }
-#endif /* NOTDEFINED */
 
 /*
 **  This function handles SELECT elements in HTML streams.
diff --git a/src/LYCharUtils.h b/src/LYCharUtils.h
index 3cf7cb76..0f510b0a 100644
--- a/src/LYCharUtils.h
+++ b/src/LYCharUtils.h
@@ -6,6 +6,8 @@
 #include "HTUtils.h"
 #endif /* HTUTILS_H */
 
+#define CHECK_ID(code) LYCheckForID(me, present, value, (int)code)
+
 typedef enum {
     st_HTML	= 0,	/* attributes and content found in HTML, probably meant for display */
     st_URL,		/* URLs, fragments, NAME and ID */
@@ -54,10 +56,8 @@ extern char *LYUppercaseI_OL_String PARAMS((
 	int			seqnum));
 extern char *LYLowercaseI_OL_String PARAMS((
 	int			seqnum));
-#ifdef HTML_H
 extern void LYGetChartransInfo PARAMS((
 	HTStructured *		me));
-#endif
 extern void add_META_charset_to_fd PARAMS((
 	FILE *			fp,
 	int			disp_chndl));
@@ -66,14 +66,12 @@ extern void LYHandleMETA PARAMS((
 	CONST BOOL*		present,
 	CONST char **		value,
 	char ** 		include));
-#ifdef NOTDEFINED
 extern void LYHandleP PARAMS((
 	HTStructured *		me,
 	CONST BOOL*		present,
 	CONST char **		value,
 	char ** 		include,
 	BOOL			start));
-#endif
 extern void LYHandleSELECT PARAMS((
 	HTStructured *		me,
 	CONST BOOL*		present,
diff --git a/src/LYClean.c b/src/LYClean.c
index ec0f3a8c..424560e6 100644
--- a/src/LYClean.c
+++ b/src/LYClean.c
@@ -57,15 +57,20 @@ PUBLIC void cleanup_sig ARGS1(
 	/*
 	 *  Ask if exit is intended.
 	 */
-	_statusline(REALLY_EXIT);
+	if (LYQuitDefaultYes == TRUE) {
+	    _statusline(REALLY_EXIT_Y);
+	} else {
+	    _statusline(REALLY_EXIT_N);
+	}
 	c = LYgetch();
-#ifdef QUIT_DEFAULT_YES
-	if (TOUPPER(c) == 'N' ||
-	    c == 7)
-#else
-	if (TOUPPER(c) != 'Y')
-#endif /* QUIT_DEFAULT_YES */
+	if (LYQuitDefaultYes == TRUE) {
+	    if (TOUPPER(c) == 'N' ||
+		c == 7) {
+		return;
+	    }
+	} else if (TOUPPER(c) != 'Y') {
 	    return;
+	}
     }
 #endif /* VMS */
 
diff --git a/src/LYCurses.c b/src/LYCurses.c
index 9d5885ff..b23c7662 100644
--- a/src/LYCurses.c
+++ b/src/LYCurses.c
@@ -855,7 +855,7 @@ PUBLIC void lynx_enable_mouse ARGS1(int,state)
       button 1 is clicked */
 #ifndef _WINDOWS
    if (state)
-     mousemask(BUTTON1_CLICKED | BUTTON2_CLICKED, NULL);
+     mousemask(BUTTON1_CLICKED | BUTTON3_CLICKED, NULL);
    else
      mousemask(0, NULL);
 #else
@@ -1673,26 +1673,6 @@ PUBLIC void lynx_force_repaint NOARGS
     clearok(curscr, TRUE);
 }
 
-PUBLIC void lynx_start_underline_color NOARGS
-{
-    start_underline ();
-}
-
-PUBLIC void lynx_stop_underline_color NOARGS
-{
-    stop_underline ();
-}
-
-PUBLIC void lynx_start_bold_color NOARGS
-{
-    start_bold ();
-}
-
-PUBLIC void lynx_stop_bold_color NOARGS
-{
-    stop_bold ();
-}
-
 PUBLIC void lynx_start_title_color NOARGS
 {
 }
@@ -1727,7 +1707,7 @@ PUBLIC void lynx_start_link_color ARGS2(
 	 *  will be underlined if appropriate. - LE & FM
 	 */
 	if (pending)
-	    lynx_start_underline_color();
+	    start_underline();
      }
 }
 
@@ -1754,7 +1734,7 @@ PUBLIC void lynx_stop_link_color ARGS2(
 	 *  If underlining was turned on above, turn it off. - LE & FM
 	 */
 	if (pending)
-	    lynx_stop_underline_color();
+	    stop_underline();
     }
 #endif
 }
diff --git a/src/LYCurses.h b/src/LYCurses.h
index 3f685cbc..c25eb0db 100644
--- a/src/LYCurses.h
+++ b/src/LYCurses.h
@@ -328,10 +328,6 @@ extern int  lynx_chg_color PARAMS((int, int, int));
 
 extern void lynx_enable_mouse PARAMS((int));
 extern void lynx_force_repaint NOPARAMS;
-extern void lynx_start_underline_color NOPARAMS;
-extern void lynx_stop_underline_color NOPARAMS;
-extern void lynx_start_bold_color NOPARAMS;
-extern void lynx_stop_bold_color NOPARAMS;
 extern void lynx_start_title_color NOPARAMS;
 extern void lynx_stop_title_color NOPARAMS;
 extern void lynx_start_link_color PARAMS((int flag, int pending));
diff --git a/src/LYGlobalDefs.h b/src/LYGlobalDefs.h
index 5ee6fde3..80cba706 100644
--- a/src/LYGlobalDefs.h
+++ b/src/LYGlobalDefs.h
@@ -326,6 +326,8 @@ extern BOOLEAN LYForceSSLCookiesSecure;
 extern BOOLEAN LYNoCc;
 extern BOOLEAN LYPreparsedSource;	/* Show source as preparsed?	 */
 extern BOOLEAN LYPrependBaseToSource;
+extern BOOLEAN LYPrependCharsetToSource;
+extern BOOLEAN LYQuitDefaultYes;
 
 #ifdef RAWDOSKEYHACK
 extern BOOLEAN raw_dos_key_hack; /* Turn on and off DOS key hack */
diff --git a/src/LYMain.c b/src/LYMain.c
index 0037fc8a..1af4cfd4 100644
--- a/src/LYMain.c
+++ b/src/LYMain.c
@@ -292,13 +292,13 @@ PUBLIC char *LYHostName = NULL;		/* treat as a local host name */
 PUBLIC char *LYLocalDomain = NULL;	/* treat as a local domain tail */
 PUBLIC BOOLEAN clickable_images = MAKE_LINKS_FOR_ALL_IMAGES;
 PUBLIC BOOLEAN pseudo_inline_alts = MAKE_PSEUDO_ALTS_FOR_INLINES;
-PUBLIC BOOLEAN crawl=FALSE;	     /* Do crawl? */
-PUBLIC BOOLEAN traversal=FALSE;     /* Do traversals? */
-PUBLIC BOOLEAN check_realm=FALSE;   /* Restrict to the starting realm? */
+PUBLIC BOOLEAN crawl = FALSE;	     /* Do crawl? */
+PUBLIC BOOLEAN traversal = FALSE;    /* Do traversals? */
+PUBLIC BOOLEAN check_realm = FALSE;  /* Restrict to the starting realm? */
 	       /* Links beyond a displayed page with no links? */
-PUBLIC BOOLEAN more_links=FALSE;
-PUBLIC int     ccount=0;  /* Starting number for lnk#.dat files in crawls */
-PUBLIC BOOLEAN LYCancelledFetch=FALSE; /* TRUE if cancelled binary fetch */
+PUBLIC BOOLEAN more_links = FALSE;
+PUBLIC int     ccount = 0; /* Starting number for lnk#.dat files in crawls */
+PUBLIC BOOLEAN LYCancelledFetch = FALSE; /* TRUE if cancelled binary fetch */
 	       /* Include mime headers with source dump */
 PUBLIC BOOLEAN keep_mime_headers = FALSE;
 PUBLIC BOOLEAN no_url_redirection = FALSE; /* Don't follow URL redirections */
@@ -366,6 +366,8 @@ PUBLIC BOOLEAN LYForceSSLCookiesSecure = FALSE;
 PUBLIC BOOLEAN LYNoCc = FALSE;
 PUBLIC BOOLEAN LYPreparsedSource = FALSE;	/* Show source as preparsed?	 */
 PUBLIC BOOLEAN LYPrependBaseToSource = TRUE;
+PUBLIC BOOLEAN LYPrependCharsetToSource = FALSE;
+PUBLIC BOOLEAN LYQuitDefaultYes = QUIT_DEFAULT_YES;
 
 /* These are declared in cutil.h for current freeWAIS libraries. - FM */
 #ifdef DECLARE_WAIS_LOGFILES
diff --git a/src/LYMainLoop.c b/src/LYMainLoop.c
index 925aa7de..9dfd785c 100644
--- a/src/LYMainLoop.c
+++ b/src/LYMainLoop.c
@@ -2137,16 +2137,23 @@ new_cmd:  /*
 #endif /* NOT_DONE_YET */
 
 	case LYK_QUIT:	/* quit */
-	    _statusline(REALLY_QUIT);
+	    if (LYQuitDefaultYes == TRUE) {
+		_statusline(REALLY_QUIT_Y);
+	    } else {
+		_statusline(REALLY_QUIT_N);
+	    }
 	    c = LYgetch();
-#ifdef QUIT_DEFAULT_YES
-	    if (TOUPPER(c) != 'N' &&
-		c != 7)
-#else
-	    if (TOUPPER(c) == 'Y')
-#endif /* QUIT_DEFAULT_YES */
+	    if (LYQuitDefaultYes == TRUE) {
+		if (TOUPPER(c) != 'N' &&
+		    c != 7) {
+		    return(0);
+		} else {
+		    statusline(NO_CANCEL);
+		    sleep(InfoSecs);
+		}
+	    } else if (TOUPPER(c) == 'Y') {
 		return(0);
-	    else {
+	    } else {
 		statusline(NO_CANCEL);
 		sleep(InfoSecs);
 	    }
diff --git a/src/LYPrint.c b/src/LYPrint.c
index ea87e2a5..c1799a16 100644
--- a/src/LYPrint.c
+++ b/src/LYPrint.c
@@ -464,6 +464,39 @@ PUBLIC int printfile ARGS1(
 			    "<!-- X-URL: %s -->\n<BASE HREF=\"%s\">\n",
 			    newdoc->address, content_base);
 		}
+
+		if (LYPrependCharsetToSource && HTisDocumentSource()) {
+		    /*
+		     *	Added the document's charset as a META CHARSET tag
+		     *	to the top of the file.  May create
+		     *	technically invalid HTML, but will help to resolve
+		     *	properly the document converted via chartrans:
+		     *  printed document correspond to a display charset
+		     *  and we *should* override both assume_local_charset
+		     *  and original document's META CHARSET (if any).
+		     *
+		     *  Currently, if several META CHARSET found
+		     *  Lynx use the first only, and it is opposite to BASE
+		     *  where original BASE in the <HEAD>
+		     *  override ones from the top.
+		     *
+		     *  Like in print-to-email we write charset only if
+		     *  the document has 8-bit characters, and
+		     *  we have no CJK or an inofficial "x-" charset.
+		     *
+		     */
+			use_cte = HTLoadedDocumentEightbit();
+			disp_charset = LYCharSet_UC[current_char_set].MIMEname;
+			if (!use_cte || LYHaveCJKCharacterSet ||
+			    strncasecomp(disp_charset, "x-", 2) == 0) {
+			} else {
+			fprintf(outfile_fp,
+				"<META HTTP-EQUIV=\"Content-Type\" "
+				"CONTENT=\"text/html; charset=%s\">\n\n",
+				disp_charset);
+			}
+		}
+
 		print_wwwfile_to_fd(outfile_fp,0);
 		if (keypad_mode)
 		    printlist(outfile_fp,FALSE);
diff --git a/src/LYReadCFG.c b/src/LYReadCFG.c
index efca2346..d8509a00 100644
--- a/src/LYReadCFG.c
+++ b/src/LYReadCFG.c
@@ -1047,6 +1047,9 @@ PUBLIC void read_cfg ARGS1(
 	} else if (!strncasecomp(buffer, "PREPEND_BASE_TO_SOURCE:", 23)) {
 	    LYPrependBaseToSource = is_true(buffer+23);
 
+	} else if (!strncasecomp(buffer, "PREPEND_CHARSET_TO_SOURCE:", 26)) {
+	    LYPrependCharsetToSource = is_true(buffer+26);
+
 	} else if (!strncasecomp(buffer, "PRINTER:", 8)) {
 	    add_printer_to_list(&buffer[8], &printers);
 	}
@@ -1060,6 +1063,12 @@ PUBLIC void read_cfg ARGS1(
 	break;
 #endif /* RAWDOSKEYHACK */
 
+	case 'Q':
+	if (!strncasecomp(buffer, "QUIT_DEFAULT_YES:", 17)) {
+	    LYQuitDefaultYes = is_true(buffer+17);
+	}
+	break;
+
 	case 'S':
 	if (!strncasecomp(buffer, "SAVE_SPACE:", 11)) {
 	    StrAllocCopy(lynx_save_space, buffer+11);
diff --git a/src/LYStrings.c b/src/LYStrings.c
index 90464eb4..99f54b2d 100644
--- a/src/LYStrings.c
+++ b/src/LYStrings.c
@@ -664,7 +664,7 @@ re_read:
 	   err=getmouse(&event);
 	   if (event.bstate & BUTTON1_CLICKED) {
 	     c = set_clicked_link(event.x, event.y);
-	   } else if (event.bstate & BUTTON2_CLICKED) {
+	   } else if (event.bstate & BUTTON3_CLICKED) {
 	     c = map_function_to_key (LYK_PREV_DOC);
 	   }
 #else /* pdcurses version */
diff --git a/src/UCAux.c b/src/UCAux.c
index 09fa6833..13685036 100644
--- a/src/UCAux.c
+++ b/src/UCAux.c
@@ -9,43 +9,35 @@
 extern HTCJKlang HTCJK;
 extern LYUCcharset LYCharSet_UC[];
 
-PUBLIC UCTQ_t UCCanUniTranslateFrom ARGS1(
+PUBLIC BOOL UCCanUniTranslateFrom ARGS1(
 	int,		from)
 {
     if (from < 0)
-	return TQ_NO;
+	return NO;
     if (LYCharSet_UC[from].enc == UCT_ENC_7BIT ||
 	LYCharSet_UC[from].enc == UCT_ENC_UTF8)
-	return TQ_EXCELLENT;
+	return YES;
     if (LYCharSet_UC[from].codepoints & (UCT_CP_SUBSETOF_LAT1))
-	return TQ_EXCELLENT;
-    return ((LYCharSet_UC[from].UChndl >= 0) ? TQ_GOOD : TQ_NO);
+	return YES;
+    return (LYCharSet_UC[from].UChndl >= 0);
 }
 
-PUBLIC UCTQ_t UCCanTranslateUniTo ARGS1(
+PUBLIC BOOL UCCanTranslateUniTo ARGS1(
 	int,		to)
 {
     if (to < 0)
-	return TQ_NO;
-    if (LYCharSet_UC[to].enc == UCT_ENC_7BIT)
-	return TQ_POOR;
-    if (LYCharSet_UC[to].enc == UCT_ENC_UTF8)
-	return TQ_EXCELLENT;
-    if (LYCharSet_UC[to].enc == UCT_ENC_CJK)
-	return TQ_POOR;
-    if (LYCharSet_UC[to].UChndl >= 0)
-	return TQ_GOOD;
-    return TQ_GOOD;	/* at least some characters, we don't know more */
+	return NO;
+    return YES;			/* well at least some characters... */
 }
 
-PUBLIC UCTQ_t UCCanTranslateFromTo ARGS2(
+PUBLIC BOOL UCCanTranslateFromTo ARGS2(
 	int,		from,
 	int,		to)
 {
     if (from == to)
-	return TQ_EXCELLENT;
+	return YES;
     if (from < 0 || to < 0)
-	return TQ_NO;
+	return NO;
     if (from == 0)
 	return UCCanTranslateUniTo(to);
     if (to == 0 || LYCharSet_UC[to].enc == UCT_ENC_UTF8)
@@ -55,9 +47,9 @@ PUBLIC UCTQ_t UCCanTranslateFromTo ARGS2(
 	CONST char * toname = LYCharSet_UC[to].MIMEname;
 	if (!strcmp(fromname, "x-transparent") ||
 	    !strcmp(toname, "x-transparent")) {
-	    return TQ_GOOD;
+	    return YES;
 	} else if (!strcmp(fromname, "us-ascii")) {
-	    return TQ_GOOD;
+	    return YES;
 	}
 	if (LYCharSet_UC[from].enc == UCT_ENC_CJK) {
 	    /*
@@ -66,25 +58,25 @@ PUBLIC UCTQ_t UCCanTranslateFromTo ARGS2(
 	    **  be for capability in relation to another document,
 	    **  for which CJK mode might be turned on when retrieved.
 	    **  Thus, when the from charset is CJK, check if the to
-	    **  charset is CJK, and return TQ_NO or TQ_GOOD depending on
+	    **  charset is CJK, and return NO or YES in relation to
 	    **  that. - FM
 	    */
 	    if (LYCharSet_UC[to].enc != UCT_ENC_CJK)
-		return TQ_NO;
+		return NO;
 	    if ((!strcmp(toname, "euc-jp") ||
 		 !strcmp(toname, "shift_jis")) &&
 		(!strcmp(fromname, "euc-jp") ||
 		 !strcmp(fromname, "shift_jis")))
-		return TQ_GOOD;
+		return YES;
 	    /*
 	    **  The euc-cn and euc-kr charsets were handled
 	    **  by the (from == to) above, so we need not
 	    **  check those. - FM
 	    **/
-	    return TQ_NO;
+	    return NO;
 	}
-	return ((LYCharSet_UC[from].UChndl >= 0) ? TQ_GOOD : TQ_NO);
     }
+    return (LYCharSet_UC[from].UChndl >= 0);
 }
 
 /*
@@ -242,7 +234,7 @@ PUBLIC void UCSetTransParams ARGS5(
 	    **  treated as already Unicode here.
 	    */
 	    pT->trans_to_uni = (!intm_ucs &&
-				UCCanUniTranslateFrom(cs_in) != TQ_NO);
+				UCCanUniTranslateFrom(cs_in));
 	    /*
 	    **  We set this if we are translating to Unicode and
 	    **  what normally are low value control characters in
@@ -255,27 +247,11 @@ PUBLIC void UCSetTransParams ARGS5(
 	    **  We set this, presently, for VISCII. - FM
 	    */
 	    pT->repl_translated_C0 = (p_out->enc == UCT_ENC_8BIT_C0);
-#ifdef NOTDEFINED
 	    /*
-	    **  This is a flag for whether we are dealing with koi8-r
-	    **  as the input, and could do 8th-bit stripping for other
-	    **  output charsets.  Note that this always sets 8th-bit
-	    **  stripping if the input charset is KOI8-R and the output
-	    **  charset needs it, i.e., regardless of the RawMode and
-	    **  consequent HTPassEightBitRaw setting, so you can't look
-	    **  at raw koi8-r without selecting that as the display
-	    **  character set (or transparent).  That's just as well,
-	    **  but worth noting for developers - FM
+	    **  Currently unused for any charset combination.
+	    **  Should always be FALSE
 	    */
-	    pT->strip_raw_char_in = ((!intm_ucs ||
-				      (p_out->enc == UCT_ENC_7BIT) ||
-				      (p_out->repertoire &
-				       UCT_REP_SUBSETOF_LAT1)) &&
-				     cs_in != cs_out &&
-				     !strcmp(p_in->MIMEname, "koi8-r"));
-#else
 	    pT->strip_raw_char_in = FALSE;
-#endif /* NOTDEFINED */
 	    /*
 	    **  use_ucs should be set TRUE if we have or will create
 	    **  Unicode values for input octets or UTF multibytes. - FM
@@ -314,7 +290,7 @@ PUBLIC void UCSetTransParams ARGS5(
 	    */
 	    pT->trans_from_uni = (use_ucs && !pT->do_8bitraw &&
 				  !pT->use_raw_char_in &&
-				  UCCanTranslateUniTo(cs_out) != TQ_NO);
+				  UCCanTranslateUniTo(cs_out));
 	}
     }
 }
diff --git a/src/UCdomap.c b/src/UCdomap.c
index 4e6ff500..84ab6ed3 100644
--- a/src/UCdomap.c
+++ b/src/UCdomap.c
@@ -28,13 +28,13 @@
 /*
  *  Include tables & parameters.
  */
-#include "cp1250_uni.h"		/* WinLatin2 (cp1250)	*/
-#include "cp1251_uni.h"		/* WinCyrillic (cp1251)	*/
-#include "cp1252_uni.h"		/* WinLatin1 (cp1252)	*/
-#include "cp1253_uni.h"		/* WinGreek (cp1253)	*/
-#include "cp1255_uni.h"		/* WinHebrew (cp1255)	*/
-#include "cp1256_uni.h"		/* WinArabic (cp1256)	*/
-#include "cp1257_uni.h"		/* WinBaltRim (cp1257)	*/
+#include "cp1250_uni.h" 	/* WinLatin2 (cp1250)	*/
+#include "cp1251_uni.h" 	/* WinCyrillic (cp1251) */
+#include "cp1252_uni.h" 	/* WinLatin1 (cp1252)	*/
+#include "cp1253_uni.h" 	/* WinGreek (cp1253)	*/
+#include "cp1255_uni.h" 	/* WinHebrew (cp1255)	*/
+#include "cp1256_uni.h" 	/* WinArabic (cp1256)	*/
+#include "cp1257_uni.h" 	/* WinBaltRim (cp1257)	*/
 #include "cp437_uni.h"		/* DosLatinUS (cp437)	*/
 #include "cp737_uni.h"		/* DosGreek (cp737)	*/
 #include "cp775_uni.h"		/* DosBaltRim (cp775)	*/
@@ -54,15 +54,15 @@
 #include "iso06_uni.h"		/* ISO 8859-6 Arabic	*/
 #include "iso07_uni.h"		/* ISO 8859-7 Greek	*/
 #include "iso08_uni.h"		/* ISO 8859-8 Hebrew	*/
-#include "iso09_uni.h"		/* ISO 8859-9 (Latin 5)	*/
+#include "iso09_uni.h"		/* ISO 8859-9 (Latin 5) */
 #include "iso10_uni.h"		/* ISO 8859-10		*/
 #include "koi8r_uni.h"		/* KOI8-R Cyrillic	*/
 #include "mac_uni.h"		/* Macintosh (8 bit)	*/
-#include "mnem2_suni.h"		/* RFC 1345 Mnemonic	*/
+#include "mnem2_suni.h" 	/* RFC 1345 Mnemonic	*/
 #include "next_uni.h"		/* NeXT character set	*/
 #include "rfc_suni.h"		/* RFC 1345 w/o Intro	*/
 #include "utf8_uni.h"		/* UNICODE UTF 8	*/
-#include "viscii_uni.h"		/* Vietnamese (VISCII)	*/
+#include "viscii_uni.h" 	/* Vietnamese (VISCII)	*/
 #ifdef NOTDEFINED
 #include "mnem_suni.h"
 #endif /* NOTDEFINED */
@@ -342,7 +342,7 @@ PRIVATE void set_inverse_transl ARGS1(
 	glyph = conv_uni_to_pc(p[j], 0);
 	if (glyph >= 0 && glyph < MAX_GLYPH && q[glyph] < 32) {
 	    /*
-	     *  Prefer '-' above SHY etc.
+	     *	Prefer '-' above SHY etc.
 	     */
 	    q[glyph] = j;
 	}
@@ -485,7 +485,7 @@ PRIVATE void UC_con_set_trans ARGS3(
     return;			/* nothing to be done */
   }
     /*
-     *  The font is always 256 characters - so far.
+     *	The font is always 256 characters - so far.
      */
   con_clear_unimap();
 #endif
@@ -500,7 +500,7 @@ PRIVATE void UC_con_set_trans ARGS3(
 	}
     }
     if (update_flag) {
-	set_inverse_transl(Gn);	/* Update inverse translation for this one */
+	set_inverse_transl(Gn); /* Update inverse translation for this one */
     }
 }
 
@@ -603,7 +603,7 @@ PRIVATE int con_insert_unipair ARGS3(
 
 PRIVATE int con_insert_unipair_str ARGS3(
 	u16,		unicode,
-	char *,		replace_str,
+	char *, 	replace_str,
 	int,		fordefault)
 {
     int i, n;
@@ -642,7 +642,7 @@ PRIVATE int con_insert_unipair_str ARGS3(
     return 0;
 }
 
-/* 
+/*
  *  ui arg was a leftover, deleted. - KW
  */
 PRIVATE void con_clear_unimap ARGS1(
@@ -694,7 +694,7 @@ PRIVATE void con_clear_unimap_str ARGS1(int, fordefault)
       unidefault_pagedir_str[i] = NULL;
     }
 
-    unidefault_str_contents_valid = 1;  /* ??? probably no use... */
+    unidefault_str_contents_valid = 1;	/* ??? probably no use... */
   } else {
     for (i = 0; i < 32; i++) {
 	if ((p1 = uni_pagedir_str[i]) != NULL) {
@@ -743,7 +743,7 @@ PRIVATE void con_set_default_unimap NOARGS
     u16 *p;
 
     /*
-     *  The default font is always 256 characters.
+     *	The default font is always 256 characters.
      */
     con_clear_unimap(1);
 
@@ -795,7 +795,7 @@ PRIVATE int UC_con_set_unimap ARGS2(
     UC_current_unitable = p;
 
     /*
-     *  The font is always 256 characters - so far.
+     *	The font is always 256 characters - so far.
      */
     con_clear_unimap(0);
 
@@ -831,7 +831,7 @@ PRIVATE int UC_con_set_unimap_str ARGS3(
     }
 
     /*
-     *  No inverse translations for replacement strings!
+     *	No inverse translations for replacement strings!
      */
     if (!err) {
 	if (fordefault)
@@ -847,7 +847,7 @@ PRIVATE int UC_con_set_unimap_str ARGS3(
 PRIVATE int con_get_unimap ARGS3(
 	u16,			ct,
 	u16 *,			uct,
-	struct unipair *, 	list)
+	struct unipair *,	list)
 {
     int i, j, k, ect;
     u16 **p1, *p2;
@@ -882,9 +882,9 @@ PRIVATE int conv_uni_to_pc ARGS2(
 {
     int h;
     u16 **p1, *p2;
-  
+
     /*
-     *  Only 16-bit codes supported at this time.
+     *	Only 16-bit codes supported at this time.
      */
     if (ucs > 0xffff) {
 	/*
@@ -928,7 +928,7 @@ PRIVATE int conv_uni_to_pc ARGS2(
     }
 
     /*
-     *  Not found.
+     *	Not found.
      */
     return -4;
 }
@@ -946,7 +946,7 @@ PRIVATE int conv_uni_to_str ARGS4(
     char ***p1, **p2;
 
     /*
-     *  Only 16-bit codes supported at this time.
+     *	Only 16-bit codes supported at this time.
      */
     if (ucs > 0xffff) {
 	/*
@@ -954,7 +954,7 @@ PRIVATE int conv_uni_to_str ARGS4(
 	 */
 	ucs = 0xfffd;
     /*
-     *  Maybe the following two cases should be allowed here?? - KW
+     *	Maybe the following two cases should be allowed here?? - KW
      */
     } else if (ucs < 0x20 || ucs >= 0xfffe) {
 	/*
@@ -996,7 +996,7 @@ PRIVATE int conv_uni_to_str ARGS4(
     }
 
     /*
-     *  Not found.
+     *	Not found.
      */
     return -4;
 }
@@ -1070,7 +1070,7 @@ PUBLIC int UCTransUniChar ARGS2(
  *  Returns string length, or negative value for error.
  */
 PUBLIC int UCTransUniCharStr ARGS5(
-	char *,		outbuf,
+	char *, 	outbuf,
 	int,		buflen,
 	long,		unicode,
 	int,		charset_out,
@@ -1369,7 +1369,7 @@ PUBLIC int UCReverseTransChar ARGS3(
  *  Returns string length, or negative value for error.
  */
 PUBLIC int UCTransCharStr ARGS6(
-	char *,		outbuf,
+	char *, 	outbuf,
 	int,		buflen,
 	char,		ch_in,
 	int,		charset_in,
@@ -1533,7 +1533,7 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
 	if (!strcmp(UC_MIMEcharset, "unicode-1-1-utf-8") ||
 	    !strcmp(UC_MIMEcharset, "utf8")) {
 	    /*
-	     *  Treat these as synonyms for the IANA registered name. - FM
+	     *	Treat these as synonyms for the IANA registered name. - FM
 	     */
 	    return UCGetLYhndl_byMIME("utf-8");
 	}
@@ -1570,8 +1570,8 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
 	    !strcmp(UC_MIMEcharset, "ibm1252") ||
 	    !strcmp(UC_MIMEcharset, "iso-8859-1-windows-3.0-latin-1")) {
 	    /*
-	     *  Treat these as synonyms for windows-1252, which is more
-	     *  commonly used than the IANA registered name. - FM
+	     *	Treat these as synonyms for windows-1252, which is more
+	     *	commonly used than the IANA registered name. - FM
 	     */
 	    return UCGetLYhndl_byMIME("windows-1252");
 	}
@@ -1580,7 +1580,7 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
 	    !strcmp(UC_MIMEcharset, "cp-1250") ||
 	    !strcmp(UC_MIMEcharset, "ibm1250")) {
 	    /*
-	     *  Treat these as synonyms for windows-1250. - FM
+	     *	Treat these as synonyms for windows-1250. - FM
 	     */
 	    return UCGetLYhndl_byMIME("windows-1250");
 	}
@@ -1590,8 +1590,8 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
 	    isdigit((unsigned char)UC_MIMEcharset[4]) &&
 	    isdigit((unsigned char)UC_MIMEcharset[5])) {
 	    /*
-	     *  For "ibmNNN<...>" or "cp-NNN", try "cpNNN<...>"
-	     *  if not yet found. - KW & FM
+	     *	For "ibmNNN<...>" or "cp-NNN", try "cpNNN<...>"
+	     *	if not yet found. - KW & FM
 	     */
 	    char * cptmp = NULL;
 
@@ -1603,7 +1603,7 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
 		return LYhndl;
 	    }
 	    /*
-	     *  Try windows-NNN<...> if not yet found. - FM
+	     *	Try windows-NNN<...> if not yet found. - FM
 	     */
 	    StrAllocCopy(cptmp, "windows-");
 	    StrAllocCat(cptmp, (UC_MIMEcharset + 3));
@@ -1616,7 +1616,7 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
 	    isdigit((unsigned char)UC_MIMEcharset[9]) &&
 	    isdigit((unsigned char)UC_MIMEcharset[10])) {
 	    /*
-	     *  For "windows-NNN<...>", try "cpNNN<...>" - FM
+	     *	For "windows-NNN<...>", try "cpNNN<...>" - FM
 	     */
 	    char * cptmp = NULL;
 
@@ -1631,7 +1631,7 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
 	  return UCGetLYhndl_byMIME("koi8-r");
   }
     }
-  return LYhndl;        /* returns -1 if no charset found by that MIME name */
+  return LYhndl;	/* returns -1 if no charset found by that MIME name */
 }
 
 /*
@@ -1641,7 +1641,7 @@ PUBLIC int UCGetLYhndl_byMIME ARGS1(
  *  any more), but it works (as far as it goes..).
  *
  *  We try to be conservative and only allocate new memory for this
- *  if needed.  If not needed, just point to SevenBitApproximations[i].
+ *  if needed.	If not needed, just point to SevenBitApproximations[i].
  *  [Could do the same for ISO_Latin1[] if it's identical to that, but
  *   would make it even *more* messy than it already is...]
  *  This the only function in this file that knows, or cares, about the
@@ -1692,7 +1692,7 @@ PRIVATE char ** UC_setup_LYCharSets_repl ARGS2(
     u8 *ti;
 
     /*
-     *  Create a temporary table for reverse lookup of latin1 codes:
+     *	Create a temporary table for reverse lookup of latin1 codes:
      */
     tp = (char **)malloc(96 * sizeof(char *));
     if (!tp)
@@ -1710,9 +1710,9 @@ PRIVATE char ** UC_setup_LYCharSets_repl ARGS2(
     pp = UCInfo[UC_charset_in_hndl].unitable;
 
     /*
-     *  Determine if we have any mapping of a Unicode in the range 160-255
-     *  to an allowed code point > 0x80 in our new charset...
-     *  Store any mappings found in ti[].
+     *	Determine if we have any mapping of a Unicode in the range 160-255
+     *	to an allowed code point > 0x80 in our new charset...
+     *	Store any mappings found in ti[].
      */
     if (UCInfo[UC_charset_in_hndl].num_uni > 0) {
 	for (i = 0; i < 256; i++) {
@@ -1745,9 +1745,9 @@ PRIVATE char ** UC_setup_LYCharSets_repl ARGS2(
 	}
     }
     /*
-     *  Now allocate a new table compatible with LYCharSets[]
-     *  and with the HTMLDTD for entities.
-     *  We don't know yet whether we'll keep it around. */
+     *	Now allocate a new table compatible with LYCharSets[]
+     *	and with the HTMLDTD for entities.
+     *	We don't know yet whether we'll keep it around. */
     p = prepl = (char **)malloc(HTML_dtd.number_of_entities * sizeof(char *));
     if (!p) {
 	FREE(tp);
@@ -1766,8 +1766,8 @@ PRIVATE char ** UC_setup_LYCharSets_repl ARGS2(
 	*p = s7;
 	if (s8 && (unsigned char)(*s8) >= 160 && strlen(s8) == 1) {
 	    /*
-	     *  We have an entity that is mapped to
-	     *  one valid eightbit latin1 char.
+	     *	We have an entity that is mapped to
+	     *	one valid eightbit latin1 char.
 	     */
 	    if (ti[(unsigned char)(*s8) - 160] >= lowest8 &&
 		!(s7[0] == ti[(unsigned char)(*s8) - 160] &&
@@ -1795,10 +1795,10 @@ PRIVATE char ** UC_setup_LYCharSets_repl ARGS2(
 		    (*p)[1] = '\0';
 #else
 		    /*
-		     *  Use this instead... make those 1-char strings
-		     *  into HTAtoms, so they will be cleaned up
-		     *  at exit... all for the sake of preventing
-		     *  memory leaks, sigh.
+		     *	Use this instead... make those 1-char strings
+		     *	into HTAtoms, so they will be cleaned up
+		     *	at exit... all for the sake of preventing
+		     *	memory leaks, sigh.
 		     */
 		    static char dummy[2];	/* one char dummy string */
 
@@ -1851,8 +1851,8 @@ PRIVATE int UC_Register_with_LYCharSets ARGS4(
     }
 
     /*
-     *  Do different kinds of searches...
-     *  Normally the first should find the match if there is one!
+     *	Do different kinds of searches...
+     *	Normally the first should find the match if there is one!
      */
     for (i = 0; i < MAXCHARSETS && LYchar_set_names[i] && LYhndl < 0; i++) {
 	if (!strcmp(UC_LYNXcharset, LYchar_set_names[i])) {
@@ -1896,15 +1896,15 @@ PRIVATE int UC_Register_with_LYCharSets ARGS4(
     }
   LYCharSet_UC[LYhndl].UChndl = s;
     /*
-     *  Can we just copy the pointer?  Hope so...
+     *	Can we just copy the pointer?  Hope so...
      */
   LYCharSet_UC[LYhndl].MIMEname = UC_MIMEcharset;
   LYCharSet_UC[LYhndl].enc = UCInfo[s].enc;
 
     /*
-     *  @@@ We really SHOULD get more info from the table files,
-     *  and set relevant flags in the LYCharSet_UC[] entry with
-     *  that info...  For now, let's try it without. - KW
+     *	@@@ We really SHOULD get more info from the table files,
+     *	and set relevant flags in the LYCharSet_UC[] entry with
+     *	that info...  For now, let's try it without. - KW
      */
     if (lowest_eightbit < LYlowest_eightbit[LYhndl]) {
     LYlowest_eightbit[LYhndl] = lowest_eightbit;
@@ -1917,7 +1917,7 @@ PRIVATE int UC_Register_with_LYCharSets ARGS4(
     if (repl) {
       LYCharSets[LYhndl] = repl;
 	    /*
-	     *  Remember to FREE at exit.
+	     *	Remember to FREE at exit.
 	     */
       remember_allocated_LYCharSets[LYhndl]=repl;
     }
@@ -1943,7 +1943,7 @@ PUBLIC void UC_Charset_Setup ARGS8(
     int i, status = 0, found;
 
     /*
-     *  Get (new?) slot.
+     *	Get (new?) slot.
      */
     found = -1;
     for (i = 0; i < UCNumCharsets && found < 0; i++) {
@@ -2012,23 +2012,29 @@ PUBLIC void UCInit NOARGS
 
     UC_CHARSET_SETUP;	/* us-ascii */	  /* 7 bit approximations */
 
+/*
+ *  The order of charset names visible in Lynx Options menu
+ *  correspond to the order of lines below,
+ *  except for CJK and others described in LYCharSet.c
+ */
+
     UC_CHARSET_SETUP_iso_8859_1;	  /* ISO Latin 1	  */
     UC_CHARSET_SETUP_cp850;		  /* DosLatin1 (cp850)	  */
-    UC_CHARSET_SETUP_windows_1252;	  /* WinLatin1 (cp1252)	  */
-    UC_CHARSET_SETUP_cp437;		  /* DosLatinUS (cp437)	  */
+    UC_CHARSET_SETUP_windows_1252;	  /* WinLatin1 (cp1252)   */
+    UC_CHARSET_SETUP_cp437;		  /* DosLatinUS (cp437)   */
 
-    UC_CHARSET_SETUP_dec_mcs;		  /* DEC Multinational    */
-    UC_CHARSET_SETUP_macintosh;		  /* Macintosh (8 bit)    */
+    UC_CHARSET_SETUP_dec_mcs;		  /* DEC Multinational	  */
+    UC_CHARSET_SETUP_macintosh; 	  /* Macintosh (8 bit)	  */
     UC_CHARSET_SETUP_next;		  /* NeXT character set   */
 
     UC_CHARSET_SETUP_viscii;		  /* Vietnamese (VISCII)  */
 
     UC_CHARSET_SETUP_iso_8859_2;	  /* ISO Latin 2	  */
     UC_CHARSET_SETUP_cp852;		  /* DosLatin2 (cp852)	  */
-    UC_CHARSET_SETUP_windows_1250;	  /* WinLatin2 (cp1250)	  */
+    UC_CHARSET_SETUP_windows_1250;	  /* WinLatin2 (cp1250)   */
     UC_CHARSET_SETUP_iso_8859_3;	  /* ISO Latin 3	  */
     UC_CHARSET_SETUP_iso_8859_4;	  /* ISO Latin 4	  */
-    UC_CHARSET_SETUP_cp775;		  /* DosBaltRim (cp775)	  */
+    UC_CHARSET_SETUP_cp775;		  /* DosBaltRim (cp775)   */
     UC_CHARSET_SETUP_windows_1257;	  /* WinBaltRim (cp1257)  */
     UC_CHARSET_SETUP_iso_8859_5;	  /* ISO 8859-5 Cyrillic  */
     UC_CHARSET_SETUP_cp866;		  /* DosCyrillic (cp866)  */
@@ -2036,21 +2042,26 @@ PUBLIC void UCInit NOARGS
     UC_CHARSET_SETUP_koi8_r;		  /* KOI8-R Cyrillic	  */
     UC_CHARSET_SETUP_iso_8859_6;	  /* ISO 8869-6 Arabic	  */
     UC_CHARSET_SETUP_cp864;		  /* DosArabic (cp864)	  */
-    UC_CHARSET_SETUP_windows_1256;	  /* WinArabic (cp1256)	  */
+    UC_CHARSET_SETUP_windows_1256;	  /* WinArabic (cp1256)   */
     UC_CHARSET_SETUP_iso_8859_7;	  /* ISO 8859-7 Greek	  */
     UC_CHARSET_SETUP_cp737;		  /* DosGreek (cp737)	  */
     UC_CHARSET_SETUP_cp869;		  /* DosGreek2 (cp869)	  */
     UC_CHARSET_SETUP_windows_1253;	  /* WinGreek (cp1253)	  */
     UC_CHARSET_SETUP_iso_8859_8;	  /* ISO 8859-8 Hebrew	  */
     UC_CHARSET_SETUP_cp862;		  /* DosHebrew (cp862)	  */
-    UC_CHARSET_SETUP_windows_1255;	  /* WinHebrew (cp1255)	  */
+    UC_CHARSET_SETUP_windows_1255;	  /* WinHebrew (cp1255)   */
     UC_CHARSET_SETUP_iso_8859_9;	  /* ISO 8859-9 (Latin 5) */
     UC_CHARSET_SETUP_iso_8859_10;	  /* ISO 8859-10	  */
 
     UC_CHARSET_SETUP_utf_8;		  /* UNICODE UTF-8	  */
-    UC_CHARSET_SETUP_mnemonic_ascii_0;	  /* RFC 1345 w/o Intro	  */
+    UC_CHARSET_SETUP_mnemonic_ascii_0;	  /* RFC 1345 w/o Intro   */
     UC_CHARSET_SETUP_mnemonic;		  /* RFC 1345 Mnemonic	  */
 #ifdef NOTDEFINED
     UC_CHARSET_SETUP_mnem;
 #endif /* NOTDEFINED */
+
+/*
+ *  To add synonyms for any charset name
+ *  check function UCGetLYhndl_byMIME in this file.
+ */
 }
diff --git a/src/chrtrans/README.format b/src/chrtrans/README.format
index 8c21714c..7afc1c68 100644
--- a/src/chrtrans/README.format
+++ b/src/chrtrans/README.format
@@ -45,7 +45,7 @@ b) directives:
 
     RawOrEnc
 	a number which flags some special property (encoding) for this
-        charset [see utf8.uni for example, see UCDefs.h for details].
+        charset [see utf8_uni.tbl for example, see UCDefs.h for details].
 
 c) character translation definitions:
    they look like
@@ -91,7 +91,8 @@ d) string replacement definitions:
 
   which would mean "Replace Unicode U+00cd (LATIN CAPITAL LETTER I WITH 
   ACUTE" with the string (consisting of two character) I' (if no other
-  translation is available)."
+  translation is available)."  Please note that replacement definitions
+  in certnain charset table will override ones from Default table.
 
   Note that everything after the ':' is currently taken VERBATIM, so
   careful with trailing blanks etc.
diff --git a/src/chrtrans/README.tables b/src/chrtrans/README.tables
index 7f095f2f..e6df45ef 100644
--- a/src/chrtrans/README.tables
+++ b/src/chrtrans/README.tables
@@ -1,7 +1,7 @@
 The translation table files in this directory are _examples only_.
-They were collected from several sources (among them Linux kbd package, 
-ftp://dkuug.dk/, ftp://unicode.org/) and automatically converted (if
-applicable), but not checked in detail.  The Unicode/UCS2 values
+They were collected from several sources (among them ftp://ftp.unicode.org,
+Linux kbd package, ftp://dkuug.dk/) and are believed to be correct
+in their mappings, but not checked in detail.  The Unicode/UCS2 values
 for some of the RFC 1345 Mnemonic codes are out of date, a cleanup and
 update would be needed for serious use (including removing the mappings
 from the "private zone" U+E000 etc.).
diff --git a/src/chrtrans/cp1253_uni.tbl b/src/chrtrans/cp1253_uni.tbl
index 83b85c56..097dae2b 100644
--- a/src/chrtrans/cp1253_uni.tbl
+++ b/src/chrtrans/cp1253_uni.tbl
@@ -152,6 +152,3 @@ OWinGreek (cp1253)
 0xFD	U+03CD	#GREEK SMALL LETTER UPSILON WITH TONOS
 0xFE	U+03CE	#GREEK SMALL LETTER OMEGA WITH TONOS
 #0xFF		#UNDEFINED
-
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/cp1255_uni.tbl b/src/chrtrans/cp1255_uni.tbl
index 47c58b6e..5f4d761a 100644
--- a/src/chrtrans/cp1255_uni.tbl
+++ b/src/chrtrans/cp1255_uni.tbl
@@ -152,6 +152,3 @@ OWinHebrew (cp1255)
 0xFD	U+200E	#LEFT-TO-RIGHT MARK
 0xFE	U+200F	#RIGHT-TO-LEFT MARK
 #0xFF		#UNDEFINED
-
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/cp1256_uni.tbl b/src/chrtrans/cp1256_uni.tbl
index 0f43728a..6d85d221 100644
--- a/src/chrtrans/cp1256_uni.tbl
+++ b/src/chrtrans/cp1256_uni.tbl
@@ -152,6 +152,3 @@ OWinArabic (cp1256)
 0xFD	U+200E	#LEFT-TO-RIGHT MARK
 0xFE	U+200F	#RIGHT-TO-LEFT MARK
 #0xFF		#UNDEFINED
-
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/cp437_uni.tbl b/src/chrtrans/cp437_uni.tbl
index 3e3188fb..ad8d9940 100644
--- a/src/chrtrans/cp437_uni.tbl
+++ b/src/chrtrans/cp437_uni.tbl
@@ -292,10 +292,3 @@ U+03cc:o'
 U+03cd:u'
 U+03ce:w'
 
-
-# TRADE MARK SIGN:
-U+2122:(TM)
-
-0x60    U+2018          # left single quotation mark
-0x27    U+2019-U+201b   # various single quotation marks
-0x22    U+201c-U+201f   # various double quotation marks
diff --git a/src/chrtrans/cp737_uni.tbl b/src/chrtrans/cp737_uni.tbl
index b1d44adf..32f01c8c 100644
--- a/src/chrtrans/cp737_uni.tbl
+++ b/src/chrtrans/cp737_uni.tbl
@@ -153,6 +153,3 @@ ODosGreek (cp737)
 0xfd	U+00b2	#SUPERSCRIPT TWO
 0xfe	U+25a0	#BLACK SQUARE
 0xff	U+00a0	#NO-BREAK SPACE
-
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/cp775_uni.tbl b/src/chrtrans/cp775_uni.tbl
index 7fbf3b82..02a8b61b 100644
--- a/src/chrtrans/cp775_uni.tbl
+++ b/src/chrtrans/cp775_uni.tbl
@@ -276,6 +276,3 @@ ODosBaltRim (cp775)
 0xfd	U+00b2	#SUPERSCRIPT TWO
 0xfe	U+25a0	#BLACK SQUARE
 0xff	U+00a0	#NO-BREAK SPACE
-
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/cp850_uni.tbl b/src/chrtrans/cp850_uni.tbl
index 85f9684a..8a191fb7 100644
--- a/src/chrtrans/cp850_uni.tbl
+++ b/src/chrtrans/cp850_uni.tbl
@@ -284,10 +284,3 @@ ODosLatin1 (cp850)
 0xfe	U+25a0	#BLACK SQUARE
 0xff	U+00a0	#NO-BREAK SPACE
 
-
-# TRADE MARK SIGN:
-U+2122:(TM)
-
-0x60    U+2018          # left single quotation mark
-0x27    U+2019-U+201b   # various single quotation marks
-0x22    U+201c-U+201f   # various double quotation marks
diff --git a/src/chrtrans/cp852_uni.tbl b/src/chrtrans/cp852_uni.tbl
index ec812352..0658d893 100644
--- a/src/chrtrans/cp852_uni.tbl
+++ b/src/chrtrans/cp852_uni.tbl
@@ -278,10 +278,3 @@ ODosLatin2 (cp852)
 0xfe    U+25a0  #BLACK SQUARE
 0xff    U+00a0  #NO-BREAK SPACE
 
-
-# TRADE MARK SIGN:
-U+2122:(TM)
-
-0x60    U+2018          # left single quotation mark
-0x27    U+2019-U+201b   # various single quotation marks
-0x22    U+201c-U+201f   # various double quotation marks
diff --git a/src/chrtrans/cp862_uni.tbl b/src/chrtrans/cp862_uni.tbl
index f1a7dd02..3d21c138 100644
--- a/src/chrtrans/cp862_uni.tbl
+++ b/src/chrtrans/cp862_uni.tbl
@@ -153,5 +153,3 @@ ODosHebrew (cp862)
 0xfe	U+25a0	#BLACK SQUARE
 0xff	U+00a0	#NO-BREAK SPACE
 
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/cp864_uni.tbl b/src/chrtrans/cp864_uni.tbl
index 14097a6e..d6e92431 100644
--- a/src/chrtrans/cp864_uni.tbl
+++ b/src/chrtrans/cp864_uni.tbl
@@ -153,5 +153,3 @@ ODosArabic (cp864)
 0xfe	U+25a0	#BLACK SQUARE
 #0xff		#UNDEFINED
 
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/cp869_uni.tbl b/src/chrtrans/cp869_uni.tbl
index 412fb8a7..21cdeb95 100644
--- a/src/chrtrans/cp869_uni.tbl
+++ b/src/chrtrans/cp869_uni.tbl
@@ -153,5 +153,3 @@ ODosGreek2 (cp869)
 0xfe	U+25a0	#BLACK SQUARE
 0xff	U+00a0	#NO-BREAK SPACE
 
-# TRADE MARK SIGN:
-U+2122:(TM)
diff --git a/src/chrtrans/def7_uni.tbl b/src/chrtrans/def7_uni.tbl
index 267fa751..880e932e 100644
--- a/src/chrtrans/def7_uni.tbl
+++ b/src/chrtrans/def7_uni.tbl
@@ -10,8 +10,8 @@ Mus-ascii
 D1
 
 
-# this letters should not normally pass here,
-# but may come from named and numbered entities:
+# us-ascii characters should not normally pass here,
+# they are always processed directly but let declare it here:
 0x20-0x7e  idem
 
 
@@ -92,60 +92,60 @@ U+00fc:u:
 0x79	U+00fd
 U+00fe:th
 0x79	U+00ff
-0x41	U+0100	U+0102	U+0104
-0x61	U+0101	U+0103	U+0105
-0x43	U+0106	U+0108	U+010a	U+010c
+0x41	U+0100	U+0102	U+0104			# A
+0x61	U+0101	U+0103	U+0105			# a
+0x43	U+0106	U+0108	U+010a	U+010c		# C
 # The following line is an example for mapping several accented versions
 # of small letter 'c' to 'c':
-0x63	U+0107	U+0109	U+010b	U+010d
+0x63	U+0107	U+0109	U+010b	U+010d		# c
 0x44	U+010e
 0x64	U+010f
 U+0110:D/
 U+0111:d/
-0x45	U+0112	U+0114	U+0116	U+0118	U+011a
-0x65	U+0113	U+0115	U+0117	U+0119	U+011b
-0x47	U+011c	U+011e	U+0120	U+0122
-0x67	U+011d	U+011f	U+0121	U+0123
+0x45	U+0112	U+0114	U+0116	U+0118	U+011a	# E
+0x65	U+0113	U+0115	U+0117	U+0119	U+011b	# e
+0x47	U+011c	U+011e	U+0120	U+0122		# G
+0x67	U+011d	U+011f	U+0121	U+0123		# g
 0x48	U+0124
 0x68	U+0125
 U+0126:H/
 0x48	U+0127 #	LATIN SMALL LETTER H BAR	-> H
-0x49	U+0128	U+012a	U+012c	U+012e	U+0130
-0x69	U+0129	U+012b	U+012d	U+012f	U+0131
+0x49	U+0128	U+012a	U+012c	U+012e	U+0130	# I
+0x69	U+0129	U+012b	U+012d	U+012f	U+0131	# i
 U+0132:IJ
 U+0133:ij
 0x4a	U+0134
 0x6a	U+0135
 0x4b	U+0136
-0x4b	U+0137
+0x6b	U+0137
 U+0138:kk
-0x4c	U+0139	U+013b	U+013d
-0x6c	U+013a	U+013c	U+013e
+0x4c	U+0139	U+013b	U+013d			# L
+0x6c	U+013a	U+013c	U+013e			# l
 U+013f:L.
 U+0140:l.
 U+0141:L/
 U+0142:l/
-0x4e	U+0143	U+0145	U+0147
-0x6e	U+0144	U+0146	U+0148
+0x4e	U+0143	U+0145	U+0147			# N
+0x6e	U+0144	U+0146	U+0148			# n
 U+0149:'n
 U+014a:NG
 0x4e	U+014B #	LATIN SMALL LETTER ENG	-> N
-0x4f	U+014c	U+014e
-0x6f	U+014d	U+014f
+0x4f	U+014c	U+014e				# O
+0x6f	U+014d	U+014f				# o
 U+0150:O"
 U+0151:o"
 U+0152:OE
 U+0153:oe
-0x52	U+0154	U+0156	U+0158
-0x72	U+0155	U+0157	U+0159
-0x53	U+015a	U+015c	U+015e	U+0160
-0x73	U+015b	U+015d	U+015f	U+0161
-0x54	U+0162	U+0164
-0x74	U+0163	U+0165
+0x52	U+0154	U+0156	U+0158			# R
+0x72	U+0155	U+0157	U+0159			# r
+0x53	U+015a	U+015c	U+015e	U+0160		# S
+0x73	U+015b	U+015d	U+015f	U+0161		# s
+0x54	U+0162	U+0164				# T
+0x74	U+0163	U+0165				# t
 U+0166:T/
 U+0167:t/
-0x55	U+0168	U+016a	U+016c	U+016e	U+0172
-0x75	U+0169	U+016b	U+016d	U+016f	U+0173
+0x55	U+0168	U+016a	U+016c	U+016e	U+0172	# U
+0x75	U+0169	U+016b	U+016d	U+016f	U+0173	# u
 U+0170:U"
 U+0171:u"
 0x57	U+0174
@@ -2168,9 +2168,9 @@ U+001f:US
 U+007f:DT
 U+0080:PA
 U+0081:HO
-# most of that characters (82-9F) processed in the code
-# as windows-1250,1252 if passed silently (HTTP default is iso-latin-1),
-# so should not happen:
+# most of this characters (82-9F) may be switched ON in the code
+# as windows-1252 if come silently (HTTP default is iso-latin-1,
+# but windows-1252 is superset of iso-latin-1)
 #U+0082:BH
 #U+0083:NH
 #U+0084:IN
diff --git a/src/chrtrans/koi8r_uni.tbl b/src/chrtrans/koi8r_uni.tbl
index ebe4fe55..09e8743c 100644
--- a/src/chrtrans/koi8r_uni.tbl
+++ b/src/chrtrans/koi8r_uni.tbl
@@ -6,6 +6,8 @@ Mkoi8-r
 
 0x20-0x7f       idem
 # Based on a table received from "Glenn E. Thobe" <thobe@lafn.org>
+# (verified against RFC1489).
+#
 #hex unicode # description     
 #--- U+---- # ---------------     
 0x80 U+2500 # FORMS LIGHT HORIZONTAL   
@@ -137,9 +139,3 @@ Mkoi8-r
 0xFE U+0427 # CAP CHE    
 0xFF U+042A # CAP HARD SIGN   
 
-# TRADE MARK SIGN:
-U+2122:(TM)
-
-0x60    U+2018          # left single quotation mark <`>
-0x27    U+2019-U+201b   # various single quotation marks <'>
-0x22    U+201c-U+201f   # various double quotation marks <">
diff --git a/src/chrtrans/mac_uni.tbl b/src/chrtrans/mac_uni.tbl
index 61c630f3..ea76d078 100644
--- a/src/chrtrans/mac_uni.tbl
+++ b/src/chrtrans/mac_uni.tbl
@@ -338,5 +338,3 @@ U+00FD:y'
 # small thorn, Icelandic (&#254;) - thorn
 U+00FE:p
 #
-# TRADE MARK SIGN
-U+2122:(TM)
diff --git a/src/chrtrans/next_uni.tbl b/src/chrtrans/next_uni.tbl
index 35ccf541..d2bc974f 100644
--- a/src/chrtrans/next_uni.tbl
+++ b/src/chrtrans/next_uni.tbl
@@ -174,9 +174,4 @@ ONeXT character set
 0xfd	U+00ff	# LATIN SMALL LETTER Y WITH DIAERESIS
 #0xfe	U+fffd	# .notdef, REPLACEMENT CHARACTER
 #0xff	U+fffd	# .notdef, REPLACEMENT CHARACTER
-#
-# degree sign (&#176;) - deg
-U+00B0:DEG
-#
-# TRADE MARK SIGN
-U+2122:(TM)
+
diff --git a/src/chrtrans/utf8_uni.tbl b/src/chrtrans/utf8_uni.tbl
index f65bef47..67ff3460 100644
--- a/src/chrtrans/utf8_uni.tbl
+++ b/src/chrtrans/utf8_uni.tbl
@@ -12,7 +12,7 @@ OUNICODE UTF-8
 # Some kind of raw Unicode?
 # Use 6 for for really "raw" 16bit UCS-2, 7 for UTF-8, ...
 
-# most of these codes currently don't make much sense in a *.uni file,
+# most of these codes currently don't make much sense in a *.tbl file,
 # but for completeness (from UCDefs.h):
 #  #define UCT_ENC_7BIT 0
 #  #define UCT_ENC_8BIT 1
diff --git a/src/chrtrans/viscii_uni.tbl b/src/chrtrans/viscii_uni.tbl
index 33677163..5b055856 100644
--- a/src/chrtrans/viscii_uni.tbl
+++ b/src/chrtrans/viscii_uni.tbl
@@ -18,7 +18,7 @@ OVietnamese (VISCII)
 # Special 'enc' flag to signal that some C0 characters are used.
 # Tables with R3 should properly map the allowed C0 control chars!
 #
-# most of these codes currently don't make much sense in a *.uni file,
+# most of these codes currently don't make much sense in a *.tbl file,
 # but for completeness (from UCDefs.h):
 #  #define UCT_ENC_7BIT 0
 #  #define UCT_ENC_8BIT 1
@@ -298,9 +298,3 @@ U+1ef6:Y?
 U+1ef8:Y~
 0xdb	U+1ef9
 
-# TRADE MARK SIGN:
-U+2122:(TM)
-
-0x60    U+2018          # left single quotation mark <`>
-0x27    U+2019-U+201b   # various single quotation marks <'>
-0x22    U+201c-U+201f   # various double quotation marks <">
diff --git a/src/makefile.dos b/src/makefile.dos
index 3ab548c0..ce485b18 100644
--- a/src/makefile.dos
+++ b/src/makefile.dos
@@ -12,7 +12,7 @@ LYStyle.o LYHash.o
 CFLAGS= $(MCFLAGS) -I.. $(SLANGINC)

 

 CC = gcc

-MCFLAGS = -O3 -DALT_CHAR_SET -DUSE_ZLIB -DUSE_EXTERNALS -DNCURSES_VERSION -DCOLOR_CURSES -DNCURSES -DFANCY_CURSES -DACCESS_AUTH -DNO_CUSERID -DNOUSERS -DDOSPATH -DNO_TTYTYPE -DNO_UTMP -Ichrtrans -I../WWW/library/implementation -I../curses  -I../djgpp/tcplib/include -I../djgpp/tcplib/include/tcp

+MCFLAGS = -O3 -DUSE_ZLIB -DUSE_EXTERNALS -DCOLOR_CURSES -DNCURSES -DFANCY_CURSES -DACCESS_AUTH -DNO_CUSERID -DNOUSERS -DDOSPATH -DNO_TTYTYPE -DNO_UTMP -Ichrtrans -I../WWW/library/implementation -I../curses  -I../djgpp/tcplib/include -I../djgpp/tcplib/include/tcp

 WWWLIB = ../WWW/library/djgpp/libwww.a ../curses/pdcurses.a ../djgpp/tcplib/obj/libtcp.a

 LIBS=-lz