+libapache2-mod-chxj (0.12.32-1) unstable; urgency=low
+
+ * Added new features.
+ - Added EmojiOnly Option for ChxjConvertRule directive.
+ * Fixed bug.
+ - The conversion of QUERY_STRING in a tag is invalid.
+ - The conversion of QUERY_STRING in form tag is invalid.
+
+ -- Atsushi Konno <konn@users.sourceforge.jp> Wed, 4 Mar 2009 01:02:19 +0900
+
libapache2-mod-chxj (0.12.31-1) unstable; urgency=low
* Added new features.
+libapache2-mod-chxj (0.12.32-1) unstable; urgency=low
+
+ * Added new features.
+ - Added EmojiOnly Option for ChxjConvertRule directive.
+ * Fixed bug.
+ - The conversion of QUERY_STRING in a tag is invalid.
+ - The conversion of QUERY_STRING in form tag is invalid.
+
+ -- Atsushi Konno <konn@users.sourceforge.jp> Wed, 4 Mar 2009 01:02:19 +0900
+
libapache2-mod-chxj (0.12.31-1) unstable; urgency=low
* Added new features.
+libapache2-mod-chxj (0.12.32-1) unstable; urgency=low
+
+ * Added new features.
+ - Added EmojiOnly Option for ChxjConvertRule directive.
+ * Fixed bug.
+ - The conversion of QUERY_STRING in a tag is invalid.
+ - The conversion of QUERY_STRING in form tag is invalid.
+
+ -- Atsushi Konno <konn@users.sourceforge.jp> Wed, 4 Mar 2009 01:02:19 +0900
+
libapache2-mod-chxj (0.12.31-1) unstable; urgency=low
* Added new features.
DoCoMo/2.0 F01A(c100;TB;W30H22)
DoCoMo/2.0 F01A(c100;TB;W30H15)
DoCoMo/2.0 F01A(c100;TB;W17H12)
- DoCoMo/2.0 F01A(c100;TB;W17H8)
DoCoMo/2.0 F01A(c100;TB;W40H29)
DoCoMo/2.0 F01A(c100;TB;W40H20)
DoCoMo/2.0 F01A(c100;SD)
DoCoMo/2.0 F01A(c100;TC;W30H22)
DoCoMo/2.0 F01A(c100;TC;W30H15)
DoCoMo/2.0 F01A(c100;TC;W17H12)
- DoCoMo/2.0 F01A(c100;TC;W17H8)
DoCoMo/2.0 F01A(c100;TC;W40H29)
DoCoMo/2.0 F01A(c100;TC;W40H20)
-->
<dpi_heigh>96</dpi_heigh>
</device>
+ <!--
+ P-01A
+ DoCoMo/2.0 P01A(c100;SD)
+ DoCoMo/2.0 P01A(c100;SJ)
+ DoCoMo/2.0 P01A(c100;TB;W16H10)
+ DoCoMo/2.0 P01A(c100;TB;W20H13)
+ DoCoMo/2.0 P01A(c100;TB;W24H13)
+ DoCoMo/2.0 P01A(c100;TB;W24H15)
+ DoCoMo/2.0 P01A(c100;TB;W30H19)
+ DoCoMo/2.0 P01A(c100;TC;W16H10)
+ DoCoMo/2.0 P01A(c100;TC;W20H13)
+ DoCoMo/2.0 P01A(c100;TC;W24H13)
+ DoCoMo/2.0 P01A(c100;TC;W24H15)
+ DoCoMo/2.0 P01A(c100;TC;W30H19)
+ DoCoMo/2.0 P01A(c100;TD)
+ DoCoMo/2.0 P01A(c100;TJ)
+ -->
+ <device>
+ <device_id>P01A</device_id>
+ <device_name>DoCoMo P-01A</device_name>
+ <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+ <width>240</width>
+ <heigh>350</heigh>
+ <gif>true</gif>
+ <jpeg>true</jpeg>
+ <png>false</png>
+ <bmp2>false</bmp2>
+ <bmp4>false</bmp4>
+ <color>262144</color>
+ <emoji_type></emoji_type>
+ <wp_width>480</wp_width>
+ <wp_heigh>854</wp_heigh>
+ <cache>102400</cache>
+ <dpi_width>96</dpi_width>
+ <dpi_heigh>96</dpi_heigh>
+ </device>
+
+ <!--
+ SH-01A
+ DoCoMo/2.0 SH01A(c100;SD)
+ DoCoMo/2.0 SH01A(c100;SJ)
+ DoCoMo/2.0 SH01A(c100;TB;W16H08)
+ DoCoMo/2.0 SH01A(c100;TB;W16H10)
+ DoCoMo/2.0 SH01A(c100;TB;W20H10)
+ DoCoMo/2.0 SH01A(c100;TB;W20H13)
+ DoCoMo/2.0 SH01A(c100;TB;W24H12)
+ DoCoMo/2.0 SH01A(c100;TB;W24H16)
+ DoCoMo/2.0 SH01A(c100;TB;W30H15)
+ DoCoMo/2.0 SH01A(c100;TB;W30H20)
+ DoCoMo/2.0 SH01A(c100;TC;W16H08)
+ DoCoMo/2.0 SH01A(c100;TC;W16H10)
+ DoCoMo/2.0 SH01A(c100;TC;W20H10)
+ DoCoMo/2.0 SH01A(c100;TC;W20H13)
+ DoCoMo/2.0 SH01A(c100;TC;W24H12)
+ DoCoMo/2.0 SH01A(c100;TC;W24H16)
+ DoCoMo/2.0 SH01A(c100;TC;W30H15)
+ DoCoMo/2.0 SH01A(c100;TC;W30H20)
+ DoCoMo/2.0 SH01A(c100;TD)
+ DoCoMo/2.0 SH01A(c100;TJ)
+ -->
+ <device>
+ <device_id>SH01A</device_id>
+ <device_name>DoCoMo SH-01A</device_name>
+ <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+ <width>240</width>
+ <heigh>320</heigh>
+ <gif>true</gif>
+ <jpeg>true</jpeg>
+ <png>false</png>
+ <bmp2>false</bmp2>
+ <bmp4>false</bmp4>
+ <color>16777216</color>
+ <emoji_type></emoji_type>
+ <wp_width>480</wp_width>
+ <wp_heigh>854</wp_heigh>
+ <cache>102400</cache>
+ <dpi_width>96</dpi_width>
+ <dpi_heigh>96</dpi_heigh>
+ </device>
+
+
+
+ <!--
+ N-03A
+ DoCoMo/2.0 N03A(c100;TB;W16H10)
+ DoCoMo/2.0 N03A(c100;TB;W20H13)
+ DoCoMo/2.0 N03A(c100;TB;W24H16)
+ DoCoMo/2.0 N03A(c100;TB;W30H20)
+ DoCoMo/2.0 N03A(c100;TC;W16H10)
+ DoCoMo/2.0 N03A(c100;TC;W20H13)
+ DoCoMo/2.0 N03A(c100;TC;W24H16)
+ DoCoMo/2.0 N03A(c100;TC;W30H20)
+ DoCoMo/2.0 N03A(c100;TD)
+ DoCoMo/2.0 N03A(c100;TJ)
+ -->
+ <device>
+ <device_id>N03A</device_id>
+ <device_name>DoCoMo N-03A</device_name>
+ <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.1/IXHTML2.2 -->
+ <width>240</width>
+ <heigh>320</heigh>
+ <gif>true</gif>
+ <jpeg>true</jpeg>
+ <png>false</png>
+ <bmp2>false</bmp2>
+ <bmp4>false</bmp4>
+ <color>262144</color>
+ <emoji_type></emoji_type>
+ <wp_width>240</wp_width>
+ <wp_heigh>427</wp_heigh>
+ <cache>102400</cache>
+ <dpi_width>96</dpi_width>
+ <dpi_heigh>96</dpi_heigh>
+ </device>
+
+
+ <!--
+ N-01A
+ DoCoMo/2.0 N01A(c100;SD)
+ DoCoMo/2.0 N01A(c100;SJ)
+ DoCoMo/2.0 N01A(c100;TB;W16H10)
+ DoCoMo/2.0 N01A(c100;TB;W16H8)
+ DoCoMo/2.0 N01A(c100;TB;W20H10)
+ DoCoMo/2.0 N01A(c100;TB;W20H13)
+ DoCoMo/2.0 N01A(c100;TB;W24H12)
+ DoCoMo/2.0 N01A(c100;TB;W24H16)
+ DoCoMo/2.0 N01A(c100;TB;W30H15)
+ DoCoMo/2.0 N01A(c100;TB;W30H20)
+ DoCoMo/2.0 N01A(c100;TC;W16H10)
+ DoCoMo/2.0 N01A(c100;TC;W20H10)
+ DoCoMo/2.0 N01A(c100;TC;W20H13)
+ DoCoMo/2.0 N01A(c100;TC;W24H12)
+ DoCoMo/2.0 N01A(c100;TC;W24H16)
+ DoCoMo/2.0 N01A(c100;TC;W30H15)
+ DoCoMo/2.0 N01A(c100;TC;W30H20)
+ DoCoMo/2.0 N01A(c100;TD)
+ DoCoMo/2.0 N01A(c100;TJ)
+ -->
+ <device>
+ <device_id>N01A</device_id>
+ <device_name>DoCoMo N-01A</device_name>
+ <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+ <width>240</width>
+ <heigh>320</heigh>
+ <gif>true</gif>
+ <jpeg>true</jpeg>
+ <png>false</png>
+ <bmp2>false</bmp2>
+ <bmp4>false</bmp4>
+ <color>262144</color>
+ <emoji_type></emoji_type>
+ <wp_width>280</wp_width>
+ <wp_heigh>854</wp_heigh>
+ <cache>102400</cache>
+ <dpi_width>96</dpi_width>
+ <dpi_heigh>96</dpi_heigh>
+ </device>
+
+
+ <device>
+ <device_id>UNKNOWN_DEVICE</device_id>
+ <device_name>UNKNOWN DoCoMo Device</device_name>
+ <html_spec_type>CHTML_3_0</html_spec_type>
+ <width>118</width>
+ <heigh>128</heigh>
+ <gif>true</gif>
+ <jpeg>false</jpeg>
+ <png>false</png>
+ <bmp2>false</bmp2>
+ <bmp4>false</bmp4>
+ <color>4096</color>
+ <emoji_type></emoji_type>
+
+ <wp_width>120</wp_width>
+ <wp_heigh>130</wp_heigh>
+ <cache>100000</cache>
+ <dpi_width>96</dpi_width>
+ <dpi_heigh>96</dpi_heigh>
+ </device>
+
</user_agent>
chxjconvrule_entry *entryp,
cookie_t *cookie);
+
+extern char *chxj_chtml10_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
chxjconvrule_entry *entryp,
cookie_t *cookie);
+extern char *chxj_chtml20_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
chxjconvrule_entry *entryp,
cookie_t *cookie);
+
+extern char *chxj_chtml30_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
chxjconvrule_entry *entryp,
cookie_t *cookie);
+extern char *chxj_chtml40_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
chxjconvrule_entry *entryp,
cookie_t *cookie);
+
+extern char *chxj_chtml50_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
chxjconvrule_entry *entryp,
cookie_t *cookie);
+
+extern char *chxj_jhtml_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
chxjconvrule_entry *entryp,
cookie_t *cookie);
+
+extern char *chxj_jxhtml_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
struct converter_t {
/* convert routine */
- char* (*converter)(request_rec *r,
+ char *(*converter)(request_rec *r,
struct device_table_t *spec,
const char *src,
apr_size_t srclen,
struct chxjconvrule_entry *entryp,
cookie_t *cookie);
- char* (*encoder)(request_rec *r,
+ char *(*encoder)(request_rec *r,
const char *src,
apr_size_t *len);
+
+
+ char *(*emoji_only_converter)(
+ request_rec *r,
+ struct device_table_t *spec,
+ const char *src,
+ apr_size_t len);
};
extern converter_t convert_routine[];
chxjconvrule_entry *entryp,
cookie_t *cookie);
+
+extern char *chxj_xhtml_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len);
+
#endif
#define CONVRULE_QSCONV_OFF_BIT (0x00000200)
#define CONVRULE_JRCONV_OFF_BIT (0x00000400)
#define CONVRULE_NOCACHE_ON_BIT (0x00000800)
+#define CONVRULE_EMOJI_ONLY_BIT (0x00001000)
#define CONVRULE_ENGINE_ON_CMD "EngineOn"
#define CONVRULE_ENGINE_OFF_CMD "EngineOff"
#define CONVRULE_QSCONV_OFF_CMD "QSConvOff"
#define CONVRULE_JRCONV_OFF_CMD "JRConvOff"
#define CONVRULE_NOCACHE_ON_CMD "NoCacheOn"
+#define CONVRULE_EMOJI_ONLY_CMD "EmojiOnly"
#define CONVRULE_FLAG_NOTMATCH (0x00000001)
&& strlen(ee->imode->string) > 0
&& *ee->imode->string == *txt
&& strncasecmp(ee->imode->string, txt, strlen(ee->imode->string)) == 0) {
- if (!spec || !spec->emoji_type) {
- *rslt = apr_palloc(r->pool, 3);
- (*rslt)[0] = ee->imode->hex1byte & 0xff;
- (*rslt)[1] = ee->imode->hex2byte & 0xff;
- (*rslt)[2] = 0;
- return strlen(ee->imode->string);
- }
-
- return 0;
+ *rslt = apr_palloc(r->pool, 3);
+ (*rslt)[0] = ee->imode->hex1byte & 0xff;
+ (*rslt)[1] = ee->imode->hex2byte & 0xff;
+ (*rslt)[2] = 0;
+ return strlen(ee->imode->string);
}
}
return 0;
}
+char *
+chxj_chtml10_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ chtml10_t __chtml10;
+ chtml10_t *chtml10;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ chtml10 = &__chtml10;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_chtml10_emoji_only_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(chtml10, 0, sizeof(chtml10_t));
+
+ doc->r = r;
+ chtml10->doc = doc;
+ chtml10->spec = spec;
+ chtml10->out = qs_alloc_zero_byte_string(r->pool);
+ chtml10->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ chtml10->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_chtml10_search_emoji(chtml10, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+
+ chtml10->out = chxj_buffered_write_flush(chtml10->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_chtml10_emoji_only_converter()", (apr_size_t)(unsigned int)r);
+ return chtml10->out;
+}
+
/**
* It is a handler who processes the HTML tag.
return 0;
}
+char *
+chxj_chtml20_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ chtml20_t __chtml20;
+ chtml20_t *chtml20;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ chtml20 = &__chtml20;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_chtml20_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(chtml20, 0, sizeof(chtml20_t));
+
+ doc->r = r;
+ chtml20->doc = doc;
+ chtml20->spec = spec;
+ chtml20->out = qs_alloc_zero_byte_string(r->pool);
+ chtml20->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ chtml20->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_chtml20_search_emoji(chtml20, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+ chtml20->out = chxj_buffered_write_flush(chtml20->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_chtml20_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ return chtml20->out;
+}
+
/**
* It is a handler who processes the HTML tag.
}
+char *
+chxj_chtml30_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ chtml30_t __chtml30;
+ chtml30_t *chtml30;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ chtml30 = &__chtml30;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_chtml30_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(chtml30, 0, sizeof(chtml30_t));
+
+ doc->r = r;
+ chtml30->doc = doc;
+ chtml30->spec = spec;
+ chtml30->out = qs_alloc_zero_byte_string(r->pool);
+ chtml30->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ chtml30->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_chtml30_search_emoji(chtml30, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+ chtml30->out = chxj_buffered_write_flush(chtml30->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_chtml30_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ return chtml30->out;
+}
+
+
/**
* It is a handler who processes the HTML tag.
*
}
+char *
+chxj_chtml40_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ chtml40_t __chtml40;
+ chtml40_t *chtml40;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ chtml40 = &__chtml40;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_chtml40_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(chtml40, 0, sizeof(chtml40_t));
+
+ doc->r = r;
+ chtml40->doc = doc;
+ chtml40->spec = spec;
+ chtml40->out = qs_alloc_zero_byte_string(r->pool);
+ chtml40->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ chtml40->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_chtml40_search_emoji(chtml40, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+ chtml40->out = chxj_buffered_write_flush(chtml40->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_chtml40_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ return chtml40->out;
+}
+
+
/**
* It is a handler who processes the HTML tag.
*
}
+char *
+chxj_chtml50_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ chtml50_t __chtml50;
+ chtml50_t *chtml50;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ chtml50 = &__chtml50;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_chtml50_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(chtml50, 0, sizeof(chtml50_t));
+
+ doc->r = r;
+ chtml50->doc = doc;
+ chtml50->spec = spec;
+ chtml50->out = qs_alloc_zero_byte_string(r->pool);
+ chtml50->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ chtml50->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_chtml50_search_emoji(chtml50, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+ chtml50->out = chxj_buffered_write_flush(chtml50->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_chtml50_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ return chtml50->out;
+}
+
+
/**
* It is a handler who processes the HTML tag.
*
}
+char *
+chxj_jhtml_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ jhtml_t __jhtml;
+ jhtml_t *jhtml;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ jhtml = &__jhtml;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_jhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(jhtml, 0, sizeof(jhtml_t));
+
+ doc->r = r;
+ jhtml->doc = doc;
+ jhtml->spec = spec;
+ jhtml->out = qs_alloc_zero_byte_string(r->pool);
+ jhtml->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ jhtml->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_jhtml_search_emoji(jhtml, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+ jhtml->out = chxj_buffered_write_flush(jhtml->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_jhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ return jhtml->out;
+}
+
+
/**
* It is a handler who processes the HTML tag.
*
}
+char *
+chxj_jxhtml_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ jxhtml_t __jxhtml;
+ jxhtml_t *jxhtml;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ jxhtml = &__jxhtml;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_jxhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(jxhtml, 0, sizeof(jxhtml_t));
+
+ doc->r = r;
+ jxhtml->doc = doc;
+ jxhtml->spec = spec;
+ jxhtml->out = qs_alloc_zero_byte_string(r->pool);
+ jxhtml->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ jxhtml->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_jxhtml_search_emoji(jxhtml, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+ jxhtml->out = chxj_buffered_write_flush(jxhtml->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_jxhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ return jxhtml->out;
+}
+
+
/**
* It is a handler who processes the HTML tag.
*
if ((*name == 'l' || *name == 'L') && strcasecmp(name, "lang") == 0) {
DBG(r, "lang found [%s] spec [%d]", value, spec->html_spec_type);
-
- if (STRCASEEQ('x','X',"xhtml",value)) {
+ if (STRCASEEQ('a','A',"all",value)) {
+ return 1;
+ }
+ else if (STRCASEEQ('x','X',"xhtml",value)) {
if (spec->html_spec_type == CHXJ_SPEC_XHtml_Mobile_1_0) {
/* Yes , it is mine */
return 1;
}
+char *
+chxj_xhtml_emoji_only_converter(request_rec *r, device_table *spec, const char *src, apr_size_t len)
+{
+ apr_size_t ii;
+ Doc __doc;
+ Doc *doc;
+ xhtml_t __xhtml;
+ xhtml_t *xhtml;
+ char one_byte[2];
+ char two_byte[3];
+ apr_pool_t *pool;
+
+ xhtml = &__xhtml;
+ doc = &__doc;
+
+ DBG(r, "REQ[%X] start chxj_xhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ memset(doc, 0, sizeof(Doc));
+ memset(xhtml, 0, sizeof(xhtml_t));
+
+ doc->r = r;
+ xhtml->doc = doc;
+ xhtml->spec = spec;
+ xhtml->out = qs_alloc_zero_byte_string(r->pool);
+ xhtml->conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+ xhtml->doc->parse_mode = PARSE_MODE_CHTML;
+
+ apr_pool_create(&pool, r->pool);
+
+ chxj_buffered_write_init(pool, &doc->buf);
+
+ for (ii=0; ii<len; ii++) {
+ char *out;
+ int rtn;
+
+ rtn = s_xhtml_search_emoji(xhtml, (char *)&src[ii], &out);
+ if (rtn) {
+ W_V(out);
+ ii+=(rtn - 1);
+ continue;
+ }
+
+ if (is_sjis_kanji(src[ii])) {
+ two_byte[0] = src[ii+0];
+ two_byte[1] = src[ii+1];
+ two_byte[2] = 0;
+ W_V(two_byte);
+ ii++;
+ }
+ else {
+ one_byte[0] = src[ii+0];
+ one_byte[1] = 0;
+ W_V(one_byte);
+ }
+ }
+ xhtml->out = chxj_buffered_write_flush(xhtml->out, &doc->buf);
+
+ DBG(r, "REQ[%X] end chxj_xhtml_emoji_eonly_converter()", (apr_size_t)(unsigned int)r);
+ return xhtml->out;
+}
+
+
/**
* It is a handler who processes the HTML tag.
*
converter_t convert_routine[] = {
{
/* CHXJ_SPEC_UNKNOWN */
- .converter = NULL,
- .encoder = NULL,
+ .converter = NULL,
+ .encoder = NULL,
+ .emoji_only_converter = NULL,
},
{
/* CHXJ_SPEC_Chtml_1_0 */
- .converter = chxj_convert_chtml10,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_chtml10,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_chtml10_emoji_only_converter,
},
{
/* CHXJ_SPEC_Chtml_2_0 */
- .converter = chxj_convert_chtml20,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_chtml20,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_chtml20_emoji_only_converter,
},
{
/* CHXJ_SPEC_Chtml_3_0 */
- .converter = chxj_convert_chtml30,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_chtml30,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_chtml30_emoji_only_converter,
},
{
/* CHXJ_SPEC_Chtml_4_0 */
- .converter = chxj_convert_chtml40,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_chtml40,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_chtml40_emoji_only_converter,
},
{
/* CHXJ_SPEC_Chtml_5_0 */
- .converter = chxj_convert_chtml50,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_chtml50,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_chtml50_emoji_only_converter,
},
{
/* CHXJ_SPEC_Chtml_6_0 */
.converter = chxj_convert_ixhtml10,
.encoder = chxj_encoding,
+ .emoji_only_converter = chxj_chtml50_emoji_only_converter, /* XXX: TODO */
},
{
/* CHXJ_SPEC_Chtml_7_0 */
.converter = chxj_convert_ixhtml10,
.encoder = chxj_encoding,
+ .emoji_only_converter = chxj_chtml50_emoji_only_converter, /* XXX: TODO */
},
{
/* CHXJ_SPEC_XHtml_Mobile_1_0 */
- .converter = chxj_convert_xhtml_mobile_1_0,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_xhtml_mobile_1_0,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_xhtml_emoji_only_converter,
},
{
/* CHXJ_SPEC_Hdml */
- .converter = chxj_convert_hdml,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_hdml,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = NULL,
},
{
/* CHXJ_SPEC_Jhtml */
- .converter = chxj_convert_jhtml,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_jhtml,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_jhtml_emoji_only_converter,
},
{
/* CHXJ_SPEC_Jxhtml */
- .converter = chxj_convert_jxhtml,
- .encoder = chxj_encoding,
+ .converter = chxj_convert_jxhtml,
+ .encoder = chxj_encoding,
+ .emoji_only_converter = chxj_jxhtml_emoji_only_converter,
},
{
/* CHXJ_SPEC_HTML */
.converter = NULL,
.encoder = NULL,
+ .emoji_only_converter = NULL,
},
};
DBG(r, "REQ[%X] end chxj_headers_fixup() (no pattern)", (unsigned int)(apr_size_t)r);
return DECLINED;
}
- if (!entryp || !(entryp->action & CONVRULE_ENGINE_ON_BIT)) {
+ if (!(entryp->action & CONVRULE_ENGINE_ON_BIT)) {
DBG(r, "REQ[%X] end chxj_headers_fixup() (engine off)", (unsigned int)(apr_size_t)r);
return DECLINED;
}
+ if (entryp->action & CONVRULE_EMOJI_ONLY_BIT) {
+ DBG(r, "REQ[%X] end chxj_headers_fixup() (emoji only)", (unsigned int)(apr_size_t)r);
+ return DECLINED;
+ }
apr_table_setn(r->headers_in,
CHXJ_HTTP_USER_AGENT,
* save cookie.
*/
cookie = NULL;
- if (entryp->action & CONVRULE_COOKIE_ON_BIT) {
+ if (entryp->action & CONVRULE_COOKIE_ON_BIT && !(entryp->action & CONVRULE_EMOJI_ONLY_BIT)) {
switch(spec->html_spec_type) {
case CHXJ_SPEC_Chtml_1_0:
case CHXJ_SPEC_Chtml_2_0:
*src,
(apr_size_t *)len);
+ if (entryp->action & CONVRULE_EMOJI_ONLY_BIT) {
+ if (convert_routine[spec->html_spec_type].emoji_only_converter) {
+ if (tmp) {
+ dst = convert_routine[spec->html_spec_type].emoji_only_converter(r,spec, tmp,*len);
+ }
+ else {
+ dst = convert_routine[spec->html_spec_type].emoji_only_converter(r,spec, *src,*len);
+ }
+ if (dst != NULL) {
+ *len = strlen(dst);
+ }
+ else {
+ dst = apr_palloc(r->pool, 1);
+ *dst = 0;
+ *len = 0;
+ }
+ }
+ DBG(r, "REQ[%X] end of chxj_convert()(emoji only)", (unsigned int)(apr_size_t)r);
+ return dst;
+ }
+
if (convert_routine[spec->html_spec_type].converter) {
if (tmp)
dst = convert_routine[spec->html_spec_type].converter(r,
else
dst = convert_routine[spec->html_spec_type].converter(r,
spec,
- tmp,
+ *src,
*len,
len,
entryp,
if (strcasecmp(CONVRULE_ENGINE_OFF_CMD, action) == 0) {
newrule->action |= CONVRULE_ENGINE_OFF_BIT;
}
+ else
+ if (strcasecmp(CONVRULE_EMOJI_ONLY_CMD, action) == 0) {
+ newrule->action |= CONVRULE_EMOJI_ONLY_BIT;
+ }
break;
case 'C':