Kannel: Open Source WAP and SMS gateway  $Revision: 5037 $
xml_shared.h
Go to the documentation of this file.
1 /* ====================================================================
2  * The Kannel Software License, Version 1.0
3  *
4  * Copyright (c) 2001-2016 Kannel Group
5  * Copyright (c) 1998-2001 WapIT Ltd.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in
17  * the documentation and/or other materials provided with the
18  * distribution.
19  *
20  * 3. The end-user documentation included with the redistribution,
21  * if any, must include the following acknowledgment:
22  * "This product includes software developed by the
23  * Kannel Group (http://www.kannel.org/)."
24  * Alternately, this acknowledgment may appear in the software itself,
25  * if and wherever such third-party acknowledgments normally appear.
26  *
27  * 4. The names "Kannel" and "Kannel Group" must not be used to
28  * endorse or promote products derived from this software without
29  * prior written permission. For written permission, please
30  * contact org@kannel.org.
31  *
32  * 5. Products derived from this software may not be called "Kannel",
33  * nor may "Kannel" appear in their name, without prior written
34  * permission of the Kannel Group.
35  *
36  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39  * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS
40  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
41  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
42  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
43  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
44  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
45  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
46  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Kannel Group. For more information on
51  * the Kannel Group, please see <http://www.kannel.org/>.
52  *
53  * Portions of this software are based upon software originally written at
54  * WapIT Ltd., Helsinki, Finland for the Kannel project.
55  */
56 
57 /*
58  * xml_shared.h - Common xml tokenizer interface
59  * This file contains mainly character set functions and binary manipulating
60  * functions used with a binary without a string table.
61  *
62  * Tuomas Luttinen for Wapit Ltd and Aarno Syvšnen for Wiral Ltd.
63  */
64 
65 #ifndef XML_SHARED_H
66 #define XML_SHARED_H
67 
68 /*
69  * Charset type is used by WML, SI and SL.
70  */
71 typedef struct charset_t charset_t;
72 
73 /*
74  * XML binary type not containing a string table. This is used for SI and SL.
75  */
76 
78 
79 #include "gwlib/gwlib.h"
80 
81 /*
82  * XML binary type not containing a string table. This is used for SI and SL.
83  */
85  unsigned char wbxml_version;
86  unsigned char public_id;
87  unsigned long charset;
89  int code_page;
90 };
91 
92 /*
93  * Prototypes of common functions. First functions common with wml, si and sl
94  * compilers.
95  *
96  * set_charset - set the charset of the http headers into the document, if
97  * it has no encoding set.
98  */
99 void set_charset(Octstr *document, Octstr *charset);
100 
101 /*
102  * find_charset_encoding -- parses for a encoding argument within
103  * the xml preabmle, ie. <?xml verion="xxx" encoding="ISO-8859-1"?>
104  */
106 
107 /*
108  * element_check_content - a helper function for checking if an element has
109  * content or attributes. Returns status bit for attributes (0x80) and another
110  * for content (0x40) added into one octet.
111  */
112 unsigned char element_check_content(xmlNodePtr node);
113 
114 /*
115  * only_blanks - checks if a text node contains only white space, when it can
116  * be left out as a element content.
117  */
118 
119 int only_blanks(const char *text);
120 
121 /*
122  * Parses the character set of the document given as Octstr. Returns the
123  * MIBenum value. If the charset is not found, we default to UTF-8 value.
124  */
125 int parse_charset(Octstr *os);
126 
127 /*
128  * Return the character sets supported by the WML compiler, as a List
129  * of Octstrs, where each string is the MIME identifier for one charset.
130  */
131 List *wml_charsets(void);
132 
133 /*
134  * Macro for creating an octet string from a node content. This has two
135  * versions for different libxml node content implementation methods.
136  */
137 
138 #ifdef XML_USE_BUFFER_CONTENT
139 #define create_octstr_from_node(node) (octstr_create(node->content->content))
140 #else
141 #define create_octstr_from_node(node) (octstr_create(node->content))
142 #endif
143 
144 #endif
145 
146 /*
147  * Functions working with simple binary type (no string table)
148  */
149 
151 
153 
154 /*
155  * Output the sibxml content field after field into octet string os. We add
156  * string table length 0 (no string table) before the content.
157  */
159 
160 void parse_end(simple_binary_t **bxml);
161 
162 void output_char(int byte, simple_binary_t **bxml);
163 
164 void parse_octet_string(Octstr *os, simple_binary_t **bxml);
165 
166 /*
167  * Add global tokens to the start and to the end of an inline string.
168  */
169 void parse_inline_string(Octstr *temp, simple_binary_t **bxml);
170 
171 void output_octet_string(Octstr *os, simple_binary_t **bxml);
172 
173 
174 
175 
void parse_end(simple_binary_t **bxml)
Definition: xml_shared.c:321
Octstr * binary
Definition: xml_shared.h:88
simple_binary_t * simple_binary_create(void)
Definition: xml_shared.c:284
void output_octet_string(Octstr *os, simple_binary_t **bxml)
Definition: xml_shared.c:349
Octstr * find_charset_encoding(Octstr *document)
Definition: xml_shared.c:145
unsigned char element_check_content(xmlNodePtr node)
Definition: xml_shared.c:242
Octstr * charset
Definition: test_ota.c:68
unsigned long charset
Definition: xml_shared.h:87
int parse_charset(Octstr *os)
Definition: xml_shared.c:189
char * text
Definition: smsc_cimd2.c:921
void parse_octet_string(Octstr *os, simple_binary_t **bxml)
Definition: xml_shared.c:331
unsigned char wbxml_version
Definition: xml_shared.h:85
unsigned char public_id
Definition: xml_shared.h:86
Definition: octstr.c:118
void simple_binary_output(Octstr *os, simple_binary_t *bxml)
Definition: xml_shared.c:311
int only_blanks(const char *text)
Definition: xml_shared.c:171
List * wml_charsets(void)
Definition: xml_shared.c:262
void simple_binary_destroy(simple_binary_t *bxml)
Definition: xml_shared.c:298
void set_charset(Octstr *document, Octstr *charset)
Definition: xml_shared.c:111
void output_char(int byte, simple_binary_t **bxml)
Definition: xml_shared.c:326
Definition: list.c:102
void parse_inline_string(Octstr *temp, simple_binary_t **bxml)
Definition: xml_shared.c:339
See file LICENSE for details about the license agreement for using, modifying, copying or deriving work from this software.