From 6776e98cb4af2dc5e4cf4b767862ccfb270f0bdd Mon Sep 17 00:00:00 2001 From: konn Date: Fri, 30 Jan 2009 01:04:09 +0000 Subject: [PATCH] Merge branch 'branch_0.13.0' into branch_0.13.0-svn git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/branches/RELEASE_0_13_0@4631 1a406e8e-add9-4483-a2c8-d8cac5b7c224 --- src/chxj_encoding.c | 22 ++++++++++++++++++++-- src/chxj_tag_util.c | 23 ++++++++++++++++++++--- src/chxj_xhtml_mobile_1_0.c | 3 +-- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/chxj_encoding.c b/src/chxj_encoding.c index c068e953..2e8fd8d3 100644 --- a/src/chxj_encoding.c +++ b/src/chxj_encoding.c @@ -351,6 +351,8 @@ chxj_encoding_parameter(request_rec *r, const char *value, int xmlflag) char *val; char *vstat; char *param; + char *anchor_pos; + char *anchor; int use_amp_flag; @@ -358,10 +360,22 @@ chxj_encoding_parameter(request_rec *r, const char *value, int xmlflag) src = apr_pstrdup(r->pool, value); + anchor_pos = strchr(src, '#'); + if (anchor_pos) { + anchor_pos++; + anchor = apr_pstrdup(r->pool, anchor_pos); + anchor_pos--; + *anchor_pos = 0; + } + spos = strchr(src, '?'); if (!spos) { DBG(r, "REQ[%X] end chxj_encoding_parameter()", (unsigned int)(apr_size_t)r); - return src; + if (anchor_pos) { + return apr_pstrcat(r->pool, src, "#", anchor, NULL); + } else { + return src; + } } *spos++ = 0; @@ -433,7 +447,11 @@ 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); - return apr_pstrcat(r->pool, src_sv, "?", param, NULL); + if (anchor_pos) { + return apr_pstrcat(r->pool, src_sv, "?", param, "#", anchor, NULL); + } else { + return apr_pstrcat(r->pool, src_sv, "?", param, NULL); + } } diff --git a/src/chxj_tag_util.c b/src/chxj_tag_util.c index 6bee9832..ab4e6486 100644 --- a/src/chxj_tag_util.c +++ b/src/chxj_tag_util.c @@ -624,6 +624,9 @@ chxj_form_action_to_hidden_tag( for (;;) { char *pair = apr_strtok(s, "&", &pstat); if (! pair) break; + if (strncasecmp(pair, "amp;", 4) == 0) { + pair += 4; + } s = NULL; char *key = apr_strtok(pair, "=", &pstat2); char *val = ""; @@ -648,14 +651,28 @@ chxj_form_action_to_hidden_tag( else { if (! post || strcasecmp(key, "_chxj_cc") == 0 || strcasecmp(key, "_chxj_nc") == 0) { if (softbank) { - tmp = apr_psprintf(pool, "", chxj_jreserved_to_safe_tag(r, key, entryp), chxj_url_decode(pool, val), (xmlFlag == 1) ? " /" : ""); + tmp = apr_psprintf(pool, + "", + chxj_jreserved_to_safe_tag(r, + chxj_url_decode(pool, key), + entryp), + chxj_url_decode(pool, val), + (xmlFlag == 1) ? " /" : ""); } else { - tmp = apr_psprintf(pool, "", key, chxj_url_decode(pool, val), (xmlFlag == 1) ? " /" : ""); + tmp = apr_psprintf(pool, + "", + chxj_url_decode(pool, key), + chxj_url_decode(pool, val), + (xmlFlag == 1) ? " /" : ""); } } else { - tmp = apr_psprintf(pool, "", key, chxj_url_decode(pool, val), (xmlFlag == 1) ? " /" : ""); + tmp = apr_psprintf(pool, + "", + chxj_url_decode(pool, key), + chxj_url_decode(pool, val), + (xmlFlag == 1) ? " /" : ""); } if (result) { result = apr_pstrcat(pool, result, tmp, NULL); diff --git a/src/chxj_xhtml_mobile_1_0.c b/src/chxj_xhtml_mobile_1_0.c index 504a055d..57eef5e0 100644 --- a/src/chxj_xhtml_mobile_1_0.c +++ b/src/chxj_xhtml_mobile_1_0.c @@ -671,10 +671,9 @@ s_xhtml_search_emoji(xhtml_t *xhtml, char *txt, char **rslt) * @return The conversion result is returned. */ static char * -s_xhtml_1_0_start_html_tag(void *pdoc, Node *node) +s_xhtml_1_0_start_html_tag(void *pdoc, Node *UNUSED(node)) { xhtml_t *xhtml = GET_XHTML(pdoc); - Attr *attr; Doc *doc = xhtml->doc; /*--------------------------------------------------------------------------*/ -- 2.11.0