int main(int argc, char **argv) { AppData *ad; XML_Parser p = XML_ParserCreateNS(NULL, '|'); if (! p) { fprintf(stderr, "Couldn't allocate memory for parser\n"); exit(-1); } ad = newAppData(); XML_SetUserData(p, (void *) ad); XML_SetElementHandler(p, start, end); XML_SetNamespaceDeclHandler(p, ns_start, ns_end); for (;;) { char *buff; int len; buff = XML_GetBuffer(p, CHUNK_SIZE); if (! buff) { fprintf(stderr, "Ran out of memory for parse buffer\n"); exit(-1); } len = read(0, buff, CHUNK_SIZE); if (len < 0) { perror("namespace - read error"); exit(-1); } if (! XML_ParseBuffer(p, len, len == 0)) { fprintf(stderr, "Parse error at line %lu:\n%s\n", XML_GetCurrentLineNumber(p), XML_ErrorString(XML_GetErrorCode(p))); exit(-1); } if (len == 0) break; } return 0; } /* End main */
void read_maxgroups(char *pPath) { int i; AppData *ad; int f; XML_Parser p = XML_ParserCreateNS(NULL, '|'); if (!p) { fprintf(stderr, "Couldn't allocate memory for parser!\n"); exit(1); } ad = newAppData(); // null them out for (i = 0; i < 1000; i++) { maxgroup[i] = -1; // no way a 2 digit group # will match that } // parse the SSN.xml we've been passed and populate the maxgroup // array XML_SetUserData(p, (void *) ad); XML_SetElementHandler(p, start, end); XML_SetNamespaceDeclHandler(p, ns_start, ns_end); f = open(pPath, O_RDONLY); if (f < 0) { fprintf(stderr, "can't open %s: %s\n", pPath, strerror(errno)); exit(1); } for (;;) { char *buff; int len; buff = XML_GetBuffer(p, CHUNK_SIZE); if (! buff) { fprintf(stderr, "parse buffer\n"); exit(1); } len = read(f, buff, CHUNK_SIZE); if (len < 0) { fprintf(stderr, "XML read error\n"); exit(1); } if (! XML_ParseBuffer(p, len, len == 0)) { fprintf(stderr, "Parse error at line %d:\n%s\n", XML_GetCurrentLineNumber(p), XML_ErrorString(XML_GetErrorCode(p))); exit(1); } if (len == 0) { break; } } return; }