Index: trunk/i386/libsaio/xml.c =================================================================== --- trunk/i386/libsaio/xml.c (revision 2158) +++ trunk/i386/libsaio/xml.c (revision 2159) @@ -812,7 +812,7 @@ tmpTag->type = kTagTypeData; tmpTag->string = string; tmpTag->tag = 0; - tmpTag->offset = buffer_start ? buffer - buffer_start: 0; + tmpTag->offset = length; // buffer_start ? buffer - buffer_start: 0; tmpTag->tagNext = 0; *tag = tmpTag; @@ -1114,6 +1114,10 @@ return entry && (entry->type == kTagTypeDict); } +bool XMLIsData(TagPtr entry) +{ + return entry && (entry->type == kTagTypeData); +} TagPtr XMLCastDict(TagPtr dict) { @@ -1139,6 +1143,21 @@ return NULL; } +char* XMLCastData(TagPtr dict, int* length) +{ + if(!dict) return NULL; + + if((dict->type == kTagTypeData) || + (dict->type == kTagTypeKey)) + { + *length = dict->offset; + return dict->string; + } + *length = 0; + return NULL; +} + + long XMLCastStringOffset(TagPtr dict) { if(dict && Index: trunk/i386/libsaio/xml.h =================================================================== --- trunk/i386/libsaio/xml.h (revision 2158) +++ trunk/i386/libsaio/xml.h (revision 2159) @@ -97,12 +97,14 @@ int XMLCastInteger ( TagPtr dict ); TagPtr XMLCastDict ( TagPtr dict ); TagPtr XMLCastArray( TagPtr dict ); +char* XMLCastData( TagPtr dict ); bool XMLIsBoolean(TagPtr entry); bool XMLIsString (TagPtr entry); bool XMLIsInteger(TagPtr entry); bool XMLIsDict (TagPtr entry); bool XMLIsArray (TagPtr entry); +bool XMLIsData (TagPtr entry); bool XMLAddTagToDictionary(TagPtr dict, char* key, TagPtr value);