/* vi: set ts=2: +-------------------+ Christian Schlittchen | | Enno Rehling | Eressea PBEM host | Katja Zedel | (c) 1998 - 2001 | Henning Peters | | Ingo Wilken +-------------------+ Stefan Reich This program may not be used, modified or distributed without prior permission by the authors of Eressea. */ #include #include #include #include static int cbplaintext(const struct xml_stack * stack, const char * c) { puts(c); fflush(stdout); return XML_OK; } static int cbtagend(const struct xml_stack * stack) { xml_tag * tag = stack->tag; printf("\n", tag->name); fflush(stdout); return XML_OK; } static int cbtagbegin(const struct xml_stack * stack) { xml_tag * tag = stack->tag; xml_attrib * xa= tag->attribs; printf("<%s", tag->name); while (xa) { printf(" %s=\"%s\"", xa->name, xa->value); xa = xa->next; } printf(">\n"); fflush(stdout); return XML_OK; } int main(int argc, char** argv) { FILE * istream = stdin; int nretval = -1; if (argc>1) istream = fopen(argv[1], "rt+"); if (istream) { xml_callbacks xml_cb = { NULL }; xml_cb.plaintext = cbplaintext; xml_cb.tagbegin = cbtagbegin; nretval = xml_parse(istream, &xml_cb, NULL); if (istream!=stdin) fclose(istream); if (ostream!=stdout) fclose(ostream); } return nretval; }