Index: branches/ErmaC/Enoch/i386/libsaio/xml.c =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/xml.c (revision 2865) +++ branches/ErmaC/Enoch/i386/libsaio/xml.c (revision 2866) @@ -905,10 +905,11 @@ // ParseTagData static long ParseTagData( char *buffer, TagPtr *tag) { - int actuallen = 0; - long length = 0; + //int actuallen = 0; + int len = 0; + long length = 0; TagPtr tmpTag; - char *string; + char *tmpString; length = FixDataMatchingTag(buffer, kXMLTagData); if (length == -1) @@ -921,18 +922,14 @@ { return -1; } - - //printf("ParseTagData unimplimented\n"); - //printf("Data: %s\n", buffer); - // getchar(); - - string = BASE64Decode(buffer, strlen(buffer), &actuallen); + tmpString = NewSymbol(buffer); tmpTag->type = kTagTypeData; - tmpTag->string = string; + tmpTag->string = tmpString; + tmpTag->data = (UInt8 *)BASE64Decode(buffer, strlen(buffer), &len); + tmpTag->dataLen = len; tmpTag->tag = NULL; - tmpTag->offset = actuallen; // buffer_start ? buffer - buffer_start: 0; - + tmpTag->offset = /* actuallen; */ buffer_start ? buffer - buffer_start: 0; tmpTag->tagNext = NULL; *tag = tmpTag; @@ -1100,6 +1097,8 @@ { tag[cnt].type = kTagTypeNone; tag[cnt].string = 0; + tag[cnt].data = 0; + tag[cnt].dataLen = 0; tag[cnt].tag = 0; tag[cnt].tagNext = tag + cnt + 1; } @@ -1135,6 +1134,8 @@ // Clear and free the tag. tag->type = kTagTypeNone; tag->string = NULL; + tag->data = NULL; + tag->dataLen = 0; tag->tag = NULL; tag->offset = 0; tag->tagNext = gTagsFree; @@ -1176,6 +1177,7 @@ if (symbol == NULL) { stop("NULL symbol!"); + return NULL; } // Set the symbol's data. Index: branches/ErmaC/Enoch/i386/libsaio/xml.h =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/xml.h (revision 2865) +++ branches/ErmaC/Enoch/i386/libsaio/xml.h (revision 2866) @@ -62,6 +62,8 @@ #define kXMLTagReference "reference" #define kXMLStringID "ID=" #define kXMLStringIDRef "IDREF=" +#define kXMLStringIDRefs "IDREFS=" +#define kXMLTagSIZE "size=" #define kPropCFBundleIdentifier ("CFBundleIdentifier") #define kPropCFBundleExecutable ("CFBundleExecutable") Index: branches/ErmaC/Enoch/i386/libsaio/stringTable.c =================================================================== --- branches/ErmaC/Enoch/i386/libsaio/stringTable.c (revision 2865) +++ branches/ErmaC/Enoch/i386/libsaio/stringTable.c (revision 2866) @@ -364,6 +364,26 @@ const char *key_val; int size; + // looking for real boolean ( or ) + // if is a boolean tag, return immediately + TagPtr entry = XMLGetProperty(config->dictionary,key); + + if(XMLIsBoolean(entry)) + { + int value = XMLCastBoolean(entry); + if (value) { + *result_val = true; + return true; + } + else + { + *result_val = false; + return false; + } + } + + // check if is a boolean as "string" (Yes/No) + // (IMHO this should be deprecated soon) if (getValueForKey(key, &key_val, &size, config)) { if ((size >= 1) && (key_val[0] == 'Y' || key_val[0] == 'y')) Index: branches/ErmaC/Enoch/i386/boot2/drivers.c =================================================================== --- branches/ErmaC/Enoch/i386/boot2/drivers.c (revision 2865) +++ branches/ErmaC/Enoch/i386/boot2/drivers.c (revision 2866) @@ -650,12 +650,12 @@ // LoadMatchedModules long LoadMatchedModules( void ) { - TagPtr prop; - ModulePtr module; - char *fileName, segName[32]; - DriverInfoPtr driver; - long length, driverAddr, driverLength; - void *executableAddr = 0; + TagPtr prop; + ModulePtr module; + char *fileName, segName[32]; + DriverInfoPtr driver; + long length, driverAddr, driverLength; + void *executableAddr = 0; module = gModuleHead;