1 /*****************************************************************
4 * Copyright 1999, Clark Cooper
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the license contained in the
9 * COPYING file that comes with the expat distribution.
11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
12 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
13 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
14 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
15 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
16 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
17 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 * Read an XML document from standard input and print an element
20 * outline on standard output.
21 * Must be used with Expat compiled for UTF-8 output.
29 #if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
30 #define XML_FMT_INT_MOD "I64"
32 #define XML_FMT_INT_MOD "ll"
35 #define XML_FMT_INT_MOD "l"
45 start(void *data
, const char *el
, const char **attr
)
49 for (i
= 0; i
< Depth
; i
++)
54 for (i
= 0; attr
[i
]; i
+= 2) {
55 printf(" %s='%s'", attr
[i
], attr
[i
+ 1]);
63 end(void *data
, const char *el
)
68 #ifdef AMIGA_SHARED_LIB
69 #include <proto/expat.h>
71 amiga_main(int argc
, char *argv
[])
74 main(int argc
, char *argv
[])
77 XML_Parser p
= XML_ParserCreate(NULL
);
79 fprintf(stderr
, "Couldn't allocate memory for parser\n");
83 XML_SetElementHandler(p
, start
, end
);
89 len
= fread(Buff
, 1, BUFFSIZE
, stdin
);
91 fprintf(stderr
, "Read error\n");
96 if (XML_Parse(p
, Buff
, len
, done
) == XML_STATUS_ERROR
) {
97 fprintf(stderr
, "Parse error at line %" XML_FMT_INT_MOD
"u:\n%s\n",
98 XML_GetCurrentLineNumber(p
),
99 XML_ErrorString(XML_GetErrorCode(p
)));