360 |
|
|
361 |
static char *process_text(xmlTextReaderPtr reader) { |
static char *process_text(xmlTextReaderPtr reader) { |
362 |
char *text = NULL; |
char *text = NULL; |
363 |
int depth = xmlTextReaderDepth(reader); |
|
364 |
int ret = xmlTextReaderRead(reader); |
if(!xmlTextReaderIsEmptyElement(reader)) { |
365 |
while((ret == 1) && |
|
366 |
((xmlTextReaderNodeType(reader) != XML_READER_TYPE_END_ELEMENT) || |
int depth = xmlTextReaderDepth(reader); |
367 |
(xmlTextReaderDepth(reader) != depth))) { |
int ret = xmlTextReaderRead(reader); |
368 |
|
while((ret == 1) && |
369 |
/* found a text fragment */ |
((xmlTextReaderNodeType(reader) != XML_READER_TYPE_END_ELEMENT) || |
370 |
if((xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) || |
(xmlTextReaderDepth(reader) != depth))) { |
371 |
(xmlTextReaderNodeType(reader) == XML_READER_TYPE_CDATA)) { |
|
372 |
char *frag = (char*)xmlTextReaderConstValue(reader); |
/* found a text fragment */ |
373 |
|
if((xmlTextReaderNodeType(reader) == XML_READER_TYPE_TEXT) || |
374 |
if(!text) text = strdup(frag); |
(xmlTextReaderNodeType(reader) == XML_READER_TYPE_CDATA)) { |
375 |
else { |
char *frag = (char*)xmlTextReaderConstValue(reader); |
376 |
char *old = text; |
|
377 |
text = malloc(strlen(old) + strlen(frag) + 1); |
if(!text) text = strdup(frag); |
378 |
strcpy(text, old); |
else { |
379 |
strcat(text, frag); |
char *old = text; |
380 |
free(old); |
text = malloc(strlen(old) + strlen(frag) + 1); |
381 |
|
strcpy(text, old); |
382 |
|
strcat(text, frag); |
383 |
|
free(old); |
384 |
|
} |
385 |
} |
} |
386 |
|
ret = xmlTextReaderRead(reader); |
387 |
} |
} |
|
ret = xmlTextReaderRead(reader); |
|
388 |
} |
} |
389 |
|
|
390 |
return text; |
return text; |
668 |
(strcasecmp(name, "hints") == 0)) { |
(strcasecmp(name, "hints") == 0)) { |
669 |
if(!cache->hint) { |
if(!cache->hint) { |
670 |
cache->hint = process_text(reader); |
cache->hint = process_text(reader); |
671 |
|
|
672 |
/* often hints aren't more than just a bunch of blanks ... */ |
/* often hints aren't more than just a bunch of blanks ... */ |
673 |
if(cache->hint && all_is_white(cache->hint)) { |
if(cache->hint && all_is_white(cache->hint)) { |
674 |
free(cache->hint); |
free(cache->hint); |