Ejemplo n.º 1
0
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 */
Ejemplo n.º 2
0
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;
}