diff options
Diffstat (limited to 'linden/indra/newview/hippoGridManager.cpp')
-rw-r--r-- | linden/indra/newview/hippoGridManager.cpp | 194 |
1 files changed, 137 insertions, 57 deletions
diff --git a/linden/indra/newview/hippoGridManager.cpp b/linden/indra/newview/hippoGridManager.cpp index e89e3ff..c9f2549 100644 --- a/linden/indra/newview/hippoGridManager.cpp +++ b/linden/indra/newview/hippoGridManager.cpp | |||
@@ -1,4 +1,4 @@ | |||
1 | 1 | // Ported to Imprudence from the Hippo OpenSim Viewer by Jacek Antonelli | |
2 | 2 | ||
3 | #include "llviewerprecompiledheaders.h" | 3 | #include "llviewerprecompiledheaders.h" |
4 | 4 | ||
@@ -173,11 +173,16 @@ void HippoGridInfo::setPlatform(const std::string &platform) | |||
173 | for (unsigned i=0; i<platform.size(); i++) | 173 | for (unsigned i=0; i<platform.size(); i++) |
174 | tmp[i] = tolower(tmp[i]); | 174 | tmp[i] = tolower(tmp[i]); |
175 | 175 | ||
176 | if (tmp == "opensim") { | 176 | if (tmp == "opensim") |
177 | { | ||
177 | setPlatform(PLATFORM_OPENSIM); | 178 | setPlatform(PLATFORM_OPENSIM); |
178 | } else if (tmp == "secondlife") { | 179 | } |
180 | else if (tmp == "secondlife") | ||
181 | { | ||
179 | setPlatform(PLATFORM_SECONDLIFE); | 182 | setPlatform(PLATFORM_SECONDLIFE); |
180 | } else { | 183 | } |
184 | else | ||
185 | { | ||
181 | setPlatform(PLATFORM_OTHER); | 186 | setPlatform(PLATFORM_OTHER); |
182 | llwarns << "Unknown platform '" << platform << "'." << llendl; | 187 | llwarns << "Unknown platform '" << platform << "'." << llendl; |
183 | } | 188 | } |
@@ -278,13 +283,20 @@ std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const | |||
278 | if (mPlatform == PLATFORM_SECONDLIFE) | 283 | if (mPlatform == PLATFORM_SECONDLIFE) |
279 | { | 284 | { |
280 | // Second Life defaults | 285 | // Second Life defaults |
281 | if (ty == SEARCH_ALL_EMPTY) { | 286 | if (ty == SEARCH_ALL_EMPTY) |
287 | { | ||
282 | return gSavedSettings.getString("SearchURLDefault"); | 288 | return gSavedSettings.getString("SearchURLDefault"); |
283 | } else if (ty == SEARCH_ALL_QUERY) { | 289 | } |
290 | else if (ty == SEARCH_ALL_QUERY) | ||
291 | { | ||
284 | return gSavedSettings.getString("SearchURLQuery"); | 292 | return gSavedSettings.getString("SearchURLQuery"); |
285 | } else if (ty == SEARCH_ALL_TEMPLATE) { | 293 | } |
294 | else if (ty == SEARCH_ALL_TEMPLATE) | ||
295 | { | ||
286 | return gSavedSettings.getString("SearchURLSuffix2"); | 296 | return gSavedSettings.getString("SearchURLSuffix2"); |
287 | } else { | 297 | } |
298 | else | ||
299 | { | ||
288 | llinfos << "Illegal search URL type " << ty << llendl; | 300 | llinfos << "Illegal search URL type " << ty << llendl; |
289 | return ""; | 301 | return ""; |
290 | } | 302 | } |
@@ -292,13 +304,20 @@ std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const | |||
292 | else | 304 | else |
293 | { | 305 | { |
294 | // OpenSim and other web search defaults | 306 | // OpenSim and other web search defaults |
295 | if (ty == SEARCH_ALL_EMPTY) { | 307 | if (ty == SEARCH_ALL_EMPTY) |
308 | { | ||
296 | return gSavedSettings.getString("SearchURLDefaultOpenSim"); | 309 | return gSavedSettings.getString("SearchURLDefaultOpenSim"); |
297 | } else if (ty == SEARCH_ALL_QUERY) { | 310 | } |
311 | else if (ty == SEARCH_ALL_QUERY) | ||
312 | { | ||
298 | return gSavedSettings.getString("SearchURLQueryOpenSim"); | 313 | return gSavedSettings.getString("SearchURLQueryOpenSim"); |
299 | } else if (ty == SEARCH_ALL_TEMPLATE) { | 314 | } |
315 | else if (ty == SEARCH_ALL_TEMPLATE) | ||
316 | { | ||
300 | return gSavedSettings.getString("SearchURLSuffixOpenSim"); | 317 | return gSavedSettings.getString("SearchURLSuffixOpenSim"); |
301 | } else { | 318 | } |
319 | else | ||
320 | { | ||
302 | llinfos << "Illegal search URL type " << ty << llendl; | 321 | llinfos << "Illegal search URL type " << ty << llendl; |
303 | return ""; | 322 | return ""; |
304 | } | 323 | } |
@@ -307,13 +326,20 @@ std::string HippoGridInfo::getSearchUrl(SearchType ty, bool is_web) const | |||
307 | else | 326 | else |
308 | { | 327 | { |
309 | // Use the old search all | 328 | // Use the old search all |
310 | if (ty == SEARCH_ALL_EMPTY) { | 329 | if (ty == SEARCH_ALL_EMPTY) |
330 | { | ||
311 | return (mSearchUrl + "panel=All&"); | 331 | return (mSearchUrl + "panel=All&"); |
312 | } else if (ty == SEARCH_ALL_QUERY) { | 332 | } |
333 | else if (ty == SEARCH_ALL_QUERY) | ||
334 | { | ||
313 | return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"); | 335 | return (mSearchUrl + "q=[QUERY]&s=[COLLECTION]&"); |
314 | } else if (ty == SEARCH_ALL_TEMPLATE) { | 336 | } |
337 | else if (ty == SEARCH_ALL_TEMPLATE) | ||
338 | { | ||
315 | return "lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]"; | 339 | return "lang=[LANG]&m=[MATURE]&t=[TEEN]®ion=[REGION]&x=[X]&y=[Y]&z=[Z]&session=[SESSION]"; |
316 | } else { | 340 | } |
341 | else | ||
342 | { | ||
317 | llinfos << "Illegal search URL type " << ty << llendl; | 343 | llinfos << "Illegal search URL type " << ty << llendl; |
318 | return ""; | 344 | return ""; |
319 | } | 345 | } |
@@ -360,33 +386,38 @@ void HippoGridInfo::onXmlElementEnd(void *userData, const XML_Char *name) | |||
360 | void HippoGridInfo::onXmlCharacterData(void *userData, const XML_Char *s, int len) | 386 | void HippoGridInfo::onXmlCharacterData(void *userData, const XML_Char *s, int len) |
361 | { | 387 | { |
362 | HippoGridInfo *self = (HippoGridInfo*)userData; | 388 | HippoGridInfo *self = (HippoGridInfo*)userData; |
363 | switch (self->mXmlState) { | 389 | switch (self->mXmlState) |
364 | 390 | { | |
365 | case XML_GRIDNICK: { | 391 | case XML_GRIDNICK: |
392 | { | ||
366 | if (self->mGridNick == "") self->mGridNick.assign(s, len); | 393 | if (self->mGridNick == "") self->mGridNick.assign(s, len); |
367 | self->mGridNick = sanitizeGridNick(self->mGridNick); | 394 | self->mGridNick = sanitizeGridNick(self->mGridNick); |
368 | break; | 395 | break; |
369 | } | 396 | } |
370 | 397 | ||
371 | case XML_PLATFORM: { | 398 | case XML_PLATFORM: |
399 | { | ||
372 | std::string platform(s, len); | 400 | std::string platform(s, len); |
373 | self->setPlatform(platform); | 401 | self->setPlatform(platform); |
374 | break; | 402 | break; |
375 | } | 403 | } |
376 | 404 | ||
377 | case XML_LOGINURI: { | 405 | case XML_LOGINURI: |
406 | { | ||
378 | std::string loginuri(s, len); | 407 | std::string loginuri(s, len); |
379 | self->mLoginUri = sanitizeUri( loginuri ); | 408 | self->mLoginUri = sanitizeUri( loginuri ); |
380 | break; | 409 | break; |
381 | } | 410 | } |
382 | 411 | ||
383 | case XML_HELPERURI: { | 412 | case XML_HELPERURI: |
413 | { | ||
384 | std::string helperuri(s, len); | 414 | std::string helperuri(s, len); |
385 | self->mHelperUri = sanitizeUri( helperuri ); | 415 | self->mHelperUri = sanitizeUri( helperuri ); |
386 | break; | 416 | break; |
387 | } | 417 | } |
388 | 418 | ||
389 | case XML_SEARCH: { | 419 | case XML_SEARCH: |
420 | { | ||
390 | //self->mSearchUrl.assign(s, len); | 421 | //self->mSearchUrl.assign(s, len); |
391 | //sanitizeQueryUrl(mSearchUrl); | 422 | //sanitizeQueryUrl(mSearchUrl); |
392 | break; | 423 | break; |
@@ -426,7 +457,8 @@ bool HippoGridInfo::retrieveGridInfo() | |||
426 | XML_SetElementHandler(parser, onXmlElementStart, onXmlElementEnd); | 457 | XML_SetElementHandler(parser, onXmlElementStart, onXmlElementEnd); |
427 | XML_SetCharacterDataHandler(parser, onXmlCharacterData); | 458 | XML_SetCharacterDataHandler(parser, onXmlCharacterData); |
428 | mXmlState = XML_VOID; | 459 | mXmlState = XML_VOID; |
429 | if (!XML_Parse(parser, reply.data(), reply.size(), TRUE)) { | 460 | if (!XML_Parse(parser, reply.data(), reply.size(), TRUE)) |
461 | { | ||
430 | llwarns << "XML Parse Error: " << XML_ErrorString(XML_GetErrorCode(parser)) << llendl; | 462 | llwarns << "XML Parse Error: " << XML_ErrorString(XML_GetErrorCode(parser)) << llendl; |
431 | success = false; | 463 | success = false; |
432 | } | 464 | } |
@@ -477,7 +509,8 @@ void HippoGridInfo::formatFee(std::string &fee, int cost, bool showFree) const | |||
477 | // static | 509 | // static |
478 | const char *HippoGridInfo::getPlatformString(Platform platform) | 510 | const char *HippoGridInfo::getPlatformString(Platform platform) |
479 | { | 511 | { |
480 | static const char *platformStrings[PLATFORM_LAST] = { | 512 | static const char *platformStrings[PLATFORM_LAST] = |
513 | { | ||
481 | "Other", "OpenSim", "SecondLife" | 514 | "Other", "OpenSim", "SecondLife" |
482 | }; | 515 | }; |
483 | 516 | ||
@@ -492,11 +525,15 @@ std::string HippoGridInfo::sanitizeGridNick(std::string &gridnick) | |||
492 | { | 525 | { |
493 | std::string tmp; | 526 | std::string tmp; |
494 | int size = gridnick.size(); | 527 | int size = gridnick.size(); |
495 | for (int i=0; i<size; i++) { | 528 | for (int i=0; i<size; i++) |
529 | { | ||
496 | char c = gridnick[i]; | 530 | char c = gridnick[i]; |
497 | if ((c == '_') || isalnum(c)) { | 531 | if ((c == '_') || isalnum(c)) |
532 | { | ||
498 | tmp += tolower(c); | 533 | tmp += tolower(c); |
499 | } else if (isspace(c)) { | 534 | } |
535 | else if (isspace(c)) | ||
536 | { | ||
500 | tmp += "_"; | 537 | tmp += "_"; |
501 | } | 538 | } |
502 | } | 539 | } |
@@ -543,7 +580,9 @@ void HippoGridInfo::initFallback() | |||
543 | 580 | ||
544 | HippoGridManager::HippoGridManager() : | 581 | HippoGridManager::HippoGridManager() : |
545 | mConnectedGrid(0), | 582 | mConnectedGrid(0), |
546 | mDefaultGridsVersion(0) | 583 | mDefaultGridsVersion(0), |
584 | mCurrentGrid("osgrid"), | ||
585 | mDefaultGrid("osgrid") | ||
547 | { | 586 | { |
548 | } | 587 | } |
549 | 588 | ||
@@ -556,7 +595,8 @@ HippoGridManager::~HippoGridManager() | |||
556 | void HippoGridManager::cleanup() | 595 | void HippoGridManager::cleanup() |
557 | { | 596 | { |
558 | std::map<std::string, HippoGridInfo*>::iterator it, end = mGridInfo.end(); | 597 | std::map<std::string, HippoGridInfo*>::iterator it, end = mGridInfo.end(); |
559 | for (it=mGridInfo.begin(); it != end; ++it) { | 598 | for (it=mGridInfo.begin(); it != end; ++it) |
599 | { | ||
560 | delete it->second; | 600 | delete it->second; |
561 | } | 601 | } |
562 | mGridInfo.clear(); | 602 | mGridInfo.clear(); |
@@ -589,9 +629,12 @@ HippoGridInfo* HippoGridManager::getGrid(const std::string &grid) const | |||
589 | { | 629 | { |
590 | std::map<std::string, HippoGridInfo*>::const_iterator it; | 630 | std::map<std::string, HippoGridInfo*>::const_iterator it; |
591 | it = mGridInfo.find(grid); | 631 | it = mGridInfo.find(grid); |
592 | if (it != mGridInfo.end()) { | 632 | if (it != mGridInfo.end()) |
633 | { | ||
593 | return it->second; | 634 | return it->second; |
594 | } else { | 635 | } |
636 | else | ||
637 | { | ||
595 | return 0; | 638 | return 0; |
596 | } | 639 | } |
597 | } | 640 | } |
@@ -606,9 +649,12 @@ HippoGridInfo* HippoGridManager::getConnectedGrid() const | |||
606 | HippoGridInfo* HippoGridManager::getCurrentGrid() const | 649 | HippoGridInfo* HippoGridManager::getCurrentGrid() const |
607 | { | 650 | { |
608 | HippoGridInfo *grid = getGrid(mCurrentGrid); | 651 | HippoGridInfo *grid = getGrid(mCurrentGrid); |
609 | if (grid) { | 652 | if (grid) |
653 | { | ||
610 | return grid; | 654 | return grid; |
611 | } else { | 655 | } |
656 | else | ||
657 | { | ||
612 | return &HippoGridInfo::FALLBACK_GRIDINFO; | 658 | return &HippoGridInfo::FALLBACK_GRIDINFO; |
613 | } | 659 | } |
614 | } | 660 | } |
@@ -620,6 +666,10 @@ const std::string& HippoGridManager::getDefaultGridNick() const | |||
620 | 666 | ||
621 | const std::string& HippoGridManager::getCurrentGridNick() const | 667 | const std::string& HippoGridManager::getCurrentGridNick() const |
622 | { | 668 | { |
669 | if (mCurrentGrid.empty()) | ||
670 | { | ||
671 | return mDefaultGrid; | ||
672 | } | ||
623 | return mCurrentGrid; | 673 | return mCurrentGrid; |
624 | } | 674 | } |
625 | 675 | ||
@@ -633,12 +683,14 @@ void HippoGridManager::addGrid(HippoGridInfo *grid) | |||
633 | { | 683 | { |
634 | if (!grid) return; | 684 | if (!grid) return; |
635 | const std::string &nick = grid->getGridNick(); | 685 | const std::string &nick = grid->getGridNick(); |
636 | if (nick == "") { | 686 | if (nick == "") |
687 | { | ||
637 | llwarns << "Ignoring to try adding grid with empty nick." << llendl; | 688 | llwarns << "Ignoring to try adding grid with empty nick." << llendl; |
638 | delete grid; | 689 | delete grid; |
639 | return; | 690 | return; |
640 | } | 691 | } |
641 | if (mGridInfo.find(nick) != mGridInfo.end()) { | 692 | if (mGridInfo.find(nick) != mGridInfo.end()) |
693 | { | ||
642 | llwarns << "Ignoring to try adding existing grid " << nick << '.' << llendl; | 694 | llwarns << "Ignoring to try adding existing grid " << nick << '.' << llendl; |
643 | delete grid; | 695 | delete grid; |
644 | return; | 696 | return; |
@@ -667,13 +719,20 @@ void HippoGridManager::deleteGrid(const std::string &grid) | |||
667 | void HippoGridManager::setDefaultGrid(const std::string &grid) | 719 | void HippoGridManager::setDefaultGrid(const std::string &grid) |
668 | { | 720 | { |
669 | GridIterator it = mGridInfo.find(grid); | 721 | GridIterator it = mGridInfo.find(grid); |
670 | if (it != mGridInfo.end()) { | 722 | if (it != mGridInfo.end()) |
723 | { | ||
671 | mDefaultGrid = grid; | 724 | mDefaultGrid = grid; |
672 | } else if (mGridInfo.find("secondlife") != mGridInfo.end()) { | 725 | } |
726 | else if (mGridInfo.find("secondlife") != mGridInfo.end()) | ||
727 | { | ||
673 | mDefaultGrid = "secondlife"; | 728 | mDefaultGrid = "secondlife"; |
674 | } else if (!mGridInfo.empty()) { | 729 | } |
730 | else if (!mGridInfo.empty()) | ||
731 | { | ||
675 | mDefaultGrid = mGridInfo.begin()->first; | 732 | mDefaultGrid = mGridInfo.begin()->first; |
676 | } else { | 733 | } |
734 | else | ||
735 | { | ||
677 | mDefaultGrid = ""; | 736 | mDefaultGrid = ""; |
678 | } | 737 | } |
679 | } | 738 | } |
@@ -682,9 +741,12 @@ void HippoGridManager::setDefaultGrid(const std::string &grid) | |||
682 | void HippoGridManager::setCurrentGrid(const std::string &grid) | 741 | void HippoGridManager::setCurrentGrid(const std::string &grid) |
683 | { | 742 | { |
684 | GridIterator it = mGridInfo.find(grid); | 743 | GridIterator it = mGridInfo.find(grid); |
685 | if (it != mGridInfo.end()) { | 744 | if (it != mGridInfo.end()) |
745 | { | ||
686 | mCurrentGrid = grid; | 746 | mCurrentGrid = grid; |
687 | } else if (!mGridInfo.empty()) { | 747 | } |
748 | else if (!mGridInfo.empty()) | ||
749 | { | ||
688 | llwarns << "Unknown grid '" << grid << "'. Setting to default grid." << llendl; | 750 | llwarns << "Unknown grid '" << grid << "'. Setting to default grid." << llendl; |
689 | mCurrentGrid = mDefaultGrid; | 751 | mCurrentGrid = mDefaultGrid; |
690 | } | 752 | } |
@@ -722,7 +784,8 @@ void HippoGridManager::parseUrl(const char *url, bool mergeIfNewer) | |||
722 | 784 | ||
723 | // check response, return on error | 785 | // check response, return on error |
724 | S32 status = response["status"].asInteger(); | 786 | S32 status = response["status"].asInteger(); |
725 | if ((status != 200) || !response["body"].isArray()) { | 787 | if ((status != 200) || !response["body"].isArray()) |
788 | { | ||
726 | llinfos << "GridInfo Update failed (" << status << "): " | 789 | llinfos << "GridInfo Update failed (" << status << "): " |
727 | << (response["body"].isString()? response["body"].asString(): "<unknown error>") | 790 | << (response["body"].isString()? response["body"].asString(): "<unknown error>") |
728 | << llendl; | 791 | << llendl; |
@@ -737,13 +800,15 @@ void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer) | |||
737 | { | 800 | { |
738 | llifstream infile; | 801 | llifstream infile; |
739 | infile.open(fileName.c_str()); | 802 | infile.open(fileName.c_str()); |
740 | if(!infile.is_open()) { | 803 | if (!infile.is_open()) |
804 | { | ||
741 | llwarns << "Cannot find grid info file " << fileName << " to load." << llendl; | 805 | llwarns << "Cannot find grid info file " << fileName << " to load." << llendl; |
742 | return; | 806 | return; |
743 | } | 807 | } |
744 | 808 | ||
745 | LLSD gridInfo; | 809 | LLSD gridInfo; |
746 | if (LLSDSerialize::fromXML(gridInfo, infile) <= 0) { | 810 | if (LLSDSerialize::fromXML(gridInfo, infile) <= 0) |
811 | { | ||
747 | llwarns << "Unable to parse grid info file " << fileName << '.' << llendl; | 812 | llwarns << "Unable to parse grid info file " << fileName << '.' << llendl; |
748 | return; | 813 | return; |
749 | } | 814 | } |
@@ -755,17 +820,21 @@ void HippoGridManager::parseFile(const std::string &fileName, bool mergeIfNewer) | |||
755 | 820 | ||
756 | void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) | 821 | void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) |
757 | { | 822 | { |
758 | if (mergeIfNewer) { | 823 | if (mergeIfNewer) |
824 | { | ||
759 | LLSD::array_const_iterator it, end = gridInfo.endArray(); | 825 | LLSD::array_const_iterator it, end = gridInfo.endArray(); |
760 | for (it = gridInfo.beginArray(); it != end; ++it) { | 826 | for (it = gridInfo.beginArray(); it != end; ++it) |
827 | { | ||
761 | LLSD gridMap = *it; | 828 | LLSD gridMap = *it; |
762 | if (gridMap.has("default_grids_version")) { | 829 | if (gridMap.has("default_grids_version")) |
830 | { | ||
763 | int version = gridMap["default_grids_version"]; | 831 | int version = gridMap["default_grids_version"]; |
764 | if (version <= mDefaultGridsVersion) return; | 832 | if (version <= mDefaultGridsVersion) return; |
765 | else break; | 833 | else break; |
766 | } | 834 | } |
767 | } | 835 | } |
768 | if (it == end) { | 836 | if (it == end) |
837 | { | ||
769 | llwarns << "Grid data has no version number." << llendl; | 838 | llwarns << "Grid data has no version number." << llendl; |
770 | return; | 839 | return; |
771 | } | 840 | } |
@@ -774,19 +843,26 @@ void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) | |||
774 | llinfos << "Loading grid data." << llendl; | 843 | llinfos << "Loading grid data." << llendl; |
775 | 844 | ||
776 | LLSD::array_const_iterator it, end = gridInfo.endArray(); | 845 | LLSD::array_const_iterator it, end = gridInfo.endArray(); |
777 | for (it = gridInfo.beginArray(); it != end; ++it) { | 846 | for (it = gridInfo.beginArray(); it != end; ++it) |
847 | { | ||
778 | LLSD gridMap = *it; | 848 | LLSD gridMap = *it; |
779 | if (gridMap.has("default_grids_version")) { | 849 | if (gridMap.has("default_grids_version")) |
850 | { | ||
780 | mDefaultGridsVersion = gridMap["default_grids_version"]; | 851 | mDefaultGridsVersion = gridMap["default_grids_version"]; |
781 | } else if (gridMap.has("gridnick") && gridMap.has("loginuri")) { | 852 | } |
853 | else if (gridMap.has("gridnick") && gridMap.has("loginuri")) | ||
854 | { | ||
782 | std::string gridnick = gridMap["gridnick"]; | 855 | std::string gridnick = gridMap["gridnick"]; |
783 | HippoGridInfo *grid; | 856 | HippoGridInfo *grid; |
784 | GridIterator it = mGridInfo.find(gridnick); | 857 | GridIterator it = mGridInfo.find(gridnick); |
785 | bool newGrid = (it == mGridInfo.end()); | 858 | bool newGrid = (it == mGridInfo.end()); |
786 | if (newGrid) { | 859 | if (newGrid) |
860 | { | ||
787 | // create new grid info | 861 | // create new grid info |
788 | grid = new HippoGridInfo(gridnick); | 862 | grid = new HippoGridInfo(gridnick); |
789 | } else { | 863 | } |
864 | else | ||
865 | { | ||
790 | // update existing grid info | 866 | // update existing grid info |
791 | grid = it->second; | 867 | grid = it->second; |
792 | } | 868 | } |
@@ -822,7 +898,8 @@ void HippoGridManager::saveFile() | |||
822 | // add grids | 898 | // add grids |
823 | S32 i = 1; | 899 | S32 i = 1; |
824 | GridIterator it, end = mGridInfo.end(); | 900 | GridIterator it, end = mGridInfo.end(); |
825 | for (it = mGridInfo.begin(); it != end; ++it, i++) { | 901 | for (it = mGridInfo.begin(); it != end; ++it, i++) |
902 | { | ||
826 | HippoGridInfo *grid = it->second; | 903 | HippoGridInfo *grid = it->second; |
827 | gridInfo[i]["gridnick"] = grid->getGridNick(); | 904 | gridInfo[i]["gridnick"] = grid->getGridNick(); |
828 | gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform()); | 905 | gridInfo[i]["platform"] = HippoGridInfo::getPlatformString(grid->getPlatform()); |
@@ -846,11 +923,14 @@ void HippoGridManager::saveFile() | |||
846 | std::string fileName = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grid_info.xml"); | 923 | std::string fileName = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "grid_info.xml"); |
847 | llofstream file; | 924 | llofstream file; |
848 | file.open(fileName.c_str()); | 925 | file.open(fileName.c_str()); |
849 | if (file.is_open()) { | 926 | if (file.is_open()) |
927 | { | ||
850 | LLSDSerialize::toPrettyXML(gridInfo, file); | 928 | LLSDSerialize::toPrettyXML(gridInfo, file); |
851 | file.close(); | 929 | file.close(); |
852 | llinfos << "Saved grids to " << fileName << llendl; | 930 | llinfos << "Saved grids to " << fileName << llendl; |
853 | } else { | 931 | } |
932 | else | ||
933 | { | ||
854 | llerrs << "Unable to open grid info file: " << fileName << llendl; | 934 | llerrs << "Unable to open grid info file: " << fileName << llendl; |
855 | } | 935 | } |
856 | } | 936 | } |