File: | libsynthesis/src/syncml_tk/src/sml/xlt/all/xltmetinf.c |
Warning: | line 127, column 5 Value stored to 'pScanner' is never read |
1 | /** |
2 | * @file |
3 | * MetaInf DTD related functions for the en-/decoder |
4 | * |
5 | * @target_system all |
6 | * @target_os all |
7 | */ |
8 | |
9 | /* |
10 | * Copyright Notice |
11 | * Copyright (c) Ericsson, IBM, Lotus, Matsushita Communication |
12 | * Industrial Co., Ltd., Motorola, Nokia, Openwave Systems, Inc., |
13 | * Palm, Inc., Psion, Starfish Software, Symbian, Ltd. (2001). |
14 | * All Rights Reserved. |
15 | * Implementation of all or part of any Specification may require |
16 | * licenses under third party intellectual property rights, |
17 | * including without limitation, patent rights (such a third party |
18 | * may or may not be a Supporter). The Sponsors of the Specification |
19 | * are not responsible and shall not be held responsible in any |
20 | * manner for identifying or failing to identify any or all such |
21 | * third party intellectual property rights. |
22 | * |
23 | * THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN ARE PROVIDED |
24 | * ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND AND ERICSSON, IBM, |
25 | * LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO. LTD, MOTOROLA, |
26 | * NOKIA, PALM INC., PSION, STARFISH SOFTWARE AND ALL OTHER SYNCML |
27 | * SPONSORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING |
28 | * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION |
29 | * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF |
30 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT |
31 | * SHALL ERICSSON, IBM, LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO., |
32 | * LTD, MOTOROLA, NOKIA, PALM INC., PSION, STARFISH SOFTWARE OR ANY |
33 | * OTHER SYNCML SPONSOR BE LIABLE TO ANY PARTY FOR ANY LOSS OF |
34 | * PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF |
35 | * BUSINESS, OR FOR DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL, |
36 | * PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND IN CONNECTION WITH |
37 | * THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED |
38 | * OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE. |
39 | * |
40 | * The above notice and this paragraph must be included on all copies |
41 | * of this document that are made. |
42 | * |
43 | */ |
44 | #include "syncml_tk_prefix_file.h" // %%% luz: needed for precompiled headers in eVC++ |
45 | |
46 | #include "define.h" |
47 | #ifdef __USE_METINF__ |
48 | |
49 | #include "smlmetinfdtd.h" |
50 | #include "xlttags.h" |
51 | #include "xltmetinf.h" |
52 | #include "xlttagtbl.h" |
53 | #include "xltenc.h" |
54 | #include "xltencwbxml.h" |
55 | |
56 | #include "define.h" |
57 | #include "libstr.h" |
58 | #include "smlerr.h" |
59 | #include "smldtd.h" |
60 | #include "libmem.h" |
61 | #include "libutil.h" |
62 | /* extern */ |
63 | extern SML_API void smlFreeMetinfAnchor(SmlMetInfAnchorPtr_t data) XLT_FUNC; |
64 | extern SML_API void smlFreeMetinfMem(SmlMetInfMemPtr_t data) XLT_FUNC; |
65 | extern SML_API void smlFreeMetinfMetinf(SmlMetInfMetInfPtr_t data) XLT_FUNC; |
66 | |
67 | |
68 | /* decoder callbacks */ |
69 | Ret_t buildMetInfAnchorCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) { |
70 | XltDecScannerPtr_t pScanner; |
71 | SmlMetInfAnchorPtr_t pAnchor; |
72 | Ret_t rc; |
73 | |
74 | pScanner = pDecoder->scanner; |
75 | |
76 | if (*ppElem != NULL((void*)0)) |
77 | return SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC,pScanner,"buildMetInfAnchorCmd")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfAnchorCmd" ); |
78 | |
79 | if ((pAnchor = (SmlMetInfAnchorPtr_t)smlLibMalloc(sizeof(SmlMetInfAnchor_t))) == NULL((void*)0)) |
80 | return SML_ERR_NOT_ENOUGH_SPACE0x11; |
81 | smlLibMemset(pAnchor, 0, sizeof(SmlMetInfAnchor_t)); |
82 | |
83 | if (IS_EMPTY(pScanner->curtok)((pScanner->curtok)->type == TOK_TAG_EMPTY)) { |
84 | *ppElem = pAnchor; |
85 | return SML_ERR_OK0x00; |
86 | } |
87 | |
88 | if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) { |
89 | smlFreeMetinfAnchor(pAnchor); |
90 | //smlLibFree(pAnchor); |
91 | return rc; |
92 | } |
93 | |
94 | while (pScanner->curtok->type != TOK_TAG_END) { |
95 | switch (pScanner->curtok->tagid) { |
96 | /* PCDATA elements */ |
97 | case TN_METINF_LAST: |
98 | rc = buildPCData(pDecoder, (VoidPtr_t)&pAnchor->last); |
99 | break; |
100 | case TN_METINF_NEXT: |
101 | rc = buildPCData(pDecoder, (VoidPtr_t)&pAnchor->next); |
102 | break; |
103 | default: |
104 | rc = SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC,pScanner,"buildMetInfAnchorCmd_2")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfAnchorCmd_2" ); |
105 | } |
106 | if (rc != SML_ERR_OK0x00) { |
107 | smlFreeMetinfAnchor(pAnchor); |
108 | //smlLibFree(pAnchor); |
109 | return rc; |
110 | } |
111 | if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) { |
112 | smlFreeMetinfAnchor(pAnchor); |
113 | //smlLibFree(pAnchor); |
114 | return rc; |
115 | } |
116 | } |
117 | *ppElem = pAnchor; |
118 | |
119 | return SML_ERR_OK0x00; |
120 | } |
121 | |
122 | Ret_t buildMetinfNextCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) { |
123 | XltDecScannerPtr_t pScanner; |
124 | SmlMetInfAnchorPtr_t pAnchor; |
125 | Ret_t rc; |
126 | |
127 | pScanner = pDecoder->scanner; |
Value stored to 'pScanner' is never read | |
128 | |
129 | if (*ppElem == NULL((void*)0)) { |
130 | if ((pAnchor = (SmlMetInfAnchorPtr_t)smlLibMalloc(sizeof(SmlMetInfAnchor_t))) == NULL((void*)0)) |
131 | return SML_ERR_NOT_ENOUGH_SPACE0x11; |
132 | smlLibMemset(pAnchor, 0, sizeof(SmlMetInfAnchor_t)); |
133 | } else { |
134 | pAnchor = (SmlMetInfAnchorPtr_t)*ppElem; |
135 | if (pAnchor->next != NULL((void*)0)) |
136 | return SML_ERR_XLT_INVAL_SYNCML_DOC0x200B; |
137 | } |
138 | |
139 | rc = buildPCData(pDecoder, (VoidPtr_t)&pAnchor->next); |
140 | |
141 | if (rc != SML_ERR_OK0x00 && ppElem == NULL((void*)0)) { |
142 | smlFreeMetinfAnchor(pAnchor); |
143 | return rc; |
144 | } |
145 | |
146 | if (ppElem == NULL((void*)0)) { |
147 | *ppElem = pAnchor; |
148 | } |
149 | |
150 | return SML_ERR_OK0x00; |
151 | } |
152 | |
153 | Ret_t buildMetInfMemCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) { |
154 | XltDecScannerPtr_t pScanner; |
155 | SmlMetInfMemPtr_t pMem; |
156 | Ret_t rc; |
157 | |
158 | pScanner = pDecoder->scanner; |
159 | |
160 | if (*ppElem != NULL((void*)0)) |
161 | return SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMemCmd")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMemCmd" ); |
162 | |
163 | if ((pMem = (SmlMetInfMemPtr_t)smlLibMalloc(sizeof(SmlMetInfMem_t))) == NULL((void*)0)) |
164 | return SML_ERR_NOT_ENOUGH_SPACE0x11; |
165 | smlLibMemset(pMem, 0, sizeof(SmlMetInfMem_t)); |
166 | |
167 | if (IS_EMPTY(pScanner->curtok)((pScanner->curtok)->type == TOK_TAG_EMPTY)) { |
168 | *ppElem = pMem; |
169 | return SML_ERR_OK0x00; |
170 | } |
171 | |
172 | if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) { |
173 | smlFreeMetinfMem(pMem); |
174 | //smlLibFree(pMem); |
175 | return rc; |
176 | } |
177 | |
178 | while (pScanner->curtok->type != TOK_TAG_END) { |
179 | switch (pScanner->curtok->tagid) { |
180 | /* %%% luz 2005-08-24 :this definition was plain wrong - shared is a flag, not Pcdata! |
181 | case TN_METINF_SHAREDMEM: |
182 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMem->shared); |
183 | break; */ |
184 | |
185 | /* PCDATA elements */ |
186 | case TN_METINF_FREEMEM: |
187 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMem->free); |
188 | break; |
189 | case TN_METINF_FREEID: |
190 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMem->freeid); |
191 | break; |
192 | |
193 | /* flags */ |
194 | case TN_METINF_SHAREDMEM: |
195 | pMem->flags |= SmlMetInfSharedMem_f0x0002; |
196 | rc = buildEmptyTag(pDecoder); // allow for <tag></tag> instead of <tag/> |
197 | break; |
198 | |
199 | default: |
200 | rc = SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMemCmd_2")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMemCmd_2" ); |
201 | } |
202 | if (rc != SML_ERR_OK0x00) { |
203 | smlFreeMetinfMem(pMem); |
204 | //smlLibFree(pMem); |
205 | return rc; |
206 | } |
207 | if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) { |
208 | smlFreeMetinfMem(pMem); |
209 | //smlLibFree(pMem); |
210 | return rc; |
211 | } |
212 | } |
213 | *ppElem = pMem; |
214 | |
215 | return SML_ERR_OK0x00; |
216 | } |
217 | |
218 | Ret_t buildMetInfMetInfCmd(XltDecoderPtr_t pDecoder, VoidPtr_t *ppElem) { |
219 | XltDecScannerPtr_t pScanner; |
220 | SmlMetInfMetInfPtr_t pMeta; |
221 | Ret_t rc; |
222 | int foundWrapper = 0; |
223 | |
224 | pScanner = pDecoder->scanner; |
225 | |
226 | if (*ppElem != NULL((void*)0)) |
227 | return SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMetInfCmd")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMetInfCmd" ); |
228 | |
229 | if ((pMeta = (SmlMetInfMetInfPtr_t)smlLibMalloc(sizeof(SmlMetInfMetInf_t))) == NULL((void*)0)) |
230 | return SML_ERR_NOT_ENOUGH_SPACE0x11; |
231 | smlLibMemset(pMeta, 0, sizeof(SmlMetInfMetInf_t)); |
232 | |
233 | if (IS_EMPTY(pScanner->curtok)((pScanner->curtok)->type == TOK_TAG_EMPTY)) { |
234 | *ppElem = pMeta; |
235 | return SML_ERR_OK0x00; |
236 | } |
237 | |
238 | if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) { |
239 | smlFreeMetinfMetinf(pMeta); |
240 | //smlLibFree(pMeta); |
241 | return rc; |
242 | } |
243 | |
244 | while (pScanner->curtok->type != TOK_TAG_END) { |
245 | switch (pScanner->curtok->tagid) { |
246 | case TN_METINF_METINF: /* ignore - it's just the wrapper tag */ |
247 | foundWrapper = 1; |
248 | break; |
249 | case TN_METINF_FORMAT: |
250 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->format); |
251 | break; |
252 | case TN_METINF_TYPE: |
253 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->type); |
254 | break; |
255 | case TN_METINF_MARK: |
256 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->mark); |
257 | break; |
258 | case TN_METINF_SIZE: |
259 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->size); |
260 | break; |
261 | case TN_METINF_VERSION: |
262 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->version); |
263 | break; |
264 | case TN_METINF_NEXTNONCE: |
265 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->nextnonce); |
266 | break; |
267 | case TN_METINF_ANCHOR: |
268 | rc = buildMetInfAnchorCmd(pDecoder, (VoidPtr_t)&pMeta->anchor); |
269 | break; |
270 | case TN_METINF_MAXMSGSIZE: |
271 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->maxmsgsize); |
272 | break; |
273 | /* SCTSTK - 18/03/2002 S.H. 2002-04-05: SyncML 1.1 */ |
274 | case TN_METINF_MAXOBJSIZE: |
275 | rc = buildPCData(pDecoder, (VoidPtr_t)&pMeta->maxobjsize); |
276 | break; |
277 | case TN_METINF_MEM: |
278 | rc = buildMetInfMemCmd(pDecoder, (VoidPtr_t)&pMeta->mem); |
279 | break; |
280 | case TN_METINF_EMI: |
281 | rc = buildPCDataList(pDecoder, (VoidPtr_t)&pMeta->emi); |
282 | break; |
283 | |
284 | /* SyncML DS 1.2, Synthesis/luz 2005-08-24 */ |
285 | case TN_METINF_FIELDLEVEL: |
286 | pMeta->flags |= SmlMetInfFieldLevel_f0x0004; |
287 | rc = buildEmptyTag(pDecoder); // allow for <tag></tag> instead of <tag/> |
288 | break; |
289 | |
290 | /* Next without Anchor, Andris Pavenis 2012-05-29 */ |
291 | case TN_METINF_NEXT: |
292 | rc = buildMetinfNextCmd(pDecoder, (VoidPtr_t)&pMeta->anchor); |
293 | break; |
294 | |
295 | default: |
296 | rc = SML_DECODEERROR(SML_ERR_XLT_INVAL_SYNCML_DOC, pScanner, "buildMetInfMetInfCmd_2")show_decode_error(0x200B,(XltDecScannerPtr_t)pScanner,"buildMetInfMetInfCmd_2" ); |
297 | } |
298 | if (rc != SML_ERR_OK0x00) { |
299 | smlFreeMetinfMetinf(pMeta); |
300 | //smlLibFree(pMeta); |
301 | return rc; |
302 | } |
303 | if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) { |
304 | smlFreeMetinfMetinf(pMeta); |
305 | //smlLibFree(pMeta); |
306 | return rc; |
307 | } |
308 | } |
309 | |
310 | if (foundWrapper) { |
311 | /* Optional Metinf root tag was used in this message. |
312 | * The actual token is the closing root tag. |
313 | * It is required that the scanner points to the first tag _after_ |
314 | * <MetInf>...</MetInf>, so we just skip to the next token and continue. |
315 | */ |
316 | if (((rc = nextToken(pDecoder)) != SML_ERR_OK0x00)) { |
317 | smlFreeMetinfMetinf(pMeta); |
318 | //smlLibFree(pMeta); |
319 | return rc; |
320 | } |
321 | } |
322 | *ppElem = pMeta; |
323 | |
324 | return SML_ERR_OK0x00; |
325 | } |
326 | |
327 | |
328 | |
329 | /* see xltenc.c:XltEncBlock for description of parameters */ |
330 | Ret_t metinfEncBlock(XltTagID_t tagId, XltRO_t reqOptFlag, const VoidPtr_t pContent, SmlEncoding_t enc, BufferMgmtPtr_t pBufMgr, SmlPcdataExtension_t attFlag) { |
331 | //Return variable |
332 | Ret_t _err; |
333 | SmlPcdataListPtr_t pList = NULL((void*)0); |
334 | //Check if pContent of a required field is missing |
335 | if ((reqOptFlag == REQUIRED) && (pContent == NULL((void*)0))) |
336 | return SML_ERR_XLT_MISSING_CONT0x2001; |
337 | //Check if pContent of a optional field is missing -> if yes we are done |
338 | else if (pContent == NULL((void*)0)) |
339 | return SML_ERR_OK0x00; |
340 | |
341 | //Generate the commands -> see DTD |
342 | switch (tagId) { |
343 | case TN_METINF_ANCHOR: |
344 | if ((_err = xltGenerateTag(TN_METINF_ANCHOR, TT_BEG, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
345 | if ((_err = metinfEncBlock(TN_METINF_LAST, OPTIONAL, ((SmlMetInfAnchorPtr_t) pContent)->last, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
346 | if ((_err = metinfEncBlock(TN_METINF_NEXT, REQUIRED, ((SmlMetInfAnchorPtr_t) pContent)->next, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
347 | if ((_err = xltGenerateTag(TN_METINF_ANCHOR, TT_END, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
348 | break; |
349 | case TN_METINF_MEM: |
350 | if ((_err = xltGenerateTag(TN_METINF_MEM, TT_BEG, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
351 | if ((_err = metinfEncBlock(TN_METINF_SHAREDMEM, OPTIONAL, &(((SmlMetInfMemPtr_t) pContent)->flags), enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
352 | if ((_err = metinfEncBlock(TN_METINF_FREEMEM, REQUIRED, ((SmlMetInfMemPtr_t) pContent)->free, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
353 | if ((_err = metinfEncBlock(TN_METINF_FREEID, REQUIRED, ((SmlMetInfMemPtr_t) pContent)->freeid, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
354 | if ((_err = xltGenerateTag(TN_METINF_MEM, TT_END, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
355 | break; |
356 | case TN_METINF_SHAREDMEM: |
357 | //set the flag in the (WB)XML document if the flag is in the pContent |
358 | if ((*((Flag_t *) pContent)) & (SmlMetInfSharedMem_f0x0002)) |
359 | if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
360 | break; |
361 | case TN_METINF_FIELDLEVEL: |
362 | //set the flag in the (WB)XML document if the flag is in the pContent |
363 | if ((*((Flag_t *) pContent)) & (SmlMetInfFieldLevel_f0x0004)) |
364 | if ((_err = xltGenerateTag(tagId, TT_ALL, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
365 | break; |
366 | case TN_METINF_METINF: |
367 | //if ((_err = xltGenerateTag(TN_METINF_METINF, TT_BEG, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK) return _err; |
368 | if ((_err = metinfEncBlock(TN_METINF_FORMAT, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->format, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
369 | if ((_err = metinfEncBlock(TN_METINF_TYPE, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->type, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
370 | if ((_err = metinfEncBlock(TN_METINF_MARK, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->mark, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
371 | if ((_err = metinfEncBlock(TN_METINF_SIZE, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->size, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
372 | if ((_err = metinfEncBlock(TN_METINF_ANCHOR, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->anchor, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
373 | if ((_err = metinfEncBlock(TN_METINF_VERSION, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->version, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
374 | if ((_err = metinfEncBlock(TN_METINF_NEXTNONCE, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->nextnonce, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
375 | if ((_err = metinfEncBlock(TN_METINF_MAXMSGSIZE,OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->maxmsgsize, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
376 | // %%% luz 2003-04-24: added maxobjsize generation (was missing = bug in original RTK 4.1) |
377 | if ((_err = metinfEncBlock(TN_METINF_MAXOBJSIZE,OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->maxobjsize, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
378 | pList = ((SmlMetInfMetInfPtr_t)pContent)->emi; |
379 | while (pList != NULL((void*)0)) { |
380 | if ((_err = xltEncBlock(TN_METINF_EMI, OPTIONAL, pList->data, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
381 | pList = pList->next; |
382 | }; |
383 | |
384 | if ((_err = metinfEncBlock(TN_METINF_MEM, OPTIONAL, ((SmlMetInfMetInfPtr_t) pContent)->mem, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
385 | /* SyncML DS 1.2, Synthesis/luz 2005-08-24 */ |
386 | if ((_err = metinfEncBlock(TN_METINF_FIELDLEVEL,OPTIONAL, &(((SmlMetInfMetInfPtr_t) pContent)->flags), enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK0x00) return _err; |
387 | |
388 | //if ((_err = xltGenerateTag(TN_METINF_METINF, TT_END, enc, pBufMgr, SML_EXT_METINF)) != SML_ERR_OK) return _err; |
389 | break; |
390 | default: { // all leaf nodes (PCDATA#) |
391 | return xltEncPcdata(tagId, reqOptFlag, pContent, enc, pBufMgr, attFlag); |
392 | } /* eof default statement from switch tagid */ |
393 | } /* eof switch tagid */ |
394 | return SML_ERR_OK0x00; |
395 | } |
396 | |
397 | #endif /* __USE_METINF__ */ |
398 |