annotate extensions/dict_legacy_xml/dict_lxml_xml.c @ 1554:566bb46cc73f

Updated copyright information
author Sebastien Decugis <sdecugis@freediameter.net>
date Tue, 06 Oct 2020 21:34:53 +0800
parents 2a5620128a9a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1 /*********************************************************************************************************
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
2 * Software License Agreement (BSD License) *
740
4a9f08d6b6ba Updated my mail address
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 662
diff changeset
3 * Author: Sebastien Decugis <sdecugis@freediameter.net> *
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
4 * *
1554
566bb46cc73f Updated copyright information
Sebastien Decugis <sdecugis@freediameter.net>
parents: 1318
diff changeset
5 * Copyright (c) 2017, WIDE Project and NICT *
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
6 * All rights reserved. *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
7 * *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
8 * Redistribution and use of this software in source and binary forms, with or without modification, are *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
9 * permitted provided that the following conditions are met: *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
10 * *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
11 * * Redistributions of source code must retain the above *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
12 * copyright notice, this list of conditions and the *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
13 * following disclaimer. *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
14 * *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
15 * * Redistributions in binary form must reproduce the above *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
16 * copyright notice, this list of conditions and the *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
17 * following disclaimer in the documentation and/or other *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
18 * materials provided with the distribution. *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
19 * *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
20 * * Neither the name of the WIDE Project or NICT nor the *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
21 * names of its contributors may be used to endorse or *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
22 * promote products derived from this software without *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
23 * specific prior written permission of WIDE Project and *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
24 * NICT. *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
25 * *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
28 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
29 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
30 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
32 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
33 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
34 *********************************************************************************************************/
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
35
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
36 #include "dict_lxml.h"
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
37
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
38 /*
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
39 The internal freeDiameter dictionary has strong dependency relations between
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
40 the different objects, as follow:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
41
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
42 vendor
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
43 / \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
44 application \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
45 / \ |
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
46 command \ |
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
47 | type |
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
48 | / \ |
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
49 \ enumval \ |
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
50 \ avp
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
51 \ _____/
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
52 \ /
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
53 rule
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
54
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
55 It means an AVP cannot be defined unless the parent TYPE has already been defined,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
56 in turn depending on parent APPLICATION, etc. (top-to-bottom dependencies on the graph)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
57
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
58 On the other hand, the hierarchy of the XML format described in draft-frascone-xml-dictionary-00
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
59 does not enforce most of these dependencies, the structure is as follows:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
60
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
61 vendor application
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
62 / | \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
63 command | avp
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
64 / type \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
65 rule enumval
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
66
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
67 (in addition if DTD validation was performed, command and avp refer to vendor, avp refers to type,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
68 but we do not do it for larger compatibility -- we just report when errors are found)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
69
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
70 As a consequence of this difference, it is impossible to parse the XML tree and create the dictionary objects in freeDiameter
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
71 in only 1 pass. To avoid parsing the tree several times, we use a temporary structure in memory to contain all the data
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
72 from the XML file, and when the parsing is complete we store all the objects in the dictionary.
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
73 */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
74
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
75 /* We use the SAX interface of libxml2 (from GNOME) to parse the XML file. */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
76 #include <libxml/parser.h>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
77
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
78 /*******************************************/
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
79 /* Helper functions */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
80 static int xmltoint(xmlChar * xmlinteger, uint32_t * conv) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
81 TRACE_ENTRY("%p %p", xmlinteger, conv);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
82
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
83 /* Attempt at converting the string to an integer */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
84 if (sscanf((char *)xmlinteger, "%u", conv) != 1) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
85 TRACE_DEBUG(INFO, "Unable to convert '%s' to integer.", (char *)xmlinteger)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
86 return EINVAL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
87 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
88
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
89 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
90 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
91
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
92
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
93 /*******************************************
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
94 The temporary structure that is being built when the XML file is parsed
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
95 *******************************************/
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
96
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
97 /* VENDOR */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
98 struct t_vend {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
99 struct fd_list chain; /* link in the t_dictionary->vendors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
100 uint32_t id;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
101 uint8_t * name;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
102 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
103
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
104 static int new_vendor(struct fd_list * parent, xmlChar * xmlid, xmlChar * xmlname) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
105 struct t_vend * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
106 uint32_t id = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
107
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
108 TRACE_ENTRY("%p %p %p", parent, xmlid, xmlname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
109 CHECK_PARAMS( parent && xmlid && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
110
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
111 CHECK_FCT( xmltoint(xmlid, &id) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
112
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
113 CHECK_MALLOC( new = malloc(sizeof(struct t_vend)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
114 memset(new, 0, sizeof(struct t_vend));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
115 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
116 new->id = id;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
117 CHECK_MALLOC( new->name = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
118
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
119 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
120
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
121 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
122 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
123
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
124 static void dump_vendor(struct t_vend * v) {
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
125 fd_log_debug(" Vendor %d:'%s'", v->id, (char *)v->name);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
126 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
127
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
128 static void del_vendor_contents(struct t_vend * v) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
129 TRACE_ENTRY("%p", v);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
130 free(v->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
131 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
132
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
133
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
134 /* RULE */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
135 struct t_rule {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
136 struct fd_list chain; /* link in either t_cmd or t_avp */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
137 uint8_t * avpname;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
138 int max;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
139 int min;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
140 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
141
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
142 static int new_rule(struct fd_list * parent, xmlChar * xmlname, /* position is never used */ xmlChar * xmlmaximum, xmlChar * xmlminimum) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
143 struct t_rule * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
144 uint32_t min, max;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
145
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
146 TRACE_ENTRY("%p %p %p %p", parent, xmlname, xmlmaximum, xmlminimum);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
147 CHECK_PARAMS( parent && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
148
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
149 CHECK_MALLOC( new = malloc(sizeof(struct t_rule)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
150 memset(new, 0, sizeof(struct t_rule));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
151 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
152 if (xmlminimum) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
153 CHECK_FCT( xmltoint(xmlminimum, &min) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
154 new->min = (int) min;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
155 } else {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
156 new->min = -1;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
157 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
158 if (xmlmaximum) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
159 CHECK_FCT( xmltoint(xmlmaximum, &max) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
160 new->max = (int) max;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
161 } else {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
162 new->max = -1;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
163 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
164 CHECK_MALLOC( new->avpname = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
165
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
166 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
167
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
168 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
169 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
170
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
171 static void dump_rule(struct t_rule * r, char * prefix) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
172 fd_log_debug("%s ", prefix);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
173 if (r->min != -1)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
174 fd_log_debug("m:%d ", r->min);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
175 if (r->max != -1)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
176 fd_log_debug("M:%d ", r->max);
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
177 fd_log_debug("%s", (char *)r->avpname);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
178 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
179
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
180 static void del_rule_contents(struct t_rule * r) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
181 TRACE_ENTRY("%p",r);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
182 free(r->avpname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
183 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
184
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
185
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
186 /* COMMAND */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
187 struct t_cmd {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
188 struct fd_list chain; /* link in t_appl->commands */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
189 uint32_t code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
190 uint8_t * name;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
191 uint8_t flags;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
192 uint8_t fmask;
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
193 struct fd_list reqrules_fixed; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
194 struct fd_list reqrules_required; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
195 struct fd_list reqrules_optional; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
196 struct fd_list ansrules_fixed; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
197 struct fd_list ansrules_required; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
198 struct fd_list ansrules_optional; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
199 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
200
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
201 static int new_cmd(struct fd_list * parent, xmlChar * xmlcode, xmlChar * xmlname /*, ignore the vendor id because we don't use it */, xmlChar * xmlpbit, struct t_cmd **ret) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
202 struct t_cmd * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
203 uint32_t code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
204 uint32_t flag = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
205 uint32_t fmask = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
206
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
207 TRACE_ENTRY("%p %p %p %p", parent, xmlcode, xmlname, xmlpbit);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
208 CHECK_PARAMS( parent && xmlcode && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
209
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
210 CHECK_FCT( xmltoint(xmlcode, &code) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
211
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
212 if (xmlpbit) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
213 uint32_t val;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
214 CHECK_FCT( xmltoint(xmlpbit, &val) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
215 fmask |= CMD_FLAG_PROXIABLE;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
216 if (val)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
217 flag |= CMD_FLAG_PROXIABLE;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
218 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
219
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
220 CHECK_MALLOC( new = malloc(sizeof(struct t_cmd)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
221 memset(new, 0, sizeof(struct t_cmd));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
222 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
223 new->code = code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
224 CHECK_MALLOC( new->name = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
225 new->flags = flag;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
226 new->fmask = fmask;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
227 fd_list_init(&new->reqrules_fixed, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
228 fd_list_init(&new->reqrules_required, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
229 fd_list_init(&new->reqrules_optional, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
230 fd_list_init(&new->ansrules_fixed, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
231 fd_list_init(&new->ansrules_required, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
232 fd_list_init(&new->ansrules_optional, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
233
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
234 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
235
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
236 *ret = new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
237
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
238 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
239 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
240
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
241 static void dump_cmd(struct t_cmd * c) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
242 struct fd_list * li;
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
243 fd_log_debug(" Command %d %s: %s", c->code,
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
244 c->fmask ? ( c->flags ? "[P=1]" : "[P=0]") : "", c->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
245 for (li = c->reqrules_fixed.next; li != &c->reqrules_fixed; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
246 dump_rule((struct t_rule *)li, " Request fixed AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
247 for (li = c->reqrules_required.next; li != &c->reqrules_required; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
248 dump_rule((struct t_rule *)li, " Request required AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
249 for (li = c->reqrules_optional.next; li != &c->reqrules_optional; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
250 dump_rule((struct t_rule *)li, " Request optional AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
251 for (li = c->ansrules_fixed.next; li != &c->ansrules_fixed; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
252 dump_rule((struct t_rule *)li, " Answer fixed AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
253 for (li = c->ansrules_required.next; li != &c->ansrules_required; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
254 dump_rule((struct t_rule *)li, " Answer required AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
255 for (li = c->ansrules_optional.next; li != &c->ansrules_optional; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
256 dump_rule((struct t_rule *)li, " Answer optional AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
257 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
258
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
259 static void del_cmd_contents(struct t_cmd * c) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
260 TRACE_ENTRY("%p", c);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
261 free(c->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
262 while (!FD_IS_LIST_EMPTY(&c->reqrules_fixed)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
263 struct fd_list * li = c->reqrules_fixed.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
264 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
265 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
266 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
267 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
268 while (!FD_IS_LIST_EMPTY(&c->reqrules_required)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
269 struct fd_list * li = c->reqrules_required.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
270 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
271 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
272 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
273 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
274 while (!FD_IS_LIST_EMPTY(&c->reqrules_optional)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
275 struct fd_list * li = c->reqrules_optional.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
276 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
277 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
278 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
279 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
280 while (!FD_IS_LIST_EMPTY(&c->ansrules_fixed)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
281 struct fd_list * li = c->ansrules_fixed.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
282 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
283 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
284 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
285 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
286 while (!FD_IS_LIST_EMPTY(&c->ansrules_required)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
287 struct fd_list * li = c->ansrules_required.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
288 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
289 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
290 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
291 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
292 while (!FD_IS_LIST_EMPTY(&c->ansrules_optional)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
293 struct fd_list * li = c->ansrules_optional.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
294 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
295 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
296 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
297 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
298 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
299
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
300 /* TYPE */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
301 struct t_typedefn {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
302 struct fd_list chain; /* link in t_appl->types */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
303 uint8_t * name;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
304 uint8_t * parent_name;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
305 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
306
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
307 static int new_type(struct fd_list * parent, xmlChar * xmlname, xmlChar * xmlparent /*, xmlChar * xmldescription -- ignore */) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
308 struct t_typedefn * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
309
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
310 TRACE_ENTRY("%p %p %p", parent, xmlname, xmlparent);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
311 CHECK_PARAMS( parent && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
312
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
313 CHECK_MALLOC( new = malloc(sizeof(struct t_typedefn)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
314 memset(new, 0, sizeof(struct t_typedefn));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
315 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
316 CHECK_MALLOC( new->name = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
317 if (xmlparent) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
318 CHECK_MALLOC( new->parent_name = (uint8_t *)strdup((char *)xmlparent) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
319 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
320
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
321 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
322
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
323 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
324 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
325
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
326 static void dump_type(struct t_typedefn * t) {
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
327 fd_log_debug(" Type %s%s%s%s", (char *)t->name,
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
328 t->parent_name ? "(parent: " : "",
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
329 t->parent_name ? (char *)t->parent_name : "",
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
330 t->parent_name ? ")" : "");
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
331 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
332
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
333 static void del_type_contents(struct t_typedefn * t) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
334 TRACE_ENTRY("%p", t);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
335 free(t->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
336 free(t->parent_name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
337 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
338
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
339
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
340 /* TYPE INSIDE AVP */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
341 struct t_avptype {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
342 struct fd_list chain; /* link in t_avp->type */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
343 uint8_t * type_name;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
344 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
345
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
346 static int new_avptype(struct fd_list * parent, xmlChar * xmlname) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
347 struct t_avptype * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
348
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
349 TRACE_ENTRY("%p %p", parent, xmlname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
350 CHECK_PARAMS( parent && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
351
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
352 CHECK_MALLOC( new = malloc(sizeof(struct t_avptype)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
353 memset(new, 0, sizeof(struct t_avptype));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
354 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
355 CHECK_MALLOC( new->type_name = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
356
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
357 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
358
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
359 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
360 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
361
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
362 static void dump_avptype(struct t_avptype * t) {
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
363 fd_log_debug(" data type: %s", t->type_name);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
364 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
365
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
366 static void del_avptype_contents(struct t_avptype * t) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
367 TRACE_ENTRY("%p", t);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
368 free(t->type_name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
369 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
370
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
371
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
372 /* ENUM */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
373 struct t_enum {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
374 struct fd_list chain; /* link in t_avp->enums */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
375 uint32_t code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
376 uint8_t * name;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
377 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
378
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
379 static int new_enum(struct fd_list * parent, xmlChar * xmlcode, xmlChar * xmlname) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
380 struct t_enum * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
381 uint32_t code = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
382
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
383 TRACE_ENTRY("%p %p %p", parent, xmlcode, xmlname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
384 CHECK_PARAMS( parent && xmlcode && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
385
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
386 CHECK_FCT( xmltoint(xmlcode, &code) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
387
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
388 CHECK_MALLOC( new = malloc(sizeof(struct t_enum)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
389 memset(new, 0, sizeof(struct t_enum));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
390 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
391 new->code = code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
392 CHECK_MALLOC( new->name = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
393
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
394 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
395
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
396 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
397 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
398
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
399 static void dump_enum(struct t_enum * e) {
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
400 fd_log_debug(" Value: %d == %s", e->code, e->name);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
401 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
402
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
403 static void del_enum_contents(struct t_enum * e) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
404 TRACE_ENTRY("%p", e);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
405 free(e->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
406 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
407
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
408 /* AVP */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
409 struct t_avp {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
410 struct fd_list chain; /* link in t_appl->avps */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
411 uint32_t code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
412 uint8_t * name;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
413 uint8_t flags;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
414 uint8_t fmask;
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
415 uint32_t vendor;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
416 struct fd_list type; /* list of t_avptype -- there must be at max 1 item in the list */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
417 struct fd_list enums; /* list of t_enum */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
418 struct fd_list grouped_fixed; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
419 struct fd_list grouped_required; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
420 struct fd_list grouped_optional; /* list of t_rule */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
421 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
422
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
423 static int new_avp(struct fd_list * parent, xmlChar * xmlcode, xmlChar * xmlname, xmlChar * xmlmandatory, xmlChar * xmlvendor, struct t_avp **ret) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
424 /* we ignore description, may-encrypt, protected, ... */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
425 struct t_avp * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
426 uint32_t code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
427 uint32_t vendor = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
428 uint32_t flag = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
429 uint32_t fmask = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
430
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
431 TRACE_ENTRY("%p %p %p %p %p", parent, xmlcode, xmlname, xmlmandatory, xmlvendor);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
432 CHECK_PARAMS( parent && xmlcode && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
433
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
434 CHECK_FCT( xmltoint(xmlcode, &code) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
435
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
436 if (xmlmandatory && !strcasecmp((char *)xmlmandatory, "must")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
437 flag |= AVP_FLAG_MANDATORY;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
438 fmask |= AVP_FLAG_MANDATORY;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
439 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
440
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
441 if (xmlvendor) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
442 CHECK_FCT( xmltoint(xmlvendor, &vendor) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
443 if (vendor)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
444 flag |= AVP_FLAG_VENDOR;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
445 fmask |= AVP_FLAG_VENDOR;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
446 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
447
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
448 CHECK_MALLOC( new = malloc(sizeof(struct t_avp)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
449 memset(new, 0, sizeof(struct t_avp));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
450 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
451 new->code = code;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
452 CHECK_MALLOC( new->name = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
453 new->flags = flag;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
454 new->fmask = fmask;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
455 new->vendor= vendor;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
456 fd_list_init(&new->type, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
457 fd_list_init(&new->enums, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
458 fd_list_init(&new->grouped_fixed, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
459 fd_list_init(&new->grouped_required, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
460 fd_list_init(&new->grouped_optional, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
461
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
462 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
463
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
464 *ret = new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
465
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
466 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
467 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
468
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
469 static void dump_avp(struct t_avp * a) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
470 struct fd_list * li;
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
471 fd_log_debug(" AVP %d %s%s: %s", a->code,
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
472 a->fmask & AVP_FLAG_MANDATORY ? ( a->flags & AVP_FLAG_MANDATORY ? "[M=1]" : "[M=0]") : "",
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
473 a->fmask & AVP_FLAG_VENDOR ? ( a->flags & AVP_FLAG_VENDOR ? "[V=1]" : "[V=0]") : "",
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
474 a->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
475 if (a->fmask & AVP_FLAG_VENDOR)
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
476 fd_log_debug(" vendor: %d", a->vendor);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
477 for (li = a->type.next; li != &a->type; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
478 dump_avptype((struct t_avptype *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
479 for (li = a->enums.next; li != &a->enums; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
480 dump_enum((struct t_enum *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
481 for (li = a->grouped_fixed.next; li != &a->grouped_fixed; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
482 dump_rule((struct t_rule *)li, " Grouped, fixed AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
483 for (li = a->grouped_required.next; li != &a->grouped_required; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
484 dump_rule((struct t_rule *)li, " Grouped, required AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
485 for (li = a->grouped_optional.next; li != &a->grouped_optional; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
486 dump_rule((struct t_rule *)li, " Grouped, optional AVP:");
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
487 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
488
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
489 static void del_avp_contents(struct t_avp * a) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
490 TRACE_ENTRY("%p", a);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
491 free(a->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
492 while (!FD_IS_LIST_EMPTY(&a->type)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
493 struct fd_list * li = a->type.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
494 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
495 del_avptype_contents((struct t_avptype *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
496 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
497 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
498 while (!FD_IS_LIST_EMPTY(&a->enums)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
499 struct fd_list * li = a->enums.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
500 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
501 del_enum_contents((struct t_enum *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
502 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
503 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
504 while (!FD_IS_LIST_EMPTY(&a->grouped_fixed)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
505 struct fd_list * li = a->grouped_fixed.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
506 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
507 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
508 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
509 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
510 while (!FD_IS_LIST_EMPTY(&a->grouped_required)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
511 struct fd_list * li = a->grouped_required.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
512 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
513 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
514 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
515 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
516 while (!FD_IS_LIST_EMPTY(&a->grouped_optional)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
517 struct fd_list * li = a->grouped_optional.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
518 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
519 del_rule_contents((struct t_rule *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
520 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
521 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
522 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
523
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
524
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
525 /* APPLICATION */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
526 struct t_appl {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
527 struct fd_list chain; /* link in the t_dictionary->base_and_applications, the sentinel corresponds to "base" */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
528 uint32_t id;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
529 uint8_t * name;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
530 struct fd_list commands; /* list of t_cmd */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
531 struct fd_list types; /* list of t_typedefn */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
532 struct fd_list avps; /* list of t_avp */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
533 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
534
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
535 static int new_appl(struct fd_list * parent, xmlChar * xmlid, xmlChar * xmlname /* We ignore the URI */, struct t_appl **ret) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
536 struct t_appl * new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
537 uint32_t id = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
538
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
539 TRACE_ENTRY("%p %p %p", parent, xmlid, xmlname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
540 CHECK_PARAMS( parent && xmlid && xmlname );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
541
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
542 CHECK_FCT( xmltoint(xmlid, &id) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
543
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
544 CHECK_MALLOC( new = malloc(sizeof(struct t_appl)) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
545 memset(new, 0, sizeof(struct t_appl));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
546 fd_list_init(&new->chain, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
547 new->id = id;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
548 CHECK_MALLOC( new->name = (uint8_t *)strdup((char *)xmlname) );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
549
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
550 fd_list_init(&new->commands, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
551 fd_list_init(&new->types, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
552 fd_list_init(&new->avps, NULL);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
553
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
554 fd_list_insert_before(parent, &new->chain);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
555
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
556 *ret = new;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
557
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
558 return 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
559 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
560
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
561 static void dump_appl(struct t_appl * a) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
562 struct fd_list * li;
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
563 fd_log_debug(" Application %d: %s", a->id, a->name);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
564 for (li = a->commands.next; li != &a->commands; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
565 dump_cmd((struct t_cmd *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
566 for (li = a->types.next; li != &a->types; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
567 dump_type((struct t_typedefn *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
568 for (li = a->avps.next; li != &a->avps; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
569 dump_avp((struct t_avp *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
570 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
571
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
572 static void del_appl_contents(struct t_appl * a) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
573 TRACE_ENTRY("%p", a);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
574 free(a->name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
575 while (!FD_IS_LIST_EMPTY(&a->commands)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
576 struct fd_list * li = a->commands.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
577 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
578 del_cmd_contents((struct t_cmd *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
579 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
580 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
581 while (!FD_IS_LIST_EMPTY(&a->types)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
582 struct fd_list * li = a->types.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
583 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
584 del_type_contents((struct t_typedefn *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
585 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
586 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
587 while (!FD_IS_LIST_EMPTY(&a->avps)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
588 struct fd_list * li = a->avps.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
589 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
590 del_avp_contents((struct t_avp *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
591 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
592 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
593 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
594
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
595 /* DICTIONARY */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
596 struct t_dictionary {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
597 struct fd_list vendors;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
598 struct t_appl base_and_applications;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
599 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
601 static void dump_dict(struct t_dictionary * d) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
602 struct fd_list * li;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
603 for (li = d->vendors.next; li != &d->vendors; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
604 dump_vendor((struct t_vend *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
605 dump_appl(&d->base_and_applications);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
606 for (li = d->base_and_applications.chain.next; li != &d->base_and_applications.chain; li = li->next)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
607 dump_appl((struct t_appl *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
608 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
609
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
610 static void del_dict_contents(struct t_dictionary * d) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
611 TRACE_ENTRY("%p", d);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
612 while (!FD_IS_LIST_EMPTY(&d->vendors)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
613 struct fd_list * li = d->vendors.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
614 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
615 del_vendor_contents((struct t_vend *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
616 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
617 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
618 while (!FD_IS_LIST_EMPTY(&d->base_and_applications.chain)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
619 struct fd_list * li = d->base_and_applications.chain.next;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
620 fd_list_unlink(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
621 del_appl_contents((struct t_appl *)li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
622 free(li);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
623 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
624 d->base_and_applications.name = NULL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
625 del_appl_contents(&d->base_and_applications);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
626 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
627
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
628 /*********************************************/
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
629
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
630 /* The states for the SAX parser, corresponding roughly to the expected structure of the XML file.
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
631 We use the states mostly to validate the XML file. */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
632 enum state {
616
f2791162c1f2 Fix warning about value outside enum range
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 603
diff changeset
633 INIT = 0,
f2791162c1f2 Fix warning about value outside enum range
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 603
diff changeset
634 START, /* In "dictionary" */
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
635 IN_VENDOR,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
636 IN_APPLICATION, /* note that "base" is equivalent to "application" for our state machine */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
637 IN_COMMAND,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
638 IN_REQRULES,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
639 IN_REQRULES_FIXED,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
640 IN_REQRULES_REQUIRED,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
641 IN_REQRULES_OPTIONAL,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
642 IN_ANSRULES,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
643 IN_ANSRULES_FIXED,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
644 IN_ANSRULES_REQUIRED,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
645 IN_ANSRULES_OPTIONAL,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
646 IN_TYPEDEFN,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
647 IN_AVP,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
648 IN_AVP_TYPE,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
649 IN_AVP_ENUM,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
650 IN_AVP_GROUPED,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
651 IN_AVP_GROUPED_FIXED,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
652 IN_AVP_GROUPED_REQUIRED,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
653 IN_AVP_GROUPED_OPTIONAL
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
654 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
655
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
656
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
657 /* The context passed to the SAX parser */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
658 struct parser_ctx {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
659 enum state state; /* the current state */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
660 int error_depth; /* if non 0, we are in an unexpected element, wait until the count goes back to 0 to resume normal parsing. */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
661 struct t_dictionary dict; /* The dictionary being built */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
662 struct t_appl * cur_app;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
663 struct t_cmd * cur_cmd;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
664 struct t_avp * cur_avp;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
665 char * xmlfilename; /* Name of the file, for error messages */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
666 };
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
667
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
668 /* Find an attribute with given name in the list */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
669 static void get_attr(const xmlChar ** atts_array, const char * attr_name, xmlChar ** attr_val) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
670 int i;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
671 *attr_val = NULL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
672 if (atts_array == NULL)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
673 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
674 for (i=0; atts_array[i] != NULL; i+=2) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
675 if (!strcasecmp((char *)atts_array[i], attr_name)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
676 /* found */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
677 *attr_val = (xmlChar *)atts_array[i+1];
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
678 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
679 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
680 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
681 /* not found */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
682 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
683 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
684
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
685 /* The following macro avoids duplicating a lot of code in the state machine */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
686 #define ADD_RULE( _parent_list ) { \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
687 xmlChar *xname, *xmin, *xmax; \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
688 /* We are expecting an <avprule> tag at this point */ \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
689 if (strcasecmp((char *)name, "avprule")) \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
690 goto xml_tree_error; \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
691 /* Search the expected attributes */ \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
692 get_attr(atts, "name", &xname); \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
693 get_attr(atts, "maximum", &xmax); \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
694 get_attr(atts, "minimum", &xmin); \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
695 /* Check the mandatory name is here */ \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
696 CHECK_PARAMS_DO(xname, \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
697 { TRACE_DEBUG(INFO, "Invalid 'avprule' tag found without 'name' attribute."); goto xml_tree_error; } ); \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
698 /* Create the rule and add into the parent list */ \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
699 CHECK_FCT_DO( new_rule((_parent_list), xname, xmax, xmin),\
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
700 { TRACE_DEBUG(INFO, "An error occurred while parsing an avprule tag. Entry ignored."); goto xml_tree_error; } ); \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
701 /* Done. we don't change the state */ \
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
702 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
703
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
704
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
705 /* The function called on each XML element start tag (startElementSAXFunc) */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
706 static void SAXstartelem (void * ctx, const xmlChar * name, const xmlChar ** atts)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
707 {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
708 struct parser_ctx * data = ctx;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
709 TRACE_ENTRY("%p %p %p", ctx, name, atts);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
710 CHECK_PARAMS_DO( ctx && name, { return; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
711
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
712 TRACE_DEBUG(CALL, "Tag: <%s>", (char *)name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
713
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
714 if (data->error_depth) /* we are in an unknown element, just skip until it is closed */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
715 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
716
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
717 switch (data->state) {
616
f2791162c1f2 Fix warning about value outside enum range
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 603
diff changeset
718 case INIT: /* we are just starting. We only expect a <dictionary> tag, reject anything else. */
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
719 if (strcasecmp((char *)name, "dictionary"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
720 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
721
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
722 data->state = START;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
723 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
724
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
725 case START:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
726 /* We are in <dictionary>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
727 Valid tags are: <vendor>, <base>, <application> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
728 if (!strcasecmp((char *)name, "vendor")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
729 xmlChar *xid, *xname;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
730
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
731 get_attr(atts, "id", &xid);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
732 get_attr(atts, "name", &xname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
733
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
734 /* id and name are required */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
735 CHECK_PARAMS_DO(xid && xname,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
736 { TRACE_DEBUG(INFO, "Invalid 'vendor' tag found without 'id' or 'name' attribute."); goto xml_tree_error; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
737
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
738
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
739 CHECK_FCT_DO( new_vendor(&data->dict.vendors, xid, xname),
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
740 { TRACE_DEBUG(INFO, "An error occurred while parsing a vendor tag. Entry ignored."); goto xml_tree_error; } )
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
741
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
742 data->state = IN_VENDOR;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
743 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
744 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
745
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
746 if (!strcasecmp((char *)name, "base")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
747 /* we don't care for the 'uri' attribute */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
748 data->cur_app = &data->dict.base_and_applications;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
749 data->state = IN_APPLICATION;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
750 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
751 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
752
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
753 if (!strcasecmp((char *)name, "application")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
754 /* we don't care for the 'uri' attribute */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
755 xmlChar *xid, *xname;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
756 char buf[50];
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
757
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
758 get_attr(atts, "id", &xid);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
759 get_attr(atts, "name", &xname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
760
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
761 CHECK_PARAMS_DO(xid,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
762 { TRACE_DEBUG(INFO, "Invalid 'application' tag found without 'id' attribute."); goto xml_tree_error; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
763
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
764 /* Name is optional, if not provided we create a name */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
765 if (!xname) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
766 snprintf(buf, sizeof(buf), "Application %s", xid);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
767 xname = (xmlChar *)buf;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
768 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
769
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
770 CHECK_FCT_DO( new_appl(&data->dict.base_and_applications.chain, xid, xname, &data->cur_app),
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
771 { TRACE_DEBUG(INFO, "An error occurred while parsing an application tag. Entry ignored."); goto xml_tree_error; } )
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
772
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
773 data->state = IN_APPLICATION;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
774 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
775 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
776
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
777 /* Other tags are errors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
778 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
779
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
780
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
781 case IN_VENDOR: /* nothing is allowed inside <vendor> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
782 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
783
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
784 case IN_APPLICATION:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
785 /* We are in <base> or <application>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
786 Valid tags are: <command>, <typedefn>, <avp> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
787 if (!strcasecmp((char *)name, "command")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
788 /* we don't care for the 'vendor-id' attribute. */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
789 xmlChar *xcode, *xname, *xpbit;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
790
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
791 get_attr(atts, "code", &xcode);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
792 get_attr(atts, "name", &xname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
793 get_attr(atts, "pbit", &xpbit);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
794
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
795 /* code and name are required */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
796 CHECK_PARAMS_DO(xcode && xname,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
797 { TRACE_DEBUG(INFO, "Invalid 'command' tag found without 'code' or 'name' attribute."); goto xml_tree_error; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
798
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
799 CHECK_FCT_DO( new_cmd( &data->cur_app->commands, xcode, xname, xpbit, &data->cur_cmd),
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
800 { TRACE_DEBUG(INFO, "An error occurred while parsing a command tag. Entry ignored."); goto xml_tree_error; } )
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
801
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
802 data->state = IN_COMMAND;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
803 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
804 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
805
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
806 if (!strcasecmp((char *)name, "typedefn")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
807 /* we don't care for the 'description' attribute. */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
808 xmlChar *xname, *xparent;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
809
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
810 get_attr(atts, "type-name", &xname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
811 get_attr(atts, "type-parent", &xparent);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
812
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
813 /* name is required */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
814 CHECK_PARAMS_DO(xname,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
815 { TRACE_DEBUG(INFO, "Invalid 'typedefn' tag found without 'name' attribute."); goto xml_tree_error; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
816
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
817 CHECK_FCT_DO( new_type( &data->cur_app->types, xname, xparent),
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
818 { TRACE_DEBUG(INFO, "An error occurred while parsing a typedefn tag. Entry ignored."); goto xml_tree_error; } )
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
819
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
820 data->state = IN_TYPEDEFN;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
821 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
822 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
823
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
824 if (!strcasecmp((char *)name, "avp")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
825 /* we don't care for the description, may-encrypt, and protected attributes */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
826 xmlChar *xname, *xcode, *xmandatory, *xvendor;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
827
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
828 get_attr(atts, "name", &xname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
829 get_attr(atts, "code", &xcode);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
830 get_attr(atts, "mandatory", &xmandatory);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
831 get_attr(atts, "vendor-id", &xvendor);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
832
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
833 /* code and name are required */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
834 CHECK_PARAMS_DO(xcode && xname,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
835 { TRACE_DEBUG(INFO, "Invalid 'avp' tag found without 'code' or 'name' attribute."); goto xml_tree_error; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
836
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
837 CHECK_FCT_DO( new_avp(&data->cur_app->avps, xcode, xname, xmandatory, xvendor, &data->cur_avp),
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
838 { TRACE_DEBUG(INFO, "An error occurred while parsing an avp tag. Entry ignored."); goto xml_tree_error; } )
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
839
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
840 data->state = IN_AVP;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
841 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
842 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
843 /* Other tags are errors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
844 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
845
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
846
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
847 case IN_COMMAND:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
848 /* We are in <command>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
849 Valid tags are: <requestrules>, <answerrules> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
850 if (!strcasecmp((char *)name, "requestrules")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
851 data->state = IN_REQRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
852 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
853 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
854 if (!strcasecmp((char *)name, "answerrules")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
855 data->state = IN_ANSRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
856 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
857 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
858 /* Other tags are errors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
859 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
860
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
861 case IN_REQRULES:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
862 /* We are in <requestrules>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
863 Valid tags are: <fixed>, <required>, <optional> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
864 if (!strcasecmp((char *)name, "fixed")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
865 data->state = IN_REQRULES_FIXED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
866 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
867 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
868 if (!strcasecmp((char *)name, "required")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
869 data->state = IN_REQRULES_REQUIRED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
870 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
871 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
872 if (!strcasecmp((char *)name, "optional")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
873 data->state = IN_REQRULES_OPTIONAL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
874 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
875 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
876 /* Other tags are errors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
877 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
878
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
879 case IN_ANSRULES:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
880 /* We are in <answerrules>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
881 Valid tags are: <fixed>, <required>, <optional> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
882 if (!strcasecmp((char *)name, "fixed")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
883 data->state = IN_ANSRULES_FIXED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
884 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
885 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
886 if (!strcasecmp((char *)name, "required")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
887 data->state = IN_ANSRULES_REQUIRED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
888 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
889 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
890 if (!strcasecmp((char *)name, "optional")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
891 data->state = IN_ANSRULES_OPTIONAL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
892 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
893 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
894 /* Other tags are errors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
895 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
896
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
897 case IN_REQRULES_FIXED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
898 /* We are in <command><answerrules><fixed>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
899 Valid tags are: <avprule> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
900 ADD_RULE( &data->cur_cmd->reqrules_fixed );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
901 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
902 case IN_REQRULES_REQUIRED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
903 ADD_RULE( &data->cur_cmd->reqrules_required );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
904 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
905 case IN_REQRULES_OPTIONAL:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
906 ADD_RULE( &data->cur_cmd->reqrules_optional );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
907 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
908 case IN_ANSRULES_FIXED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
909 ADD_RULE( &data->cur_cmd->ansrules_fixed );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
910 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
911 case IN_ANSRULES_REQUIRED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
912 ADD_RULE( &data->cur_cmd->ansrules_required );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
913 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
914 case IN_ANSRULES_OPTIONAL:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
915 ADD_RULE( &data->cur_cmd->ansrules_optional );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
916 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
917
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
918
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
919 case IN_TYPEDEFN: /* nothing is allowed inside <typedefn> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
920 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
921
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
922
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
923 case IN_AVP:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
924 /* We are in <avp>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
925 Valid tags are: <type>, <enum>, <grouped> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
926 if (!strcasecmp((char *)name, "type")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
927 xmlChar *xname;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
928
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
929 get_attr(atts, "type-name", &xname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
930
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
931 /* name is required */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
932 CHECK_PARAMS_DO(xname,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
933 { TRACE_DEBUG(INFO, "Invalid 'type' tag found without 'name' attribute."); goto xml_tree_error; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
934
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
935 /* Check there is only 1 type */
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
936 if (!FD_IS_LIST_EMPTY(&data->cur_avp->type)) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
937 TRACE_DEBUG(INFO, "Multiple 'type' tags found for AVP.");
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
938 goto xml_tree_error;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
939 }
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
940
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
941 /* Add the new type */
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
942 CHECK_FCT_DO( new_avptype(&data->cur_avp->type, xname),
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
943 { TRACE_DEBUG(INFO, "An error occurred while parsing a type tag. Entry ignored."); goto xml_tree_error; } )
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
944
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
945 data->state = IN_AVP_TYPE;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
946 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
947 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
948 if (!strcasecmp((char *)name, "enum")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
949 xmlChar *xcode, *xname;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
950
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
951 get_attr(atts, "code", &xcode);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
952 get_attr(atts, "name", &xname);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
953
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
954 /* code and name are required */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
955 CHECK_PARAMS_DO(xcode && xname,
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
956 { TRACE_DEBUG(INFO, "Invalid 'enum' tag found without 'code' or 'name' attribute."); goto xml_tree_error; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
957
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
958 CHECK_FCT_DO( new_enum(&data->cur_avp->enums, xcode, xname),
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
959 { TRACE_DEBUG(INFO, "An error occurred while parsing a command tag. Entry ignored."); goto xml_tree_error; } )
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
960
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
961 data->state = IN_AVP_ENUM;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
962 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
963 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
964 if (!strcasecmp((char *)name, "grouped")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
965 /* no attribute for this one */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
966 data->state = IN_AVP_GROUPED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
967 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
968 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
969 /* Other tags are errors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
970 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
971
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
972 case IN_AVP_TYPE: /* nothing is allowed inside <type> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
973 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
974
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
975 case IN_AVP_ENUM: /* nothing is allowed inside <enum> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
976 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
977
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
978 case IN_AVP_GROUPED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
979 /* We are in <avp><grouped>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
980 Valid tags are: <fixed>, <required>, <optional> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
981 if (!strcasecmp((char *)name, "fixed")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
982 data->state = IN_AVP_GROUPED_FIXED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
983 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
984 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
985 if (!strcasecmp((char *)name, "required")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
986 data->state = IN_AVP_GROUPED_REQUIRED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
987 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
988 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
989 if (!strcasecmp((char *)name, "optional")) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
990 data->state = IN_AVP_GROUPED_OPTIONAL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
991 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
992 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
993 /* Other tags are errors */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
994 goto xml_tree_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
995
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
996 case IN_AVP_GROUPED_FIXED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
997 /* We are in <avp><grouped><fixed>
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
998 Valid tags are: <avprule> */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
999 ADD_RULE( &data->cur_avp->grouped_fixed );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1000 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1001 case IN_AVP_GROUPED_REQUIRED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1002 ADD_RULE( &data->cur_avp->grouped_required );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1003 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1004 case IN_AVP_GROUPED_OPTIONAL:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1005 ADD_RULE( &data->cur_avp->grouped_optional );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1006 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1007
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1008
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1009 default:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1010 TRACE_DEBUG(INFO, "Internal parsing error, unexpected state %d.", data->state);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1011 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1012
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1013 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1014
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1015 xml_tree_error:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1016 if (!data->error_depth) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1017 TRACE_DEBUG(INFO, "Unexpected XML element found: '%s'. Ignoring...", name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1018 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1019 data->error_depth += 1;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1020 if (data->cur_app || data->cur_cmd || data->cur_avp) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1021 TRACE_DEBUG(INFO, "Error encountered while parsing tag of:");
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1022 if (data->cur_app)
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
1023 fd_log_debug(" Application: '%s'", data->cur_app->name);
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1024 if (data->cur_cmd)
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
1025 fd_log_debug(" Command : '%s'", data->cur_cmd->name);
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1026 if (data->cur_avp)
974
2091bf698fb1 Remove newlines from fd_log_debug, TRACE_DEBUG, TRACE_ERROR, and TRACE_DEBUG_ERROR
Thomas Klausner <tk@giga.or.at>
parents: 740
diff changeset
1027 fd_log_debug(" AVP : '%s'", data->cur_avp->name);
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1028 }
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1029 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1030 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1031
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1032 /* The function called on each XML element end tag (endElementSAXFunc) */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1033 static void SAXendelem (void * ctx, const xmlChar * name)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1034 {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1035 struct parser_ctx * data = ctx;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1036 TRACE_ENTRY("%p %p", ctx, name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1037 CHECK_PARAMS_DO( ctx && name, { return; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1038
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1039 TRACE_DEBUG(CALL, "Tag: </%s>", (char *)name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1040
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1041 if (data->error_depth) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1042 /* we are recovering from an erroneous element */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1043 data->error_depth -= 1;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1044 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1045 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1046
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1047 switch (data->state) {
616
f2791162c1f2 Fix warning about value outside enum range
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 603
diff changeset
1048 case INIT:
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1049 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1050
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1051 case START:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1052 if (strcasecmp((char *)name, "dictionary"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1053 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1054
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1055 data->state = 0;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1056 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1057
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1058 case IN_VENDOR:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1059 if (strcasecmp((char *)name, "vendor"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1060 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1061
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1062 data->state = START;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1063 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1064
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1065 case IN_APPLICATION:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1066 if (strcasecmp((char *)name, "base") && strcasecmp((char *)name, "application"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1067 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1068
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1069 data->cur_app = NULL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1070 data->state = START;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1071 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1072
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1073 case IN_COMMAND:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1074 if (strcasecmp((char *)name, "command"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1075 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1076
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1077 data->cur_cmd = NULL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1078 data->state = IN_APPLICATION;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1079 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1080
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1081 case IN_REQRULES:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1082 if (strcasecmp((char *)name, "requestrules"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1083 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1084
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1085 data->state = IN_COMMAND;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1086 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1087
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1088 case IN_REQRULES_FIXED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1089 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1090 /* we don't have a special state for these, just ignore */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1091 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1092 if (strcasecmp((char *)name, "fixed"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1093 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1094 data->state = IN_REQRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1095 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1096 case IN_REQRULES_REQUIRED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1097 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1098 /* we don't have a special state for these, just ignore */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1099 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1100 if (strcasecmp((char *)name, "required"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1101 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1102 data->state = IN_REQRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1103 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1104 case IN_REQRULES_OPTIONAL:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1105 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1106 /* we don't have a special state for these, just ignore */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1107 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1108 if (strcasecmp((char *)name, "optional"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1109 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1110 data->state = IN_REQRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1111 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1112
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1113 case IN_ANSRULES:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1114 if (strcasecmp((char *)name, "answerrules"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1115 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1116
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1117 data->state = IN_COMMAND;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1118 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1119 case IN_ANSRULES_FIXED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1120 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1121 /* we don't have a special state for these, just ignore */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1122 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1123 if (strcasecmp((char *)name, "fixed"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1124 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1125 data->state = IN_ANSRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1126 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1127 case IN_ANSRULES_REQUIRED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1128 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1129 /* we don't have a special state for these, just ignore */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1130 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1131 if (strcasecmp((char *)name, "required"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1132 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1133 data->state = IN_ANSRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1134 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1135 case IN_ANSRULES_OPTIONAL:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1136 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1137 /* we don't have a special state for these, just ignore */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1138 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1139 if (strcasecmp((char *)name, "optional"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1140 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1141 data->state = IN_ANSRULES;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1142 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1143
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1144
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1145 case IN_TYPEDEFN:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1146 if (strcasecmp((char *)name, "typedefn"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1147 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1148
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1149 data->state = IN_APPLICATION;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1150 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1151
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1152 case IN_AVP:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1153 if (strcasecmp((char *)name, "avp"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1154 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1155
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1156 data->cur_avp = NULL;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1157 data->state = IN_APPLICATION;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1158 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1159
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1160 case IN_AVP_TYPE:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1161 if (strcasecmp((char *)name, "type"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1162 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1163
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1164 data->state = IN_AVP;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1165 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1166
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1167 case IN_AVP_ENUM:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1168 if (strcasecmp((char *)name, "enum"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1169 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1170
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1171 data->state = IN_AVP;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1172 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1173
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1174 case IN_AVP_GROUPED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1175 if (strcasecmp((char *)name, "grouped"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1176 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1177
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1178 data->state = IN_AVP;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1179 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1180
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1181 case IN_AVP_GROUPED_FIXED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1182 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1183 /* we don't have a special state for these, just ignore */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1184 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1185 if (strcasecmp((char *)name, "fixed"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1186 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1187 data->state = IN_AVP_GROUPED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1188 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1189 case IN_AVP_GROUPED_REQUIRED:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1190 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1191 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1192 if (strcasecmp((char *)name, "required"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1193 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1194 data->state = IN_AVP_GROUPED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1195 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1196 case IN_AVP_GROUPED_OPTIONAL:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1197 if (!strcasecmp((char *)name, "avprule"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1198 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1199 if (strcasecmp((char *)name, "optional"))
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1200 goto state_machine_error;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1201 data->state = IN_AVP_GROUPED;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1202 break;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1203
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1204 default:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1205 TRACE_DEBUG(INFO, "Internal parsing error, unexpected state %d.", data->state);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1206 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1207
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1208 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1209
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1210 state_machine_error:
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1211 TRACE_DEBUG(INFO, "Internal parsing error, ignored [state %d, closing tag '%s'].", data->state, name);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1212 return;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1213 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1214
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1215 /* The SAX parser sends a warning, error, fatalerror -- do we need these ?
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1216 static void SAXwarning (void * ctx, const char * msg, ...)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1217 {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1218
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1219 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1220 static void SAXerror (void * ctx, const char * msg, ...)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1221 {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1222
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1223 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1224 static void SAXfatal (void * ctx, const char * msg, ...)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1225 {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1226
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1227 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1228 */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1229
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1230
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1231
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1232
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1233 /*********************************************/
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1234 /* 2nd pass: from memory to fD dictionary */
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1235 /*********************************************/
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1236
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1237 /* Find or create a vendor */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1238 static int vend_to_fD(struct t_vend * v, struct dictionary * fD_dict, struct dict_object ** fd_v, int * nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1239 {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1240 int ret;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1241 struct dict_object * prev = NULL;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1242 struct dict_vendor_data vd;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1243
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1244 TRACE_ENTRY("%p %p %p %p", v, fD_dict, fd_v, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1245
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1246 CHECK_PARAMS(v && fD_dict);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1247
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1248 /* Prepare the data in fD's format */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1249 memset(&vd, 0, sizeof(vd));
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1250 vd.vendor_id = v->id;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1251 vd.vendor_name = (char *)v->name;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1252
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1253 /* Create or search in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1254 ret = fd_dict_new ( fD_dict, DICT_VENDOR, &vd, NULL, &prev );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1255 if (fd_v)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1256 *fd_v = prev;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1257 if (ret == EEXIST) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1258 /* Conflict with existing entry */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1259 CHECK_FCT( fd_dict_getval(prev, &vd) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1260 TRACE_DEBUG(INFO, "[dict_legacy_xml] Warning: Conflicting entry.");
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1261 TRACE_DEBUG(INFO, "[dict_legacy_xml] New entry (ignored): %u - '%s'", v->id, (char *)v->name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1262 TRACE_DEBUG(INFO, "[dict_legacy_xml] Old entry : %u - '%s'", vd.vendor_id, vd.vendor_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1263 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1264 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1265 /* other errors are stoppers */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1266 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1267 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1268
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1269 /* Update count */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1270 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1271 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1272
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1273 /* Done */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1274 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1275 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1276
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1277 /* Find the base fD type from a type name */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1278 static int resolve_base_type(struct dictionary * fD_dict, uint8_t * type_name, enum dict_avp_basetype * basetype, struct dict_object **type)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1279 {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1280 int ret;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1281 struct dict_type_data td;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1282 struct dict_object *t;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1283
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1284 TRACE_ENTRY("%p, %p %p", fD_dict, type_name, basetype);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1285 CHECK_PARAMS( fD_dict && type_name && basetype );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1286
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1287 /* First, check if the type is already in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1288 ret = fd_dict_search ( fD_dict, DICT_TYPE, TYPE_BY_NAME, type_name, &t, ENOENT);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1289 switch (ret) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1290 case 0: /* the type is already in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1291 CHECK_FCT( fd_dict_getval(t, &td) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1292 *basetype = td.type_base;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1293 if (type)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1294 *type = t;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1295 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1296
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1297 case ENOENT: /* We did not find it, it is maybe normal */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1298 break;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1299
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1300 default:
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1301 /* An unexpected error occurred */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1302 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1303 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1304
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1305 /* at this point we did not find the type in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1306 #define PREDEF_TYPES( _typename_, _basetype_ ) \
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1307 if (!strcasecmp((char *)type_name, (_typename_))) { \
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1308 *basetype = (_basetype_); \
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1309 return 0; \
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1310 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1311
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1312 PREDEF_TYPES( "OctetString", AVP_TYPE_OCTETSTRING );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1313 PREDEF_TYPES( "Integer32", AVP_TYPE_INTEGER32 );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1314 PREDEF_TYPES( "Integer64", AVP_TYPE_INTEGER64 );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1315 PREDEF_TYPES( "Unsigned32", AVP_TYPE_UNSIGNED32 );
1317
bb5dd52bb9b8 extensions/dict_legacy_xml: enumerated has base type integer32
Thomas Klausner <tk@giga.or.at>
parents: 1127
diff changeset
1316 PREDEF_TYPES( "Enumerated", AVP_TYPE_INTEGER32 );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1317 PREDEF_TYPES( "Unsigned64", AVP_TYPE_UNSIGNED64 );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1318 PREDEF_TYPES( "Float32", AVP_TYPE_FLOAT32 );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1319 PREDEF_TYPES( "Float64", AVP_TYPE_FLOAT64 );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1320
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1321 /* When we reach this point, we have not yet found this type anywhere. */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1322 TODO("Type not found. Maybe search in whole xmldictionary if it is defined later?");
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1323 TRACE_DEBUG(INFO, "The type '%s' could not be resolved. Please check it is defined before use.", type_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1324 return ENOENT;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1325 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1326
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1327 /* Find or create a type. */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1328 static int typdefn_to_fD(struct t_typedefn * t, struct dictionary * fD_dict, struct dict_object * fd_appl, struct dict_object ** fd_t, int * nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1329 {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1330 int ret;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1331 struct dict_object * prev = NULL;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1332 struct dict_type_data td;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1333
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1334 TRACE_ENTRY("%p %p %p %p %p", t, fD_dict, fd_appl, fd_t, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1335
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1336 CHECK_PARAMS(t && fD_dict);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1337
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1338 /* Prepare the data in fD's format */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1339 memset(&td, 0, sizeof(td));
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1340 td.type_name = (char *)t->name;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1341
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1342 /* infer td.type_base from t->parent_name */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1343 CHECK_FCT( resolve_base_type(fD_dict, t->parent_name, &td.type_base, NULL) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1344
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1345 /* Create or search in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1346 ret = fd_dict_new ( fD_dict, DICT_TYPE, &td, fd_appl, &prev );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1347 if (fd_t)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1348 *fd_t = prev;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1349 if (ret == EEXIST) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1350 /* Conflict with existing entry */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1351 enum dict_avp_basetype xmlbt = td.type_base;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1352 extern const char * type_base_name[]; /* in libfreeDiameter/dictionary.c */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1353 CHECK_FCT( fd_dict_getval(prev, &td) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1354 TRACE_DEBUG(INFO, "[dict_legacy_xml] Warning: Conflicting entry.");
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1355 TRACE_DEBUG(INFO, "[dict_legacy_xml] New entry (ignored): '%s' (%d - %s)", t->name, xmlbt, type_base_name[xmlbt] );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1356 TRACE_DEBUG(INFO, "[dict_legacy_xml] Old entry : '%s' (%d - %s)", td.type_name, td.type_base, type_base_name[td.type_base]);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1357 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1358 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1359 /* other errors are stoppers */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1360 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1361 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1362
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1363 /* Update count */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1364 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1365 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1366
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1367 /* Done */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1368 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1369 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1370
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1371 /* Process one list of rules */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1372 static int rules_to_fD_onelist(struct dictionary * fD_dict, struct dict_object * parent, enum rule_position position, struct fd_list * list, int * nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1373 {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1374 struct dict_rule_data rd;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1375 struct fd_list * li;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1376 int order = 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1377 int ret;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1378
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1379 TRACE_ENTRY("%p %p %d %p %p", fD_dict, parent, position, list, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1380
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1381 CHECK_PARAMS(fD_dict && parent && position && list);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1382
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1383 for (li = list->next; li != list; li = li->next) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1384 struct t_rule * r = (struct t_rule *)li;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1385
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1386 /* The [AVP] rule in all ABNF definitions is implicit in freeDiameter, skip it */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1387 if (!strcmp((char *)r->avpname, "AVP"))
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1388 continue;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1389
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1390 /* Prepare rule data */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1391 memset(&rd, 0, sizeof(rd));
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1392 rd.rule_position = position;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1393 rd.rule_order = ++order; /* actually only used for fixed rules, but no harm for others */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1394 rd.rule_min = r->min;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1395 rd.rule_max = r->max;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1396
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1397 /* Resolve the AVP */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1398 ret = fd_dict_search(fD_dict, DICT_AVP, AVP_BY_NAME_ALL_VENDORS, r->avpname, &rd.rule_avp, ENOENT);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1399 if (ret == ENOENT) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1400 TRACE_DEBUG(INFO, "[dict_legacy_xml] Error: AVP '%s' used in a rule before being defined.", r->avpname);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1401 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1402 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1403
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1404 /* Now create the new rule */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1405 CHECK_FCT_DO( ret = fd_dict_new ( fD_dict, DICT_RULE, &rd, parent, NULL ),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1406 { TRACE_DEBUG(INFO, "Error creating rule for sub-AVP '%s'", r->avpname); return ret; } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1407 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1408 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1409 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1410
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1411 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1412 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1413
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1414 /* Process lists of rules */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1415 static int rules_to_fD(struct dictionary * fD_dict, struct dict_object * parent, struct fd_list * fixed, struct fd_list * required, struct fd_list * optional, int * nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1416 {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1417 int ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1418
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1419 TRACE_ENTRY("%p %p %p %p %p %p", fD_dict, parent, fixed, required, optional, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1420
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1421 /* Process the rules */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1422 CHECK_FCT_DO( ret = rules_to_fD_onelist(fD_dict, parent, RULE_FIXED_HEAD, fixed, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1423 { TRACE_DEBUG(INFO, "Error processing FIXED rules"); return ret; } );
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1424 CHECK_FCT_DO( ret = rules_to_fD_onelist(fD_dict, parent, RULE_REQUIRED, required, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1425 { TRACE_DEBUG(INFO, "Error processing REQUIRED rules"); return ret; } );
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1426 CHECK_FCT_DO( ret = rules_to_fD_onelist(fD_dict, parent, RULE_OPTIONAL, optional, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1427 { TRACE_DEBUG(INFO, "Error processing OPTIONAL rules"); return ret; } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1428
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1429 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1430 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1431
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1432 /* Find or create an AVP (and dependent objects) */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1433 static int avp_to_fD(struct t_avp * a, struct dictionary * fD_dict, struct dict_object * fd_appl, struct dict_object ** fd_a, int * nb_added)
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1434 {
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1435 int ret;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1436 struct dict_object * prev = NULL, *type = NULL;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1437 struct dict_avp_data ad;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1438 struct fd_list * li;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1439
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1440 TRACE_ENTRY("%p %p %p %p %p", a, fD_dict, fd_appl, fd_a, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1441
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1442 CHECK_PARAMS(a && fD_dict);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1443
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1444 /* Prepare the data in fD's format */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1445 memset(&ad, 0, sizeof(ad));
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1446 ad.avp_code = a->code;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1447 ad.avp_vendor = a->vendor;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1448 ad.avp_name = (char *)a->name;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1449 ad.avp_flag_mask = a->fmask | AVP_FLAG_VENDOR;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1450 ad.avp_flag_val = a->flags;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1451
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1452 if (!FD_IS_LIST_EMPTY(&a->type)) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1453 /* special exception: we use per-AVP enumerated types in fD */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1454 if (!strcasecmp("Enumerated", (char *)((struct t_avptype *)a->type.next)->type_name))
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1455 goto enumerated;
1317
bb5dd52bb9b8 extensions/dict_legacy_xml: enumerated has base type integer32
Thomas Klausner <tk@giga.or.at>
parents: 1127
diff changeset
1456 /* Let's allow "Integer32" instead of "Enumerated" also... */
bb5dd52bb9b8 extensions/dict_legacy_xml: enumerated has base type integer32
Thomas Klausner <tk@giga.or.at>
parents: 1127
diff changeset
1457 if ((!FD_IS_LIST_EMPTY(&a->enums)) && (!strcasecmp("Integer32", (char *)((struct t_avptype *)a->type.next)->type_name)))
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1458 goto enumerated;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1459
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1460 /* The type was explicitly specified, resolve it */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1461 CHECK_FCT( resolve_base_type(fD_dict, ((struct t_avptype *)a->type.next)->type_name, &ad.avp_basetype, &type) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1462 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1463 /* The type was not specified, try to infer it from provided data */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1464 if ( !FD_IS_LIST_EMPTY(&a->grouped_optional)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1465 || !FD_IS_LIST_EMPTY(&a->grouped_required)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1466 || !FD_IS_LIST_EMPTY(&a->grouped_fixed) ) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1467 /* The AVP has rules, it is a grouped AVP */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1468 CHECK_PARAMS_DO( FD_IS_LIST_EMPTY(&a->enums),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1469 { TRACE_DEBUG(INFO, "Conflict: The AVP '%s' has both enum values and rules.", ad.avp_name); return EINVAL; } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1470 ad.avp_basetype = AVP_TYPE_GROUPED;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1471 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1472 /* It should be an enumerated AVP... */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1473 if (FD_IS_LIST_EMPTY(&a->enums)) {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1474 TRACE_DEBUG(INFO, "Error: Missing type information for AVP '%s'", ad.avp_name);
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1475 return EINVAL;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1476 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1477 /* We create a new type to hold the enumerated values -- fD specifics */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1478 char typename[256];
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1479 struct dict_type_data tdata;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1480
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1481 enumerated:
1318
2a5620128a9a Remove '*' from the couple enumerated values that had them.
Thomas Klausner <tk@giga.or.at>
parents: 1317
diff changeset
1482 snprintf(typename, sizeof(typename), "Enumerated(%s)", ad.avp_name);
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1483 memset(&tdata, 0, sizeof(tdata));
1317
bb5dd52bb9b8 extensions/dict_legacy_xml: enumerated has base type integer32
Thomas Klausner <tk@giga.or.at>
parents: 1127
diff changeset
1484 tdata.type_base = AVP_TYPE_INTEGER32;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1485 tdata.type_name = &typename[0];
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1486 CHECK_FCT( fd_dict_new ( fD_dict, DICT_TYPE, &tdata, fd_appl, &type ) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1487 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1488 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1489
1317
bb5dd52bb9b8 extensions/dict_legacy_xml: enumerated has base type integer32
Thomas Klausner <tk@giga.or.at>
parents: 1127
diff changeset
1490 ad.avp_basetype = AVP_TYPE_INTEGER32;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1491 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1492 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1493 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1494
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1495 /* At this point, ad.avp_basetype is defined and type might also be */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1496
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1497 /* Create or search in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1498 ret = fd_dict_new ( fD_dict, DICT_AVP, &ad, type, &prev );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1499 if (fd_a)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1500 *fd_a = prev;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1501 if (ret == EEXIST) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1502 /* Conflict with existing entry */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1503 CHECK_FCT( fd_dict_getval(prev, &ad) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1504 TRACE_DEBUG(INFO, "[dict_legacy_xml] Warning: Conflicting entry.");
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1505 TRACE_DEBUG(INFO, "[dict_legacy_xml] New entry (ignored): %u - '%s'", a->code, (char *)a->name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1506 TRACE_DEBUG(INFO, "[dict_legacy_xml] Old entry : %u - '%s'", ad.avp_code, ad.avp_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1507 goto inside;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1508 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1509 /* other errors are stoppers */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1510 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1511 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1512
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1513 /* Update count */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1514 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1515 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1516
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1517 inside:
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1518 /* Now, the inner elements, if any */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1519
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1520 if ( (!FD_IS_LIST_EMPTY(&a->enums)) && (ad.avp_basetype != AVP_TYPE_UNSIGNED32)) {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1521 TRACE_DEBUG(INFO, "AVP '%s' type is not an Unsigned32 but it has enum values (invalid in this extension).", ad.avp_name);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1522 return EINVAL;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1523 }
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1524
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1525 /* In case of enumeration, define the enum values */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1526 for (li = a->enums.next; li != &a->enums; li = li->next) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1527 struct t_enum * e = (struct t_enum *)li;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1528 struct dict_enumval_data ed;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1529
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1530 memset(&ed, 0, sizeof(ed));
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1531 ed.enum_name = (char *)e->name;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1532 ed.enum_value.u32 = e->code;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1533
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1534 CHECK_FCT_DO( ret = fd_dict_new ( fD_dict, DICT_ENUMVAL, &ed, type, NULL ),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1535 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1536 TRACE_DEBUG(INFO, "Error defining constant value '%s' for AVP '%s': %s", ed.enum_name, ad.avp_name, strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1537 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1538 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1539 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1540 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1541 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1542
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1543 /* In case of grouped AVP, check the type is really grouped */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1544 if ( !FD_IS_LIST_EMPTY(&a->grouped_optional)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1545 || !FD_IS_LIST_EMPTY(&a->grouped_required)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1546 || !FD_IS_LIST_EMPTY(&a->grouped_fixed) ) {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1547 CHECK_PARAMS_DO( ad.avp_basetype == AVP_TYPE_GROUPED,
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1548 { TRACE_DEBUG(INFO, "Got rules for non-grouped AVP '%s'", ad.avp_name); return EINVAL;} );
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1549 CHECK_FCT_DO( ret = rules_to_fD(fD_dict, prev, &a->grouped_fixed, &a->grouped_required, &a->grouped_optional, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1550 { TRACE_DEBUG(INFO, "Error processing rules for AVP '%s': %s", ad.avp_name, strerror(ret)); return ret; } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1551 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1552
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1553 /* done! */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1554 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1555 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1556
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1557 /* Find or create a command. */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1558 static int cmd_to_fD(struct t_cmd * c, struct dictionary * fD_dict, struct dict_object * fd_appl, struct dict_object ** fd_req, int * nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1559 {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1560 int ret;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1561 struct dict_object * req = NULL, *ans = NULL;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1562 struct dict_cmd_data cd;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1563 char cmdname[512];
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1564
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1565 TRACE_ENTRY("%p %p %p %p %p", c, fD_dict, fd_appl, fd_req, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1566
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1567 CHECK_PARAMS(c && fD_dict);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1568
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1569 /* Prepare the request data in fD's format */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1570 memset(&cd, 0, sizeof(cd));
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1571 cd.cmd_code = c->code;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1572 snprintf(cmdname, sizeof(cmdname), "%s-Request", (char *)c->name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1573 cd.cmd_name = &cmdname[0];
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1574 cd.cmd_flag_mask = c->fmask | CMD_FLAG_REQUEST | CMD_FLAG_ERROR;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1575 cd.cmd_flag_val = c->flags | CMD_FLAG_REQUEST;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1576
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1577 /* Create or search in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1578 ret = fd_dict_new ( fD_dict, DICT_COMMAND, &cd, fd_appl, &req );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1579 if (fd_req)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1580 *fd_req = req;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1581 if (ret == EEXIST) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1582 struct dict_cmd_data prevcd;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1583 /* Conflict with existing entry */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1584 CHECK_FCT( fd_dict_getval(req, &prevcd) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1585 TRACE_DEBUG(INFO, "[dict_legacy_xml] Warning: Conflicting entry.");
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1586 TRACE_DEBUG(INFO, "[dict_legacy_xml] New entry (ignored): %u - '%s'", cd.cmd_code, cd.cmd_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1587 TRACE_DEBUG(INFO, "[dict_legacy_xml] Old entry : %u - '%s'", prevcd.cmd_code, prevcd.cmd_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1588 goto answer;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1589 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1590 /* other errors are stoppers */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1591 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1592 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1593
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1594 /* Update count */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1595 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1596 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1597
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1598 answer:
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1599 /* update data for the answer */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1600 snprintf(cmdname, sizeof(cmdname), "%s-Answer", (char *)c->name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1601 cd.cmd_flag_val &= ~CMD_FLAG_REQUEST;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1602 cd.cmd_flag_mask &= ~CMD_FLAG_ERROR;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1604 ret = fd_dict_new ( fD_dict, DICT_COMMAND, &cd, fd_appl, &ans );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1605 if (ret == EEXIST) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1606 struct dict_cmd_data prevcd;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1607 /* Conflict with existing entry */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1608 CHECK_FCT( fd_dict_getval(ans, &prevcd) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1609 TRACE_DEBUG(INFO, "[dict_legacy_xml] Warning: Conflicting entry.");
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1610 TRACE_DEBUG(INFO, "[dict_legacy_xml] New entry (ignored): %u - '%s'", cd.cmd_code, cd.cmd_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1611 TRACE_DEBUG(INFO, "[dict_legacy_xml] Old entry : %u - '%s'", prevcd.cmd_code, prevcd.cmd_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1612 goto rules;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1613 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1614 /* other errors are stoppers */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1615 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1616 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1617
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1618 /* Update count */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1619 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1620 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1621
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1622 rules:
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1623 /* Now process the rules inside the command */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1624 CHECK_FCT_DO( ret = rules_to_fD(fD_dict, req, &c->reqrules_fixed, &c->reqrules_required, &c->reqrules_optional, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1625 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1626 TRACE_DEBUG(INFO, "Error converting data from request rules: %s", strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1627 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1628 } );
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1629 CHECK_FCT_DO( ret = rules_to_fD(fD_dict, ans, &c->ansrules_fixed, &c->ansrules_required, &c->ansrules_optional, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1630 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1631 TRACE_DEBUG(INFO, "Error converting data from answer rules: %s", strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1632 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1633 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1634
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1635 /* Done */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1636 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1637 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1638
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1639 /* Find or create an application (and dependent objects) */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1640 static int appl_to_fD(struct t_appl * a, struct dictionary * fD_dict, struct dict_object ** fd_a, int * nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1641 {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1642 int ret;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1643 struct dict_object * prev = NULL;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1644 struct dict_application_data ad;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1645 struct fd_list * li;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1646
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1647 TRACE_ENTRY("%p %p %p %p", a, fD_dict, fd_a, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1648
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1649 CHECK_PARAMS(a && fD_dict);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1650
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1651 if (a->id) { /* skip app 0 */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1652
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1653 /* Prepare the data in fD's format */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1654 memset(&ad, 0, sizeof(ad));
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1655 ad.application_id = a->id;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1656 ad.application_name = (char *)a->name;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1657
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1658 /* Create or search in the dictionary */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1659 ret = fd_dict_new ( fD_dict,
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1660 DICT_APPLICATION,
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1661 &ad,
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1662 NULL /* we don't have a parent vendor in XML files, so currently everything links to no vendor */,
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1663 &prev );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1664 if (fd_a)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1665 *fd_a = prev;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1666 if (ret == EEXIST) {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1667 /* Conflict with existing entry */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1668 CHECK_FCT( fd_dict_getval(prev, &ad) );
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1669 TRACE_DEBUG(INFO, "[dict_legacy_xml] Warning: Conflicting entry.");
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1670 TRACE_DEBUG(INFO, "[dict_legacy_xml] New entry (ignored): %u - '%s'", a->id, (char *)a->name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1671 TRACE_DEBUG(INFO, "[dict_legacy_xml] Old entry : %u - '%s'", ad.application_id, ad.application_name);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1672 goto inside;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1673 } else {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1674 /* other errors are stoppers */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1675 CHECK_FCT(ret);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1676 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1677
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1678 /* Update count */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1679 if (nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1680 *nb_added += 1;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1681 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1682
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1683 inside:
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1684 /* Now, the inner elements */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1685
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1686 /* First, define all the types */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1687 for (li = a->types.next; li != &a->types; li = li->next) {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1688 CHECK_FCT_DO( ret = typdefn_to_fD((struct t_typedefn *)li, fD_dict, prev, NULL, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1689 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1690 TRACE_DEBUG(INFO, "Error converting data from typedefn '%s': %s", ((struct t_typedefn *)li)->name, strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1691 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1692 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1693 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1694
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1695 /* Then, AVPs, enums, and grouped AVP rules */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1696 for (li = a->avps.next; li != &a->avps; li = li->next) {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1697 CHECK_FCT_DO( ret = avp_to_fD((struct t_avp *)li, fD_dict, prev, NULL, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1698 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1699 TRACE_DEBUG(INFO, "Error converting data from AVP '%s': %s", ((struct t_avp *)li)->name, strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1700 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1701 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1702 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1703
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1704 /* Finally, the commands and rules */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1705 for (li = a->commands.next; li != &a->commands; li = li->next) {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1706 CHECK_FCT_DO( ret = cmd_to_fD((struct t_cmd *)li, fD_dict, prev, NULL, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1707 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1708 TRACE_DEBUG(INFO, "Error converting data from command '%s': %s", ((struct t_cmd *)li)->name, strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1709 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1710 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1711 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1712
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1713 /* done! */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1714 return 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1715 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1716
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1717
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1718 static int dict_to_fD(struct dictionary * fD_dict, struct t_dictionary * xmldict, int * nb_added)
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1719 {
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1720 struct fd_list * li;
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1721 int ret;
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1722
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1723 TRACE_ENTRY("%p %p %p", fD_dict, xmldict, nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1724
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1725 CHECK_PARAMS(fD_dict && xmldict && nb_added);
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1726
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1727 *nb_added = 0;
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1728
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1729 /* Create all the vendors */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1730 for (li = xmldict->vendors.next; li != &xmldict->vendors; li = li->next) {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1731 CHECK_FCT_DO( ret = vend_to_fD((struct t_vend *)li, fD_dict, NULL, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1732 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1733 TRACE_DEBUG(INFO, "Error converting data from vendor '%s': %s", ((struct t_vend *)li)->name, strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1734 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1735 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1736 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1737
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1738 /* Now, process each application */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1739 CHECK_FCT_DO( ret = appl_to_fD(&xmldict->base_and_applications, fD_dict, NULL, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1740 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1741 TRACE_DEBUG(INFO, "Error converting data from Base application: %s", strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1742 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1743 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1744 for (li = xmldict->base_and_applications.chain.next; li != &xmldict->base_and_applications.chain; li = li->next) {
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1745 CHECK_FCT_DO( ret = appl_to_fD((struct t_appl *) li, fD_dict, NULL, nb_added),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1746 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1747 TRACE_DEBUG(INFO, "Error converting data from application '%s': %s", ((struct t_appl *)li)->name, strerror(ret));
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1748 return ret;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1749 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1750 }
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1751
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1752 /* Complete! */
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1753 return 0;
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1754 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1755
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1756
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1757
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1758
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1759
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1760 /*********************************************/
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1761
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1762 int dict_lxml_parse(char * xmlfilename)
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1763 {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1764 xmlSAXHandler handler;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1765 struct parser_ctx data;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1766 int ret;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1767
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1768 TRACE_ENTRY("%p", xmlfilename);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1769
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1770 CHECK_PARAMS_DO(xmlfilename, { return -1; } );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1771
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1772 TRACE_DEBUG(FULL, "Parsing next XML file: %s...", xmlfilename);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1773
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1774 /* Initialize the parser */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1775 memset(&handler, 0, sizeof(handler));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1776 handler.startElement = SAXstartelem;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1777 handler.endElement = SAXendelem;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1778
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1779 /* Initialize the data */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1780 memset(&data, 0, sizeof(data));
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1781 fd_list_init( &data.dict.vendors, NULL );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1782 fd_list_init( &data.dict.base_and_applications.chain, NULL );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1783 data.dict.base_and_applications.name = (uint8_t *)"[Diameter Base Protocol]";
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1784 fd_list_init( &data.dict.base_and_applications.commands, NULL );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1785 fd_list_init( &data.dict.base_and_applications.types, NULL );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1786 fd_list_init( &data.dict.base_and_applications.avps, NULL );
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1787 data.xmlfilename = xmlfilename;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1788
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1789 /* Parse the file */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1790 ret = xmlSAXUserParseFile(&handler, &data, xmlfilename);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1791 if (ret < 0) {
1105
6b4a417d2845 Fix typo.
Thomas Klausner <tk@giga.or.at>
parents: 1088
diff changeset
1792 TRACE_DEBUG(INFO, "An error occurred while parsing %s, aborting.", xmlfilename);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1793 del_dict_contents(&data.dict);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1794 return -1;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1795 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1796
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1797 TRACE_DEBUG(FULL, "XML file parsing, 1st pass completed.");
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1798 if (TRACE_BOOL(ANNOYING)) {
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1799 dump_dict(&data.dict);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1800 }
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1801
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1802 /* Now, convert all the objects from the temporary tree into the freeDiameter dictionary */
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1803 CHECK_FCT_DO( dict_to_fD(fd_g_config->cnf_dict, &data.dict, &ret),
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1804 {
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1805 TRACE_DEBUG(INFO, "Error while converting data read from file '%s'", xmlfilename);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1806 del_dict_contents(&data.dict);
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1807 return -1;
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1808 } );
603
4df4119a51b1 Completed first version of dict_legacy_xml.fdx
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 600
diff changeset
1809
658
f198d16fa7f4 Initial commit for 1.1.0:
Sebastien Decugis <sdecugis@nict.go.jp>
parents: 616
diff changeset
1810 TRACE_DEBUG(FULL, "Conversion from '%s' to freeDiameter internal format complete.", xmlfilename);
600
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1811
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1812 /* Done */
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1813 del_dict_contents(&data.dict);
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1814
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1815 return ret;
e9c0bdedf2eb Initial draft version of dict_legacy_xml, parses XML file but no conversion to fD yet.
Sebastien Decugis <sdecugis@nict.go.jp>
parents:
diff changeset
1816 }
"Welcome to our mercurial repository"