void exoFlickrUploadResponse::completedRaw( U32 status, const std::string& reason, const LLChannelDescriptors& channels, const LLIOPipe::buffer_ptr_t& buffer) { LLBufferStream istr(channels, buffer.get()); std::stringstream strstrm; strstrm << istr.rdbuf(); std::string result = std::string(strstrm.str()); LLSD output; bool success; LLXmlTree tree; if(!tree.parseString(result)) { LL_WARNS("FlickrAPI") << "Couldn't parse flickr response(" << status << "): " << result << LL_ENDL; mCallback(false, LLSD()); return; } LLXmlTreeNode* root = tree.getRoot(); if(!root->hasName("rsp")) { LL_WARNS("FlickrAPI") << "Bad root node: " << root->getName() << LL_ENDL; mCallback(false, LLSD()); return; } std::string stat; root->getAttributeString("stat", stat); output["stat"] = stat; if(stat == "ok") { success = true; LLXmlTreeNode* photoid_node = root->getChildByName("photoid"); if(photoid_node) { output["photoid"] = photoid_node->getContents(); } } else { success = false; LLXmlTreeNode* err_node = root->getChildByName("err"); if(err_node) { S32 code; std::string msg; err_node->getAttributeS32("code", code); err_node->getAttributeString("msg", msg); output["code"] = code; output["msg"] = msg; } } mCallback(success, output); }
BOOL LLTexGlobalColorInfo::parseXml(LLXmlTreeNode* node) { // name attribute static LLStdStringHandle name_string = LLXmlTree::addAttributeString("name"); if (!node->getFastAttributeString(name_string, mName)) { llwarns << "<global_color> element is missing name attribute." << llendl; return FALSE; } // <param> sub-element for (LLXmlTreeNode* child = node->getChildByName("param"); child; child = node->getNextNamedChild()) { if (child->getChildByName("param_color")) { // <param><param_color/></param> LLTexLayerParamColorInfo* info = new LLTexLayerParamColorInfo(); if (!info->parseXml(child)) { delete info; return FALSE; } mParamColorInfoList.push_back(info); } } return TRUE; }
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; }