- /* printf("PI %s\n", xmlGetNodePath(node)); */
-
- /* if right PI name, continue parsing PI */
- if (0 == strcmp(zebra_pi_name, (const char *)node->name)){
- xmlChar *pi_p = node->content;
- xmlChar *look = pi_p;
-
- xmlChar *bval;
- xmlChar *eval;
-
- /* parsing PI record instructions */
- if (0 == strncmp((const char *)look, "record", 6)){
- xmlChar id[256];
- xmlChar rank[256];
- xmlChar action[256];
-
- *id = '\0';
- *rank = '\0';
- *action = '\0';
-
- look += 6;
-
- /* eat whitespace */
- while (*look && ' ' == *look && *(look+1))
- look++;
-
- /* parse possible id */
- if (*look && 0 == strncmp((const char *)look, "id=", 3)){
- look += 3;
- bval = look;
- while (*look && ' ' != *look)
- look++;
- eval = look;
- strncpy((char *)id, (const char *)bval, eval - bval);
- id[eval - bval] = '\0';
- }
-
- /* eat whitespace */
- while (*look && ' ' == *look && *(look+1))
- look++;
-
- /* parse possible rank */
- if (*look && 0 == strncmp((const char *)look, "rank=", 5)){
- look += 6;
- bval = look;
- while (*look && ' ' != *look)
- look++;
- eval = look;
- strncpy((char *)rank, (const char *)bval, eval - bval);
- rank[eval - bval] = '\0';
- }
-
- /* eat whitespace */
- while (*look && ' ' == *look && *(look+1))
- look++;
-
- if (look && '\0' != *look){
- printf ("ERROR %s: content '%s'; can not parse '%s'\n",
- xmlGetNodePath(node), pi_p, look);
- } else {
- /* set_record_info(id, rank, action); */
- set_record_info(tinfo, recctr, id, rank, 0);
- }
-
- }
-
- /* parsing index instruction */
- else if (0 == strncmp((const char *)look, "index", 5)){
- look += 5;
-
- /* eat whitespace */
- while (*look && ' ' == *look && *(look+1))
- look++;
-
- /* export index instructions to outside */
- *index_pp = look;
-
- /* nor record, neither index */
- } else {
-
- printf ("ERROR %s: content '%s'; can not parse '%s'\n",
- xmlGetNodePath(node), pi_p, look);
- }
- }