OSDN Git Service

* Changed jreserved function for JXhtml converter.
authorAtsushi Konno <konn@users.sourceforge.jp>
Tue, 30 Dec 2008 19:15:39 +0000 (04:15 +0900)
committerAtsushi Konno <konn@users.sourceforge.jp>
Tue, 30 Dec 2008 19:15:39 +0000 (04:15 +0900)
include/chxj_jreserved_tag.h
src/chxj_jhtml.c
src/chxj_jreserved_tag.c
src/chxj_jxhtml.c

index f2d1caa..44b9e9e 100644 (file)
@@ -22,5 +22,5 @@
 extern char *chxj_jreserved_to_safe_tag(request_rec *r, const char *src, chxjconvrule_entry *entryp);
 extern char *chxj_safe_to_jreserved_tag(request_rec *r, const char *src);
 
-extern char *chxj_jreserved_tag_to_safe_for_query_string(request_rec *r, const char *query_string, chxjconvrule_entry *entryp);
+extern char *chxj_jreserved_tag_to_safe_for_query_string(request_rec *r, const char *query_string, chxjconvrule_entry *entryp, int xmlflag);
 #endif
index fe95dec..690c463 100644 (file)
@@ -1150,7 +1150,7 @@ s_jhtml_start_a_tag(void *pdoc, Node *node)
       value = chxj_encoding_parameter(r, value, 0);
       if (! chxj_starts_with(value, "mailto:") && ! chxj_starts_with(value, "tel:")) {
         value = chxj_add_cookie_parameter(r, value, jhtml->cookie);
-        value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp);
+        value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp, 0);
       }
       W_L(" href=\"");
       W_V(value);
@@ -2609,14 +2609,14 @@ s_jhtml_start_img_tag(void *pdoc, Node *node)
         /*--------------------------------------------------------------------*/
 #ifdef IMG_NOT_CONVERT_FILENAME
       value = chxj_encoding_parameter(r, value, 0);
-      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp);
+      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp, 0);
       value = chxj_add_cookie_parameter(r, value, jhtml->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
       attr_src = value;
 #else
       value = chxj_img_conv(r, spec, value);
       value = chxj_encoding_parameter(r, value, 0);
-      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp);
+      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp, 0);
       value = chxj_add_cookie_parameter(r, value, jhtml->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
       attr_src = value;
index 14c5266..77b9e5d 100644 (file)
@@ -154,7 +154,7 @@ chxj_safe_to_jreserved_tag(request_rec *r, const char *src)
 }
 
 char *
-chxj_jreserved_tag_to_safe_for_query_string(request_rec *r, const char *query_string, chxjconvrule_entry  *entryp)
+chxj_jreserved_tag_to_safe_for_query_string(request_rec *r, const char *query_string, chxjconvrule_entry  *entryp, int xmlflag)
 {
   apr_pool_t *pool;
   apr_pool_create(&pool, r->pool);
@@ -176,7 +176,13 @@ chxj_jreserved_tag_to_safe_for_query_string(request_rec *r, const char *query_st
   char *pstat;
   char *pstat2;
   for (;;) {
-    char *pair = apr_strtok(s, "&", &pstat);
+    char *pair = NULL;
+    if (xmlflag) {
+      pair = apr_strtok(s, "&amp;", &pstat);
+    }
+    else {
+      pair = apr_strtok(s, "&", &pstat);
+    }
     if (! pair) break;
     s = NULL;
     char *key = apr_strtok(pair, "=",  &pstat2);
@@ -192,7 +198,12 @@ chxj_jreserved_tag_to_safe_for_query_string(request_rec *r, const char *query_st
     else {
       tmp = apr_psprintf(pool, "%s=%s", chxj_jreserved_to_safe_tag(r, key, entryp), chxj_url_decode(pool, val));
       if (result) {
-        result = apr_pstrcat(pool, result, "&" ,tmp, NULL);
+        if (xmlflag) {
+          result = apr_pstrcat(pool, result, "&amp;" ,tmp, NULL);
+        }
+        else {
+          result = apr_pstrcat(pool, result, "&" ,tmp, NULL);
+        }
       }
       else {
         result = tmp;
index c012f31..e942bad 100644 (file)
@@ -1137,7 +1137,7 @@ s_jxhtml_start_a_tag(void *pdoc, Node *node)
       /*----------------------------------------------------------------------*/
       value = chxj_encoding_parameter(r, value, 1);
       if (! chxj_starts_with(value, "mailto:") && ! chxj_starts_with(value, "tel:")) {
-        value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp);
+        value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp, 1);
       }
       W_L(" href=\"");
       W_V(value);
@@ -1834,7 +1834,7 @@ s_jxhtml_start_input_tag(void *pdoc, Node *node)
   }
   if (attr_name) {
     W_L(" name=\"");
-    W_V(attr_name);
+    W_V(chxj_jreserved_to_safe_tag(r, attr_name, jxhtml->entryp));
     W_L("\"");
   }
   if (attr_value) {
@@ -2840,13 +2840,13 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
       /*----------------------------------------------------------------------*/
 #ifdef IMG_NOT_CONVERT_FILENAME
       value = chxj_encoding_parameter(r, value, 1);
-      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp);
+      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp, 1);
       value = chxj_add_cookie_no_update_parameter(r, value);
       attr_src = value;
 #else
       value = chxj_img_conv(r, spec, value);
       value = chxj_encoding_parameter(r, value, 1);
-      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp);
+      value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp, 1);
       value = chxj_add_cookie_no_update_parameter(r, value);
       attr_src = value;
 #endif