OSDN Git Service

* Added test code of relative size specification for CHTML2.0 converter.
[modchxj/mod_chxj.git] / src / chxj_chtml20.c
index 18e790f..81569b0 100644 (file)
 
 
 #define GET_CHTML20(X) ((chtml20_t*)(X))
+#undef W_L
+#undef W_V
 #define W_L(X)          do { chtml20->out = BUFFERED_WRITE_LITERAL(chtml20->out, &doc->buf, (X)); } while(0)
 #define W_V(X)          do { chtml20->out = (X) ? BUFFERED_WRITE_VALUE(chtml20->out, &doc->buf, (X))  \
                                                   : BUFFERED_WRITE_LITERAL(chtml20->out, &doc->buf, ""); } while(0)
+#undef W_NLCODE
+#define W_NLCODE()     do { char *nlcode = TO_NLCODE(chtml20->conf); W_V(nlcode); } while (0)
 
 static char *s_chtml20_start_html_tag    (void *pdoc, Node *node);
 static char *s_chtml20_end_html_tag      (void *pdoc, Node *node);
@@ -395,18 +399,18 @@ tag_handler chtml20_handler[] = {
  * @return The character string after the converting is returned.
  */
 char *
-chxj_exchange_chtml20(
-  request_rec *r,
-  device_table *spec,
-  const char *src,
-  apr_size_t srclen,
-  apr_size_t *dstlen,
+chxj_convert_chtml20(
+  request_rec        *r,
+  device_table       *spec,
+  const char         *src,
+  apr_size_t         srclen,
+  apr_size_t         *dstlen,
   chxjconvrule_entry *entryp,
-  cookie_t *cookie
+  cookie_t           *cookie
 )
 {
-  char *dst = NULL;
-  char *ss;
+  char      *dst = NULL;
+  char      *ss;
   chtml20_t chtml20;
   Doc       doc;
 
@@ -452,7 +456,7 @@ chxj_exchange_chtml20(
   /*--------------------------------------------------------------------------*/
   /* It converts it from CHTML to CHTML.                                      */
   /*--------------------------------------------------------------------------*/
-  chxj_node_exchange(spec,r,(void *)&chtml20, &doc, qs_get_root(&doc), 0);
+  chxj_node_convert(spec,r,(void *)&chtml20, &doc, qs_get_root(&doc), 0);
   chtml20.out = chxj_buffered_write_flush(chtml20.out, &doc.buf);
   dst = apr_pstrdup(r->pool, chtml20.out);
   chxj_buffered_write_terminate(&doc.buf);
@@ -516,9 +520,9 @@ s_init_chtml20(chtml20_t *chtml20, Doc *doc, request_rec *r, device_table *spec)
 static int
 s_chtml20_search_emoji(chtml20_t *chtml20, char *txt, char **rslt)
 {
-  emoji_t *ee;
-  request_rec *r;
-  device_table *spec;
+  emoji_t       *ee;
+  request_rec   *r;
+  device_table  *spec;
   int           len;
 
   spec = chtml20->spec;
@@ -568,9 +572,9 @@ s_chtml20_search_emoji(chtml20_t *chtml20, char *txt, char **rslt)
 static char *
 s_chtml20_start_html_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  Doc *doc;
+  Doc         *doc;
   request_rec *r;
-  chtml20_t *chtml20;
+  chtml20_t   *chtml20;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -580,6 +584,7 @@ s_chtml20_start_html_tag(void *pdoc, Node *UNUSED(node))
   /* start HTML tag                                                           */
   /*--------------------------------------------------------------------------*/
   W_L("<html>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -604,6 +609,7 @@ s_chtml20_end_html_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</html>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -619,12 +625,12 @@ s_chtml20_end_html_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_meta_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
-  int content_type_flag;
-  int refresh_flag;
+  Attr        *attr;
+  int         content_type_flag;
+  int         refresh_flag;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -705,6 +711,8 @@ s_chtml20_start_meta_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -720,9 +728,7 @@ s_chtml20_start_meta_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_meta_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-
-  chtml20 = GET_CHTML20(pdoc);
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
 
   return chtml20->out;
 }
@@ -739,15 +745,15 @@ s_chtml20_end_meta_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_head_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
+  chtml20_t   *chtml20;
+  Doc         *doc;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
-  r       = doc->r;
 
   W_L("<head>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -763,8 +769,8 @@ s_chtml20_start_head_tag(void *pdoc, Node *UNUSED(node))
 static char *
 s_chtml20_end_head_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -772,6 +778,8 @@ s_chtml20_end_head_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</head>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -787,8 +795,8 @@ s_chtml20_end_head_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_title_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -796,6 +804,8 @@ s_chtml20_start_title_tag(void *pdoc, Node *UNUSED(node))
   r       = doc->r;
 
   W_L("<title>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -811,8 +821,8 @@ s_chtml20_start_title_tag(void *pdoc, Node *UNUSED(node))
 static char *
 s_chtml20_end_title_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -820,6 +830,8 @@ s_chtml20_end_title_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</title>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -835,10 +847,10 @@ s_chtml20_end_title_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_base_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -851,13 +863,8 @@ s_chtml20_start_base_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-
-    char *name;
-    char *value;
-
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
-
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('h','H',"href", name)) {
       W_L(" href=\"");
       W_V(value);
@@ -865,6 +872,8 @@ s_chtml20_start_base_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -880,8 +889,8 @@ s_chtml20_start_base_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_base_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -903,10 +912,10 @@ s_chtml20_end_base_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_body_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -919,12 +928,8 @@ s_chtml20_start_body_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char *name;
-    char *value;
-
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
-
+    char *name = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     switch(*name) {
     case 'b':
     case 'B':
@@ -987,6 +992,8 @@ s_chtml20_start_body_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1002,8 +1009,8 @@ s_chtml20_start_body_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_body_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1011,6 +1018,8 @@ s_chtml20_end_body_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</body>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1026,9 +1035,9 @@ s_chtml20_end_body_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_a_tag(void *pdoc, Node *node) 
 {
-  Attr *attr;
-  chtml20_t *chtml20;
-  Doc *doc;
+  Attr        *attr;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1042,13 +1051,8 @@ s_chtml20_start_a_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr; 
        attr = qs_get_next_attr(doc,attr)) {
-
-    char *name;
-    char *value;
-
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
-
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     switch(*name) {
     case 'n':
     case 'N':
@@ -1198,8 +1202,8 @@ s_chtml20_start_a_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_a_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1207,6 +1211,8 @@ s_chtml20_end_a_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</a>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1222,10 +1228,10 @@ s_chtml20_end_a_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_br_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -1238,12 +1244,8 @@ s_chtml20_start_br_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char *name;
-    char *value;
-
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
-
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('c','C',"clear",name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('a','A',"all",value))) {
         W_L(" clear=\"");
@@ -1253,6 +1255,8 @@ s_chtml20_start_br_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1268,8 +1272,8 @@ s_chtml20_start_br_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_br_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1291,8 +1295,8 @@ s_chtml20_end_br_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_tr_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1314,15 +1318,17 @@ s_chtml20_start_tr_tag(void *pdoc, Node *UNUSED(node))
 static char *
 s_chtml20_end_tr_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
   r       = doc->r;
 
-  W_L("<br>\r\n");
+  W_L("<br>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1338,37 +1344,30 @@ s_chtml20_end_tr_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_font_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
+  char        *color = NULL;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
   r       = doc->r;
 
 
-  W_L("<font");
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
   for (attr = qs_get_attr(doc,node);
-       attr
+       attr && color == NULL;
        attr = qs_get_next_attr(doc,attr)) {
-
-    char *name;
-    char *value;
-
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
-
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     switch(*name) {
     case 'c':
     case 'C':
-      if (strcasecmp(name, "color") == 0) {
-        W_L(" color=\"");
-        W_V(value);
-        W_L("\"");
+      if (strcasecmp(name, "color") == 0 && value && *value) {
+        color = apr_pstrdup(doc->buf.pool, value);
       }
       break;
 
@@ -1386,7 +1385,12 @@ s_chtml20_start_font_tag(void *pdoc, Node *node)
       break;
     }
   }
-  W_L(">");
+  if (color) {
+    W_L("<font color=\"");
+    W_V(color);
+    W_L("\">");
+    chtml20->font_flag++;
+  }
   return chtml20->out;
 }
 
@@ -1402,15 +1406,18 @@ s_chtml20_start_font_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_font_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
   r       = doc->r;
 
-  W_L("</font>");
+  if (chtml20->font_flag) {
+    W_L("</font>");
+    chtml20->font_flag--;
+  }
   return chtml20->out;
 }
 
@@ -1426,10 +1433,10 @@ s_chtml20_end_font_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_form_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -1442,13 +1449,8 @@ s_chtml20_start_form_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-
-    char *name;
-    char *value;
-
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
-
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     switch(*name) {
     case 'a':
     case 'A':
@@ -1492,6 +1494,8 @@ s_chtml20_start_form_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1507,8 +1511,8 @@ s_chtml20_start_form_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_form_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1516,6 +1520,8 @@ s_chtml20_end_form_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</form>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1531,17 +1537,17 @@ s_chtml20_end_form_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_input_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  char *max_length  = NULL;
-  char *type        = NULL;
-  char *name        = NULL;
-  char *value       = NULL;
-  char *istyle      = NULL;
-  char *size        = NULL;
-  char *checked     = NULL;
-  char *accesskey   = NULL;
+  char        *max_length  = NULL;
+  char        *type        = NULL;
+  char        *name        = NULL;
+  char        *value       = NULL;
+  char        *istyle      = NULL;
+  char        *size        = NULL;
+  char        *checked     = NULL;
+  char        *accesskey   = NULL;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -1552,7 +1558,6 @@ s_chtml20_start_input_tag(void *pdoc, Node *node)
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
-
   type       = qs_get_type_attr(doc, node, r);
   name       = qs_get_name_attr(doc, node, r);
   value      = qs_get_value_attr(doc,node,r);
@@ -1606,7 +1611,6 @@ s_chtml20_start_input_tag(void *pdoc, Node *node)
       W_L("\"");
     }
   }
-
   /*--------------------------------------------------------------------------*/
   /* The figure is default for the password.                                  */
   /*--------------------------------------------------------------------------*/
@@ -1623,11 +1627,12 @@ s_chtml20_start_input_tag(void *pdoc, Node *node)
       W_V(vv);
     }
   }
-
   if (checked) {
     W_L(" checked");
   }
   W_L(">");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1643,8 +1648,8 @@ s_chtml20_start_input_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_input_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1666,8 +1671,8 @@ s_chtml20_end_input_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_center_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1690,8 +1695,8 @@ s_chtml20_start_center_tag(void *pdoc, Node *UNUSED(node))
 static char *
 s_chtml20_end_center_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1699,6 +1704,8 @@ s_chtml20_end_center_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</center>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1714,8 +1721,8 @@ s_chtml20_end_center_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_ul_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1723,6 +1730,8 @@ s_chtml20_start_ul_tag(void *pdoc, Node *UNUSED(node))
   r       = doc->r;
 
   W_L("<ul>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1738,15 +1747,17 @@ s_chtml20_start_ul_tag(void *pdoc, Node *UNUSED(node))
 static char *
 s_chtml20_end_ul_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t*    chtml20;
-  Doc*          doc;
-  request_rec*  r;
+  chtml20_t     *chtml20;
+  Doc           *doc;
+  request_rec   *r;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
   r       = doc->r;
 
   W_L("</ul>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1762,10 +1773,10 @@ s_chtml20_end_ul_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_ol_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -1792,6 +1803,8 @@ s_chtml20_start_ol_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1807,8 +1820,8 @@ s_chtml20_start_ol_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_ol_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -1816,6 +1829,8 @@ s_chtml20_end_ol_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</ol>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -1831,10 +1846,10 @@ s_chtml20_end_ol_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_li_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -1892,10 +1907,10 @@ s_chtml20_end_li_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_hr_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -1906,13 +1921,8 @@ s_chtml20_start_hr_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr; 
        attr = qs_get_next_attr(doc,attr)) {
-
-    char *name;
-    char *value;
-
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
-
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     switch(*name) {
     case 'a':
     case 'A':
@@ -1981,6 +1991,7 @@ s_chtml20_start_hr_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -1996,14 +2007,7 @@ s_chtml20_start_hr_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_hr_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
-
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
   return chtml20->out;
 }
 
@@ -2019,10 +2023,10 @@ s_chtml20_end_hr_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_img_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-  Attr *attr;
+  chtml20_t    *chtml20;
+  Doc          *doc;
+  request_rec  *r;
+  Attr         *attr;
 #ifndef IMG_NOT_CONVERT_FILENAME
   device_table *spec;
 #endif
@@ -2088,14 +2092,21 @@ s_chtml20_start_img_tag(void *pdoc, Node *node)
         /*--------------------------------------------------------------------*/
         /* CHTML 1.0                                                          */
         /*--------------------------------------------------------------------*/
-        if (value && (STRCASEEQ('t','T',"top",   value) ||
-                      STRCASEEQ('m','M',"middle",value) ||
-                      STRCASEEQ('b','B',"bottom",value) ||
-                      STRCASEEQ('l','L',"left",  value) ||
-                      STRCASEEQ('r','R',"right", value))) {
-          W_L(" align=\"");
-          W_V(value);
-          W_L("\"");
+        if (value) {
+          if (STRCASEEQ('t','T',"top",   value) ||
+              STRCASEEQ('m','M',"middle",value) ||
+              STRCASEEQ('b','B',"bottom",value) ||
+              STRCASEEQ('l','L',"left",  value) ||
+              STRCASEEQ('r','R',"right", value)) {
+            W_L(" align=\"");
+            W_V(value);
+            W_L("\"");
+          }
+          else if (STRCASEEQ('c','C',"center",  value)) {
+            W_L(" align=\"");
+            W_L("middle");
+            W_L("\"");
+          }
         }
       }
       else if (strcasecmp(name, "alt"   ) == 0 && value && *value) {
@@ -2157,6 +2168,7 @@ s_chtml20_start_img_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2172,13 +2184,7 @@ s_chtml20_start_img_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_img_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
 
   return chtml20->out;
 }
@@ -2195,10 +2201,10 @@ s_chtml20_end_img_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_select_tag(void *pdoc, Node *child)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2263,6 +2269,7 @@ s_chtml20_start_select_tag(void *pdoc, Node *child)
     W_L(" multiple");
   }
   W_L(">");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2278,15 +2285,14 @@ s_chtml20_start_select_tag(void *pdoc, Node *child)
 static char *
 s_chtml20_end_select_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
+  chtml20_t   *chtml20;
+  Doc         *doc;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
-  r       = doc->r;
 
   W_L("</select>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2302,10 +2308,10 @@ s_chtml20_end_select_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_option_tag(void *pdoc, Node *child)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2318,13 +2324,8 @@ s_chtml20_start_option_tag(void *pdoc, Node *child)
   for (attr = qs_get_attr(doc,child);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-
-    char *nm;
-    char *val;
-
-    nm  = qs_get_attr_name(doc,attr);
-    val = qs_get_attr_value(doc,attr);
-
+    char *nm  = qs_get_attr_name(doc,attr);
+    char *val = qs_get_attr_value(doc,attr);
     switch(*nm) {
     case 's':
     case 'S':
@@ -2376,13 +2377,7 @@ s_chtml20_start_option_tag(void *pdoc, Node *child)
 static char *
 s_chtml20_end_option_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
 
   /* Don't close */
 
@@ -2401,29 +2396,24 @@ s_chtml20_end_option_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_div_tag(void *pdoc, Node *child)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
   r       = doc->r;
 
 
-  charalign   = NULL;
+  char *align   = NULL;
 
   W_L("<div");
   for (attr = qs_get_attr(doc,child);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-
-    char *nm;
-    char *val;
-
-    nm  = qs_get_attr_name(doc,attr);
-    val = qs_get_attr_value(doc,attr);
-
+    char *nm  = qs_get_attr_name(doc,attr);
+    char *val = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('a','A', "align", nm)) {
       /*----------------------------------------------------------------------*/
       /* CHTML 1.0 (W3C version 3.2)                                          */
@@ -2433,13 +2423,11 @@ s_chtml20_start_div_tag(void *pdoc, Node *child)
       }
     }
   }
-
   if (align) {
     W_L(" align=\"");
     W_V(align);
     W_L("\"");
   }
-
   W_L(">");
   return chtml20->out;
 }
@@ -2456,15 +2444,11 @@ s_chtml20_start_div_tag(void *pdoc, Node *child)
 static char *
 s_chtml20_end_div_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</div>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2480,10 +2464,10 @@ s_chtml20_end_div_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_h1_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2493,10 +2477,8 @@ s_chtml20_start_h1_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char* name;
-    char* value;
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('a','A',"align", name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('c','C',"center",value))) {
         W_L(" align=\"");
@@ -2522,15 +2504,14 @@ s_chtml20_start_h1_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_h1_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
+  chtml20_t   *chtml20;
+  Doc         *doc;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
-  r       = doc->r;
 
   W_L("</h1>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2546,10 +2527,10 @@ s_chtml20_end_h1_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_h2_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2559,10 +2540,8 @@ s_chtml20_start_h2_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char* name;
-    char* value;
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('a','A',"align", name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('c','C',"center",value))) {
         W_L(" align=\"");
@@ -2588,15 +2567,12 @@ s_chtml20_start_h2_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_h2_tag(void *pdoc, Node *UNUSED(child)) 
 { 
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</h2>");
+  W_NLCODE();
+
   return chtml20->out;
 }
 
@@ -2612,10 +2588,10 @@ s_chtml20_end_h2_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_h3_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2625,10 +2601,8 @@ s_chtml20_start_h3_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char* name;
-    char* value;
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('a','A',"align", name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('c','C',"center",value))) {
         W_L(" align=\"");
@@ -2654,15 +2628,11 @@ s_chtml20_start_h3_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_h3_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</h3>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2678,10 +2648,10 @@ s_chtml20_end_h3_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_h4_tag(void *pdoc, Node *node)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2691,10 +2661,8 @@ s_chtml20_start_h4_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char* name;
-    char* value;
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('a','A',"align", name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('c','C',"center",value))) {
         W_L(" align=\"");
@@ -2720,15 +2688,11 @@ s_chtml20_start_h4_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_h4_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</h4>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2744,10 +2708,10 @@ s_chtml20_end_h4_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_h5_tag(void *pdoc, Node *node)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2757,10 +2721,8 @@ s_chtml20_start_h5_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char *name;
-    char *value;
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('a','A',"align", name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('c','C',"center",value))) {
         W_L(" align=\"");
@@ -2786,15 +2748,11 @@ s_chtml20_start_h5_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_h5_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</h5>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2810,10 +2768,10 @@ s_chtml20_end_h5_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_h6_tag(void *pdoc, Node *node)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2823,10 +2781,8 @@ s_chtml20_start_h6_tag(void *pdoc, Node *node)
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
-    char *name;
-    char *value;
-    name  = qs_get_attr_name(doc,attr);
-    value = qs_get_attr_value(doc,attr);
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('a','A',"align", name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('c','C',"center",value))) {
         W_L(" align=\"");
@@ -2852,15 +2808,11 @@ s_chtml20_start_h6_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_h6_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</h6>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2876,16 +2828,12 @@ s_chtml20_end_h6_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_pre_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   chtml20->pre_flag++;
   W_L("<pre>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2901,15 +2849,11 @@ s_chtml20_start_pre_tag(void *pdoc, Node *UNUSED(node))
 static char *
 s_chtml20_end_pre_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</pre>");
+  W_NLCODE();
   chtml20->pre_flag--;
 
   return chtml20->out;
@@ -2927,11 +2871,11 @@ s_chtml20_end_pre_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_p_tag(void *pdoc, Node *node)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
-  char *align = NULL;
+  Attr        *attr;
+  char        *align = NULL;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -2959,6 +2903,7 @@ s_chtml20_start_p_tag(void *pdoc, Node *node)
     W_L("\"");
   }
   W_L(">");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2974,8 +2919,8 @@ s_chtml20_start_p_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_p_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -2983,6 +2928,7 @@ s_chtml20_end_p_tag(void *pdoc, Node *UNUSED(child))
   r       = doc->r;
 
   W_L("</p>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -2990,9 +2936,9 @@ s_chtml20_end_p_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_chxjif_tag(void *pdoc, Node *node)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  Node *child;
+  chtml20_t   *chtml20;
+  Doc         *doc;
+  Node        *child;
   request_rec *r;
 
   chtml20 = GET_CHTML20(pdoc);
@@ -3022,10 +2968,10 @@ s_chtml20_chxjif_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_start_textarea_tag(void *pdoc, Node *node) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  Attr *attr;
+  Attr        *attr;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -3089,6 +3035,7 @@ s_chtml20_start_textarea_tag(void *pdoc, Node *node)
     }
   }
   W_L(">");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3104,15 +3051,11 @@ s_chtml20_start_textarea_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_end_textarea_tag(void *pdoc, Node *UNUSED(child)) 
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  request_rec *r;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
-  r       = doc->r;
+  chtml20_t   *chtml20 = GET_CHTML20(pdoc);
+  Doc         *doc     = chtml20->doc;
 
   W_L("</textarea>");
+  W_NLCODE();
   chtml20->textarea_flag--;
 
   return chtml20->out;
@@ -3122,15 +3065,15 @@ s_chtml20_end_textarea_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_text_tag(void *pdoc, Node *child)
 {       
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t   *chtml20;
+  Doc         *doc;
   request_rec *r;
-  char *textval;
-  char *tmp;
-  char *tdst;
-  char one_byte[2];
-  int           ii;
-  int           tdst_len;
+  char        *textval;
+  char        *tmp;
+  char        *tdst;
+  char        one_byte[2];
+  int         ii;
+  int         tdst_len;
 
   chtml20 = GET_CHTML20(pdoc);
   doc     = chtml20->doc;
@@ -3149,7 +3092,7 @@ s_chtml20_text_tag(void *pdoc, Node *child)
   tdst_len = 0;
   
   for (ii=0; ii<qs_get_node_size(doc,child); ii++) {
-    charout;
+    char *out;
     int rtn = s_chtml20_search_emoji(chtml20, &textval[ii], &out);
     if (rtn != 0) {
       tdst = qs_out_apr_pstrcat(r, tdst, out, &tdst_len);
@@ -3195,11 +3138,10 @@ s_chtml20_text_tag(void *pdoc, Node *child)
 static char *
 s_chtml20_start_blockquote_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
   W_L("<blockquote>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3215,12 +3157,10 @@ s_chtml20_start_blockquote_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_end_blockquote_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
   W_L("</blockquote>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3236,11 +3176,10 @@ s_chtml20_end_blockquote_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_dir_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
   W_L("<dir>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3256,12 +3195,11 @@ s_chtml20_start_dir_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_end_dir_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
 
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
   W_L("</dir>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3277,11 +3215,10 @@ s_chtml20_end_dir_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_dl_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
   W_L("<dl>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3297,11 +3234,10 @@ s_chtml20_start_dl_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_end_dl_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
   W_L("</dl>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3317,10 +3253,8 @@ s_chtml20_end_dl_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_dt_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
   W_L("<dt>");
   return chtml20->out;
 }
@@ -3337,8 +3271,8 @@ s_chtml20_start_dt_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_end_dt_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  chtml20 = GET_CHTML20(pdoc);
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+
   return chtml20->out;
 }
 
@@ -3354,10 +3288,8 @@ s_chtml20_end_dt_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_dd_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
   W_L("<dd>");
   return chtml20->out;
 }
@@ -3374,8 +3306,8 @@ s_chtml20_start_dd_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_end_dd_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  chtml20 = GET_CHTML20(pdoc);
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+
   return chtml20->out;
 }
 
@@ -3391,11 +3323,11 @@ s_chtml20_end_dd_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_menu_tag(void *pdoc, Node *UNUSED(child))
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
+
   W_L("<menu>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3412,8 +3344,10 @@ static char *
 s_chtml20_end_menu_tag(void *pdoc, Node *UNUSED(child))
 {
   chtml20_t *chtml20 = GET_CHTML20(pdoc);
-  Doc *doc = chtml20->doc;
+  Doc       *doc = chtml20->doc;
+
   W_L("</menu>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3429,11 +3363,9 @@ s_chtml20_end_menu_tag(void *pdoc, Node *UNUSED(child))
 static char *
 s_chtml20_start_plaintext_tag(void *pdoc, Node *node)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
 
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
   W_L("<plaintext>");
   s_chtml20_start_plaintext_tag_inner(pdoc,node);
   return chtml20->out;
@@ -3442,11 +3374,10 @@ s_chtml20_start_plaintext_tag(void *pdoc, Node *node)
 static char *
 s_chtml20_start_plaintext_tag_inner(void *pdoc, Node *node)
 {
-  chtml20_t *chtml20;
-  Doc *doc;
-  Node *child;
-  chtml20 = GET_CHTML20(pdoc);
-  doc     = chtml20->doc;
+  chtml20_t *chtml20 = GET_CHTML20(pdoc);
+  Doc       *doc     = chtml20->doc;
+  Node      *child;
+
   for (child = qs_get_child_node(doc, node);
        child;
        child = qs_get_next_node(doc, child)) {
@@ -3484,7 +3415,7 @@ static char *
 s_chtml20_start_blink_tag(void *pdoc, Node *UNUSED(child))
 {
   chtml20_t *chtml20 = GET_CHTML20(pdoc);
-  Doc *doc = chtml20->doc;
+  Doc       *doc = chtml20->doc;
   W_L("<blink>");
   return chtml20->out;
 }
@@ -3502,8 +3433,9 @@ static char *
 s_chtml20_end_blink_tag(void *pdoc, Node *UNUSED(child))
 {
   chtml20_t *chtml20 = GET_CHTML20(pdoc);
-  Doc *doc = chtml20->doc;
+  Doc       *doc = chtml20->doc;
   W_L("</blink>");
+  W_NLCODE();
   return chtml20->out;
 }
 
@@ -3520,8 +3452,8 @@ static char *
 s_chtml20_start_marquee_tag(void *pdoc, Node *node)
 {
   chtml20_t *chtml20 = GET_CHTML20(pdoc);
-  Doc *doc = chtml20->doc;
-  Attr *attr;
+  Doc       *doc = chtml20->doc;
+  Attr      *attr;
   W_L("<marquee");
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
@@ -3570,8 +3502,9 @@ static char *
 s_chtml20_end_marquee_tag(void *pdoc, Node *UNUSED(child))
 {
   chtml20_t *chtml20 = GET_CHTML20(pdoc);
-  Doc *doc = chtml20->doc;
+  Doc       *doc = chtml20->doc;
   W_L("</marquee>");
+  W_NLCODE();
   return chtml20->out;
 }
 /*