BOOL LLGenePool::load() { std::string filename; filename = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"genepool.xml"); if( mLoaded ) { return TRUE; } LLXmlTree xml_tree; BOOL success = xml_tree.parseFile( filename, FALSE ); if( !success ) { return FALSE; } LLXmlTreeNode* root = xml_tree.getRoot(); if( !root ) { return FALSE; } //------------------------------------------------------------------------- // <linden_genepool version="1.0"> (root) //------------------------------------------------------------------------- if( !root->hasName( "linden_genepool" ) ) { llwarns << "Invalid linden_genepool file header: " << filename << llendl; return FALSE; } std::string version; static LLStdStringHandle version_string = LLXmlTree::addAttributeString("version"); if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") ) { llwarns << "Invalid linden_genepool file version: " << version << llendl; return FALSE; } //------------------------------------------------------------------------- // <archetype> //------------------------------------------------------------------------- for (LLXmlTreeNode* child = root->getChildByName( "archetype" ); child; child = root->getNextNamedChild()) { if( !loadNodeArchetype( child ) ) { return FALSE; } } mLoaded = TRUE; return TRUE; }
static BOOL loadAttentions() { static BOOL first_time = TRUE; if( ! first_time) { return TRUE; // maybe not ideal but otherwise it can continue to fail forever. } first_time = FALSE; std::string filename; filename = gDirUtilp->getExpandedFilename(LL_PATH_CHARACTER,"attentions.xml"); LLXmlTree xml_tree; BOOL success = xml_tree.parseFile( filename, FALSE ); if( !success ) { return FALSE; } LLXmlTreeNode* root = xml_tree.getRoot(); if( !root ) { return FALSE; } //------------------------------------------------------------------------- // <linden_attentions version="1.0"> (root) //------------------------------------------------------------------------- if( !root->hasName( "linden_attentions" ) ) { llwarns << "Invalid linden_attentions file header: " << filename << llendl; return FALSE; } std::string version; static LLStdStringHandle version_string = LLXmlTree::addAttributeString("version"); if( !root->getFastAttributeString( version_string, version ) || (version != "1.0") ) { llwarns << "Invalid linden_attentions file version: " << version << llendl; return FALSE; } //------------------------------------------------------------------------- // <gender> //------------------------------------------------------------------------- for (LLXmlTreeNode* child = root->getChildByName( "gender" ); child; child = root->getNextNamedChild()) { if( !loadGender( child ) ) { return FALSE; } } return TRUE; }