OSDN Git Service

<marquee /> -> <div /> for XHTML(i)
[modchxj/mod_chxj.git] / src / chxj_encoding.c
index 2e8fd8d..47f8976 100644 (file)
@@ -352,11 +352,11 @@ chxj_encoding_parameter(request_rec *r, const char *value, int xmlflag)
   char *vstat;
   char *param;
   char *anchor_pos;
-  char *anchor;
+  char *anchor = NULL;
 
   int   use_amp_flag;
   
-  DBG(r, "REQ[%X] start chxj_encoding_parameter()", (unsigned int)(apr_size_t)r);
+  DBG(r, "REQ[%X] start chxj_encoding_parameter()", TO_ADDR(r));
 
   src = apr_pstrdup(r->pool, value);
 
@@ -405,20 +405,32 @@ chxj_encoding_parameter(request_rec *r, const char *value, int xmlflag)
       pair = NULL;
     }
     if (key) {
+      apr_size_t klen = (apr_size_t)strlen(key);
       key = chxj_url_decode(r->pool, key);
       len = (apr_size_t)strlen(key);
-      key = chxj_encoding(r, key, &len);
+      if (klen != len) {
+        key = chxj_encoding(r, key, &len);
+        key = chxj_url_encode(r->pool, key);
+      }
+#if 0  /* XXX:2009/4/10 */
       key = chxj_url_encode(r->pool, key);
+#endif
     }
     val = apr_strtok(pair, "=", &vstat);
     if (! val && sep_pos) {
       val = apr_pstrdup(r->pool, "");
     }
     if (val) {
+      apr_size_t vlen = (apr_size_t)strlen(val);
       val = chxj_url_decode(r->pool, val);
       len = (apr_size_t)strlen(val);
-      val = chxj_encoding(r, val, &len);
+      if (vlen != len) {
+        val = chxj_encoding(r, val, &len);
+        val = chxj_url_encode(r->pool, val);
+      }
+#if 0  /* XXX:2009/4/10 */
       val = chxj_url_encode(r->pool, val);
+#endif
       if (strlen(param) == 0) {
         param = apr_pstrcat(r->pool, param, key, "=", val, NULL);
       }
@@ -445,7 +457,7 @@ chxj_encoding_parameter(request_rec *r, const char *value, int xmlflag)
       }
     }
   }
-  DBG(r, "REQ[%X] end   chxj_encoding_parameter()", (unsigned int)(apr_size_t)r);
+  DBG(r, "REQ[%X] end   chxj_encoding_parameter()", TO_ADDR(r));
 
   if (anchor_pos) {
     return apr_pstrcat(r->pool, src_sv, "?", param, "#", anchor, NULL);