2 * Copyright (C) 2005 QSDN,Inc. All rights reserved.
3 * Copyright (C) 2005 Atsushi Konno All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 #ifndef __MOD_CHXJ_H__
18 #define __MOD_CHXJ_H__
24 #include "http_config.h"
25 #include "http_protocol.h"
26 #include "http_request.h"
28 #include "ap_config.h"
29 #include "apr_strings.h"
30 #include "apr_buckets.h"
32 #include "apr_tables.h"
34 #include "apr_general.h"
35 #include "apr_pools.h"
36 #include "util_filter.h"
38 #include "qs_ignore_sp.h"
40 #include "qs_malloc.h"
41 #include "qs_parse_attr.h"
42 #include "qs_parse_file.h"
43 #include "qs_parse_string.h"
44 #include "qs_parse_tag.h"
51 #undef PACKAGE_TARNAME
52 #undef PACKAGE_VERSION
56 #ifdef HAVE_AP_REGEX_H
57 # include "ap_regex.h"
59 # include "pcreposix.h"
61 # if !defined(AP_REG_ASSERT)
62 # define AP_REG_ASSERT REG_ASSERT
64 # if !defined(AP_REG_BADBR)
65 # define AP_REG_BADBR REG_BADBR
67 # if !defined(AP_REG_BADPAT)
68 # define AP_REG_BADPAT REG_BADPAT
70 # if !defined(AP_REG_BADRPT)
71 # define AP_REG_BADRPT REG_BADRPT
73 # if !defined(AP_REG_EBRACE)
74 # define AP_REG_EBRACE REG_EBRACE
76 # if !defined(AP_REG_EBRACK)
77 # define AP_REG_EBRACK REG_EBRACK
79 # if !defined(AP_REG_ECOLLATE)
80 # define AP_REG_ECOLLATE REG_ECOLLATE
82 # if !defined(AP_REG_ECTYPE)
83 # define AP_REG_ECTYPE REG_ECTYPE
85 # if !defined(AP_REG_EESCAPE)
86 # define AP_REG_EESCAPE REG_EESCAPE
88 # if !defined(AP_REG_EMPTY)
89 # define AP_REG_EMPTY REG_EMPTY
91 # if !defined(AP_REG_EPAREN)
92 # define AP_REG_EPAREN REG_EPAREN
94 # if !defined(AP_REG_ERANGE)
95 # define AP_REG_ERANGE REG_ERANGE
97 # if !defined(AP_REG_ESIZE)
98 # define AP_REG_ESIZE REG_ESIZE
100 # if !defined(AP_REG_ESPACE)
101 # define AP_REG_ESPACE REG_ESPACE
103 # if !defined(AP_REG_ESUBREG)
104 # define AP_REG_ESUBREG REG_ESUBREG
106 # if !defined(AP_REG_INVARG)
107 # define AP_REG_INVARG REG_INVARG
109 # if !defined(AP_REG_NOMATCH)
110 # define AP_REG_NOMATCH REG_NOMATCH
113 # if !defined(AP_REG_ICASE)
114 # define AP_REG_ICASE REG_ICASE
116 # if !defined(AP_REG_NEWLINE)
117 # define AP_REG_NEWLINE REG_NEWLINE
119 # if !defined(AP_REG_NOTBOL)
120 # define AP_REG_NOTBOL REG_NOTBOL
122 # if !defined(AP_REG_NOTEOL)
123 # define AP_REG_NOTEOL REG_NOTEOL
126 # if !defined(AP_REG_EXTENDED)
127 # define AP_REG_EXTENDED REG_EXTENDED
129 # if !defined(AP_REG_NOSUB)
130 # define AP_REG_NOSUB REG_NOSUB
133 # define ap_regex_t regex_t
134 # define ap_regmatch_t regmatch_t
140 #ifdef HAVE_APR_GLOBAL_MUTEX_H
141 # include "apr_global_mutex.h"
144 #ifdef HAVE_APR_SHM_H
145 # include "apr_shm.h"
149 typedef struct _imode_emoji_t {
156 typedef struct _ezweb_emoji_t {
163 typedef struct _jphone_emoji_t {
167 typedef struct _emoji_t {
168 struct _emoji_t* next;
170 imode_emoji_t* imode;
171 ezweb_emoji_t* ezweb;
172 jphone_emoji_t* jphone;
175 typedef struct _chxjconvrule_entry {
183 } chxjconvrule_entry;
186 char* (*start_tag_handler)(void* doc, Node* node);
187 char* (*end_tag_handler)(void* doc, Node* node);
190 #include "chxj_specified_device.h"
194 tag_handler* handler;
243 char* device_data_file;
244 char* emoji_data_file;
246 char* image_cache_dir;
247 char* image_copyright;
248 device_table_list* devices;
251 char* server_side_encoding;
253 char* dir; /* for LOG */
255 apr_array_header_t *convrules;
260 #define CONVRULE_ENGINE_ON_BIT (0x00000001)
261 #define CONVRULE_ENGINE_OFF_BIT (0x00000002)
263 #define CONVRULE_ENGINE_ON_CMD "EngineOn"
264 #define CONVRULE_ENGINE_OFF_CMD "EngineOff"
266 #define CONVRULE_FLAG_NOTMATCH (0x00000001)
268 #define CONVRULE_PC_FLAG_ON_CMD "PC"
270 #define CONVRULE_PC_FLAG_ON_BIT (0x00000001)
271 #define CONVRULE_PC_FLAG_OFF_BIT (0x00000002)
274 apr_shm_t* client_shm;
275 apr_global_mutex_t* client_lock;
276 char client_lock_file_name[256];
277 } mod_chxj_global_config;
282 apr_bucket_brigade *bb;
287 #include "chxj_tag_util.h"
289 #define CHXJ_MOD_CONFIG_KEY "chxj_module"
291 #define HTTP_USER_AGENT "User-Agent"
292 #define CHXJ_HTTP_USER_AGENT "CHXJ_HTTP_USER_AGENT"
294 module AP_MODULE_DECLARE_DATA chxj_module;
296 #define CHXJ_IMG_ON (1)
297 #define CHXJ_IMG_OFF (0)
300 #define DBG(X,Y) ap_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(request_rec*)(X),(Y))
301 #define DBG1(X,Y,Za) ap_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(X),(Y),(Za))
302 #define DBG2(X,Y,Za,Zb) ap_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(X),(Y),(Za),(Zb))
303 #define DBG3(X,Y,Za,Zb,Zc) ap_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(X),(Y),(Za),(Zb),(Zc))
304 #define DBG4(X,Y,Za,Zb,Zc,Zd) ap_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(X),(Y),(Za),(Zb),(Zc),(Zd))
305 #define DBG5(X,Y,Za,Zb,Zc,Zd,Ze) ap_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(X),(Y),(Za),(Zb),(Zc),(Zd),(Ze))
306 #define ERR(X,Y) ap_log_rerror(APLOG_MARK,APLOG_ERR,0,(X),(Y))
307 #define ERR1(X,Y,Za) ap_log_rerror(APLOG_MARK,APLOG_ERR,0,(X),(Y),(Za))
309 extern tag_handlers chxj_tag_handlers[];
310 extern tag_handler chtml10_handler[];
311 extern tag_handler chtml20_handler[];
312 extern tag_handler chtml30_handler[];
313 extern tag_handler xhtml_handler[];
314 extern tag_handler hdml_handler[];
315 extern tag_handler jhtml_handler[];
317 extern char* chxj_node_exchange(