From b235c59d60472f818a9142c0886b95a0ff4191d7 Mon Sep 17 00:00:00 2001
From: Jacek Antonelli
Date: Fri, 15 Aug 2008 23:45:19 -0500
Subject: Second Life viewer sources 1.18.6.0-RC
---
linden/doc/contributions.txt | 1 +
linden/etc/message.xml | 10 +-
linden/indra/SConstruct | 9 +-
linden/indra/indra_complete/indra_complete.sln | 1 +
linden/indra/indra_complete/indra_complete_vc8.sln | 198 +-
linden/indra/lib/python/indra/util/llmanifest.py | 7 +
linden/indra/linux_crash_logger/files.lst | 2 +
.../linux_crash_logger/linux_crash_logger.cpp | 538 +-
.../linux_crash_logger/llcrashloggerlinux.cpp | 140 +
.../indra/linux_crash_logger/llcrashloggerlinux.h | 49 +
linden/indra/llcommon/llapp.cpp | 34 +
linden/indra/llcommon/llavatarconstants.h | 1 +
linden/indra/llcommon/llcommon.vcproj | 3 +
linden/indra/llcommon/llcommon_vc8.vcproj | 2 +
linden/indra/llcommon/llsd.cpp | 20 +
linden/indra/llcommon/llsd.h | 1 +
linden/indra/llcommon/llsdserialize.cpp | 5 +
linden/indra/llcommon/llstring.cpp | 58 +-
linden/indra/llcommon/llstring.h | 32 +-
linden/indra/llcommon/llsys.cpp | 77 +-
linden/indra/llcommon/llsys.h | 2 +
linden/indra/llcommon/lluri.cpp | 69 +-
linden/indra/llcommon/lluri.h | 7 +-
linden/indra/llcommon/llversionserver.h | 4 +-
linden/indra/llcommon/llversionviewer.h | 4 +-
linden/indra/llcrashlogger/llcrashlogger.cpp | 309 +
linden/indra/llcrashlogger/llcrashlogger.h | 85 +
linden/indra/llinventory/llparcel.cpp | 2760 ++++-----
linden/indra/llinventory/llparcel.h | 24 +-
linden/indra/llinventory/llparcelflags.h | 14 +-
linden/indra/llmessage/llcircuit.cpp | 19 +-
linden/indra/llmessage/llcircuit.h | 5 +-
linden/indra/llmessage/llcurl.cpp | 5 +
linden/indra/llmessage/llcurl.h | 3 +-
linden/indra/llmessage/llregionflags.h | 8 +-
linden/indra/llmessage/message.cpp | 7 +-
linden/indra/llmessage/message.h | 2 +-
linden/indra/llmessage/message_prehash.cpp | 5 +
linden/indra/llmessage/message_prehash.h | 2 +
linden/indra/llui/llalertdialog.cpp | 35 +-
linden/indra/llui/llalertdialog.h | 24 +-
linden/indra/llui/llbutton.cpp | 3 -
linden/indra/llui/llfloater.cpp | 29 +-
linden/indra/llui/llfloater.h | 3 +-
linden/indra/llui/lllineeditor.cpp | 14 +-
linden/indra/llui/lllineeditor.h | 2 -
linden/indra/llui/llpanel.cpp | 10 +
linden/indra/llui/llpanel.h | 1 +
linden/indra/llui/llscrolllistctrl.cpp | 19 +-
linden/indra/llui/llscrolllistctrl.h | 1 +
linden/indra/llui/lltextbox.cpp | 43 +-
linden/indra/llui/lltextbox.h | 11 +-
linden/indra/llui/lltexteditor.cpp | 14 +-
linden/indra/llui/lltexteditor.h | 2 -
linden/indra/llui/llview.cpp | 18 +-
linden/indra/llui/llview.h | 6 +-
linden/indra/llvfs/lldir_win32.cpp | 1 -
linden/indra/llwindow/lldxhardware.cpp | 102 +
linden/indra/llwindow/lldxhardware.h | 3 +
linden/indra/llwindow/llgl.cpp | 19 +
linden/indra/llwindow/llgl.h | 3 +
linden/indra/llwindow/llwindowwin32.cpp | 7 +-
linden/indra/llwindow/llwindowwin32.h | 1 +
linden/indra/lscript/lscript_compile/indra.l | 16 +-
.../lscript/lscript_compile/lscript_compile.vcproj | 9 +-
.../lscript_compile/lscript_compile_fb.vcproj | 8 +-
.../lscript_compile/lscript_compile_fb_vc8.vcproj | 237 +-
linden/indra/mac_crash_logger/llcrashloggermac.cpp | 342 ++
linden/indra/mac_crash_logger/llcrashloggermac.h | 51 +
linden/indra/mac_crash_logger/mac_crash_logger.cpp | 668 +-
.../indra/mac_updater/AutoUpdater.nib/classes.nib | 4 +
linden/indra/mac_updater/AutoUpdater.nib/info.nib | 14 +
.../indra/mac_updater/AutoUpdater.nib/objects.xib | 56 +
linden/indra/newview/CrashReporter.nib/info.nib | 8 +-
linden/indra/newview/CrashReporter.nib/objects.xib | 78 +-
.../indra/newview/English.lproj/InfoPlist.strings | 4 +-
linden/indra/newview/Info-SecondLife.plist | 2 +-
linden/indra/newview/files.lst | 5 +-
.../linux_tools/handle_secondlifeprotocol.sh | 17 +
.../linux_tools/register_secondlifeprotocol.sh | 46 +
linden/indra/newview/linux_tools/wrapper.sh | 4 +
linden/indra/newview/llagent.cpp | 33 +-
linden/indra/newview/llagent.h | 2 +
linden/indra/newview/llagentpilot.cpp | 4 +-
linden/indra/newview/llappviewer.cpp | 3894 ++++++++++++
linden/indra/newview/llappviewer.h | 294 +
linden/indra/newview/llappviewerlinux.cpp | 414 ++
linden/indra/newview/llappviewerlinux.h | 59 +
linden/indra/newview/llappviewermacosx.cpp | 373 ++
linden/indra/newview/llappviewermacosx.h | 56 +
linden/indra/newview/llappviewerwin32.cpp | 461 ++
linden/indra/newview/llappviewerwin32.h | 63 +
linden/indra/newview/llassetuploadresponders.cpp | 1 -
linden/indra/newview/llcallingcard.cpp | 2 +-
linden/indra/newview/llcameraview.cpp | 8 +-
linden/indra/newview/llclassifiedinfo.cpp | 1 -
linden/indra/newview/llcommandhandler.cpp | 11 +-
linden/indra/newview/llcommandhandler.h | 9 +-
linden/indra/newview/llcompass.cpp | 1 -
linden/indra/newview/llconsole.cpp | 1 -
linden/indra/newview/llcontroldef.cpp | 11 +-
linden/indra/newview/llcurrencyuimanager.cpp | 5 +-
linden/indra/newview/lldirpicker.cpp | 1 -
linden/indra/newview/lldrawable.h | 3 +-
linden/indra/newview/lldrawpoolavatar.cpp | 2 +-
linden/indra/newview/lldrawpoolwater.cpp | 1 -
linden/indra/newview/lleventinfo.cpp | 2 +-
linden/indra/newview/llfasttimerview.cpp | 2 +-
linden/indra/newview/llfeaturemanager.cpp | 4 -
linden/indra/newview/llfirstuse.cpp | 2 +-
linden/indra/newview/llfloaterabout.cpp | 9 +-
linden/indra/newview/llfloateranimpreview.cpp | 1 -
linden/indra/newview/llfloaterauction.cpp | 3 +-
linden/indra/newview/llfloateravatarinfo.cpp | 4 +-
linden/indra/newview/llfloateravatarpicker.cpp | 10 +-
linden/indra/newview/llfloateravatartextures.cpp | 2 +-
linden/indra/newview/llfloaterbump.cpp | 2 +-
linden/indra/newview/llfloaterbuycurrency.cpp | 2 +-
linden/indra/newview/llfloaterbuyland.cpp | 4 +-
linden/indra/newview/llfloaterclassified.cpp | 4 +-
linden/indra/newview/llfloatercolorpicker.cpp | 1 -
linden/indra/newview/llfloaterdirectory.cpp | 4 +
linden/indra/newview/llfloaterdirectory.h | 4 +
linden/indra/newview/llfloaterevent.cpp | 6 +-
linden/indra/newview/llfloaterfriends.cpp | 34 +-
linden/indra/newview/llfloatergroupinfo.cpp | 4 +-
linden/indra/newview/llfloaterimagepreview.cpp | 1 -
linden/indra/newview/llfloaterimport.cpp | 1 -
linden/indra/newview/llfloaterlagmeter.cpp | 5 +-
linden/indra/newview/llfloaterland.cpp | 713 +--
linden/indra/newview/llfloaterland.h | 82 +-
linden/indra/newview/llfloatermap.cpp | 4 +-
linden/indra/newview/llfloaternewim.cpp | 1 -
linden/indra/newview/llfloaterparcel.cpp | 4 +-
linden/indra/newview/llfloaterpostcard.cpp | 1 -
linden/indra/newview/llfloaterpreference.cpp | 46 +-
linden/indra/newview/llfloaterpreference.h | 1 +
linden/indra/newview/llfloaterregioninfo.cpp | 52 +-
linden/indra/newview/llfloaterregioninfo.h | 4 +
linden/indra/newview/llfloaterreleasemsg.cpp | 3 +-
linden/indra/newview/llfloaterreporter.cpp | 2 +-
linden/indra/newview/llfloatersnapshot.cpp | 1 -
linden/indra/newview/llfloatertest.cpp | 4 +-
linden/indra/newview/llfloatertools.cpp | 3 +-
linden/indra/newview/llfloatertos.cpp | 2 +-
linden/indra/newview/llfloaterworldmap.cpp | 2 +-
linden/indra/newview/llfolderview.cpp | 2 +-
linden/indra/newview/llframestatview.cpp | 1 -
linden/indra/newview/llgesturemgr.cpp | 1 -
linden/indra/newview/llglsandbox.cpp | 1 -
linden/indra/newview/llgroupmgr.cpp | 16 +-
linden/indra/newview/llgroupnotify.cpp | 4 +-
linden/indra/newview/llhudtext.cpp | 1 -
linden/indra/newview/llimpanel.cpp | 2 +-
linden/indra/newview/llimview.cpp | 2 +-
linden/indra/newview/llinventoryactions.cpp | 1 -
linden/indra/newview/llinventorybridge.cpp | 1 -
linden/indra/newview/llinventorybridge.h | 1 +
linden/indra/newview/llinventorymodel.cpp | 2 +-
linden/indra/newview/llinventoryview.cpp | 2 +-
linden/indra/newview/lllcd.cpp | 6 +-
linden/indra/newview/lllcd.h | 3 +
linden/indra/newview/lllogchat.cpp | 2 +-
linden/indra/newview/llmanip.cpp | 1 -
linden/indra/newview/llmaniprotate.cpp | 3 -
linden/indra/newview/llmaniptranslate.cpp | 1 -
linden/indra/newview/llmemoryview.cpp | 1 -
linden/indra/newview/llmenucommands.cpp | 1 -
linden/indra/newview/llmorphview.cpp | 1 -
linden/indra/newview/llmoveview.cpp | 2 +-
linden/indra/newview/llmutelist.cpp | 1 -
linden/indra/newview/llnetmap.cpp | 2 +-
linden/indra/newview/llnotify.cpp | 35 +-
linden/indra/newview/llnotify.h | 3 +-
linden/indra/newview/lloverlaybar.cpp | 1 -
linden/indra/newview/llpanelLCD.cpp | 2 +-
linden/indra/newview/llpanelaudioprefs.cpp | 2 +-
linden/indra/newview/llpanelavatar.cpp | 10 +-
linden/indra/newview/llpanelclassified.cpp | 4 +-
linden/indra/newview/llpanelcontents.cpp | 1 -
linden/indra/newview/llpaneldirbrowser.cpp | 3 +
linden/indra/newview/llpaneldirevents.cpp | 2 +-
linden/indra/newview/llpaneldirfind.cpp | 9 +-
linden/indra/newview/llpaneldisplay.cpp | 2 +-
linden/indra/newview/llpanelgeneral.cpp | 27 +-
linden/indra/newview/llpanelgeneral.h | 1 +
linden/indra/newview/llpanelgroup.cpp | 4 +-
linden/indra/newview/llpanelgrouplandmoney.cpp | 9 +-
linden/indra/newview/llpanelgroupvoting.cpp | 6 +-
linden/indra/newview/llpanelinput.cpp | 6 +-
linden/indra/newview/llpanellogin.cpp | 642 +-
linden/indra/newview/llpanellogin.h | 48 +-
linden/indra/newview/llpanelobject.cpp | 2 +-
linden/indra/newview/llpanelvolume.cpp | 1 -
linden/indra/newview/llprefsvoice.cpp | 2 +-
linden/indra/newview/llpreviewgesture.cpp | 4 +-
linden/indra/newview/llpreviewlandmark.cpp | 1 -
linden/indra/newview/llpreviewnotecard.cpp | 5 +-
linden/indra/newview/llpreviewscript.cpp | 6 +-
linden/indra/newview/llprogressview.cpp | 8 +-
linden/indra/newview/llsky.cpp | 1 +
linden/indra/newview/llspatialpartition.cpp | 2 +-
linden/indra/newview/llsprite.cpp | 1 -
linden/indra/newview/llstartup.cpp | 338 +-
linden/indra/newview/llstartup.h | 2 +-
linden/indra/newview/llstatgraph.cpp | 8 +-
linden/indra/newview/llstatusbar.cpp | 4 +-
linden/indra/newview/llsurface.cpp | 6 +-
linden/indra/newview/lltexlayer.cpp | 1 -
linden/indra/newview/lltexturectrl.cpp | 8 +-
linden/indra/newview/lltexturefetch.cpp | 17 +-
linden/indra/newview/lltextureview.cpp | 16 +-
linden/indra/newview/lltoolbar.cpp | 1 -
linden/indra/newview/lltoolbrush.cpp | 2 +-
linden/indra/newview/lltooldraganddrop.cpp | 1 -
linden/indra/newview/lltoolfocus.cpp | 1 -
linden/indra/newview/lltoolgrab.cpp | 1 -
linden/indra/newview/lltoolgun.cpp | 1 -
linden/indra/newview/lltoolmgr.cpp | 5 +
linden/indra/newview/lltoolmgr.h | 2 +
linden/indra/newview/lltoolmorph.cpp | 1 -
linden/indra/newview/lltoolobjpicker.cpp | 1 -
linden/indra/newview/lltoolpie.cpp | 2 +
linden/indra/newview/lltoolplacer.cpp | 380 +-
linden/indra/newview/lltoolplacer.h | 7 +
linden/indra/newview/lltoolselect.cpp | 1 -
linden/indra/newview/lltoolselectland.cpp | 1 -
linden/indra/newview/lltoolselectrect.cpp | 1 -
linden/indra/newview/lltracker.cpp | 3 +-
linden/indra/newview/llurldispatcher.cpp | 64 +-
linden/indra/newview/llurlsimstring.cpp | 1 -
linden/indra/newview/lluserauth.cpp | 10 +-
linden/indra/newview/lluserauth.h | 4 +-
linden/indra/newview/llvectorperfoptions.cpp | 121 +
linden/indra/newview/llvectorperfoptions.h | 31 +
linden/indra/newview/llvieweraudio.cpp | 228 +
linden/indra/newview/llvieweraudio.h | 30 +
linden/indra/newview/llviewercamera.h | 3 +
linden/indra/newview/llviewercontrol.cpp | 4 +
linden/indra/newview/llviewercontrol.h | 7 +
linden/indra/newview/llviewerdisplay.cpp | 199 +-
linden/indra/newview/llviewerdisplay.h | 7 +-
linden/indra/newview/llviewerimage.cpp | 27 +-
linden/indra/newview/llviewerimagelist.cpp | 14 +-
linden/indra/newview/llviewerinventory.cpp | 1 -
linden/indra/newview/llviewerjoystick.cpp | 2 +-
linden/indra/newview/llviewermenu.cpp | 99 +-
linden/indra/newview/llviewermenu.h | 1 +
linden/indra/newview/llviewermenufile.cpp | 16 +-
linden/indra/newview/llviewermessage.cpp | 63 +-
linden/indra/newview/llviewermessage.h | 2 +-
linden/indra/newview/llviewernetwork.cpp | 28 +-
linden/indra/newview/llviewernetwork.h | 38 +-
linden/indra/newview/llviewerobject.cpp | 7 +-
linden/indra/newview/llviewerobject.h | 3 +
linden/indra/newview/llviewerobjectlist.cpp | 7 +-
linden/indra/newview/llviewerparcelmgr.cpp | 13 +-
linden/indra/newview/llviewerregion.cpp | 23 +-
linden/indra/newview/llviewerregion.h | 2 +-
linden/indra/newview/llviewerstats.cpp | 449 +-
linden/indra/newview/llviewerstats.h | 10 +-
linden/indra/newview/llviewertexteditor.cpp | 7 +-
linden/indra/newview/llviewerwindow.cpp | 74 +-
linden/indra/newview/llviewerwindow.h | 6 +
linden/indra/newview/llvoavatar.cpp | 5 +-
linden/indra/newview/llvoclouds.cpp | 4 +-
linden/indra/newview/llvoiceclient.cpp | 12 +-
linden/indra/newview/llvosky.cpp | 5 +-
linden/indra/newview/llvosky.h | 6 +
linden/indra/newview/llwearable.cpp | 3 -
linden/indra/newview/llweb.cpp | 21 +-
linden/indra/newview/llweb.h | 16 +-
linden/indra/newview/llwebbrowserctrl.cpp | 12 +-
linden/indra/newview/llwind.cpp | 1 -
linden/indra/newview/llwindebug.cpp | 406 +-
linden/indra/newview/llwindebug.h | 2 +-
linden/indra/newview/llworld.cpp | 14 +-
linden/indra/newview/llworld.h | 2 +-
linden/indra/newview/llworldmap.cpp | 2 +-
linden/indra/newview/llworldmapview.cpp | 2 +-
linden/indra/newview/llxmlrpctransaction.cpp | 2 +-
linden/indra/newview/macutil_Prefix.h | 3 +
.../newview/macview.xcodeproj/default.pbxuser | 183 +
.../newview/macview.xcodeproj/project.pbxproj | 330 +-
linden/indra/newview/macview_Prefix.h | 1 -
linden/indra/newview/newview.vcproj | 41 +-
linden/indra/newview/newview_vc8.vcproj | 43 +-
linden/indra/newview/pipeline.cpp | 40 +-
linden/indra/newview/releasenotes.txt | 29 +
linden/indra/newview/res/newViewRes.rc | 8 +-
linden/indra/newview/skins/xui/de/LCD_text.xml | 75 +
.../newview/skins/xui/de/floater_landmark_ctrl.xml | 10 +
.../skins/xui/de/floater_preview_classified.xml | 2 +
.../newview/skins/xui/de/floater_preview_event.xml | 2 +
.../newview/skins/xui/de/floater_preview_url.xml | 2 +
linden/indra/newview/skins/xui/de/menu_slurl.xml | 6 +
linden/indra/newview/skins/xui/de/need_to_long.xml | 85 +
.../newview/skins/xui/de/need_to_translate.xml | 1056 ++++
.../indra/newview/skins/xui/de/need_to_update.xml | 420 ++
linden/indra/newview/skins/xui/de/panel_login.xml | 40 +-
.../newview/skins/xui/de/panel_preferences_LCD.xml | 30 +
linden/indra/newview/skins/xui/en-us/alerts.xml | 229 +-
.../newview/skins/xui/en-us/floater_about_land.xml | 133 +-
.../newview/skins/xui/en-us/floater_directory.xml | 4 +-
.../skins/xui/en-us/floater_texture_ctrl.xml | 1 +
.../indra/newview/skins/xui/en-us/menu_login.xml | 37 +
.../indra/newview/skins/xui/en-us/menu_viewer.xml | 2 +-
linden/indra/newview/skins/xui/en-us/notify.xml | 20 +
.../indra/newview/skins/xui/en-us/panel_avatar.xml | 6 +
.../indra/newview/skins/xui/en-us/panel_login.xml | 92 +-
.../skins/xui/en-us/panel_region_estate.xml | 63 +-
.../newview/skins/xui/en-us/teleport_strings.xml | 34 +-
linden/indra/newview/skins/xui/es/panel_login.xml | 36 +-
linden/indra/newview/skins/xui/fr/panel_login.xml | 38 +-
linden/indra/newview/skins/xui/ja/LCD_text.xml | 75 +
.../newview/skins/xui/ja/floater_landmark_ctrl.xml | 12 +
.../skins/xui/ja/floater_preview_classified.xml | 2 +
.../newview/skins/xui/ja/floater_preview_event.xml | 2 +
.../newview/skins/xui/ja/floater_preview_url.xml | 2 +
linden/indra/newview/skins/xui/ja/menu_slurl.xml | 6 +
linden/indra/newview/skins/xui/ja/need_to_long.xml | 85 +
.../newview/skins/xui/ja/need_to_translate.xml | 1059 ++++
.../indra/newview/skins/xui/ja/need_to_update.xml | 419 ++
linden/indra/newview/skins/xui/ja/panel_login.xml | 40 +-
.../newview/skins/xui/ja/panel_preferences_LCD.xml | 33 +
linden/indra/newview/skins/xui/ko/LCD_text.xml | 75 +
.../newview/skins/xui/ko/floater_landmark_ctrl.xml | 10 +
.../skins/xui/ko/floater_preview_classified.xml | 2 +
.../newview/skins/xui/ko/floater_preview_event.xml | 2 +
.../newview/skins/xui/ko/floater_preview_url.xml | 2 +
linden/indra/newview/skins/xui/ko/menu_slurl.xml | 6 +
linden/indra/newview/skins/xui/ko/need_to_long.xml | 85 +
.../newview/skins/xui/ko/need_to_translate.xml | 1060 ++++
.../indra/newview/skins/xui/ko/need_to_update.xml | 420 ++
linden/indra/newview/skins/xui/ko/panel_login.xml | 39 +-
.../newview/skins/xui/ko/panel_preferences_LCD.xml | 31 +
linden/indra/newview/skins/xui/pt/panel_login.xml | 27 +-
linden/indra/newview/skins/xui/zh/panel_login.xml | 36 +-
linden/indra/newview/viewer.cpp | 6368 --------------------
linden/indra/newview/viewer.h | 325 -
linden/indra/newview/viewer_manifest.py | 2 +
linden/indra/test/lluri_tut.cpp | 39 +
linden/indra/test/test.vcproj | 6 +
linden/indra/test/test_vc8.vcproj | 16 -
linden/indra/win_crash_logger/StdAfx.h | 1 -
.../win_crash_logger/llcrashloggerwindows.cpp | 378 ++
.../indra/win_crash_logger/llcrashloggerwindows.h | 59 +
linden/indra/win_crash_logger/resource.h | 34 +-
linden/indra/win_crash_logger/win_crash_logger.cpp | 874 +--
linden/indra/win_crash_logger/win_crash_logger.rc | 65 +-
.../indra/win_crash_logger/win_crash_logger.vcproj | 22 +-
.../win_crash_logger/win_crash_logger_vc8.vcproj | 29 +-
linden/scripts/messages/message_template.msg | 12 +-
353 files changed, 18888 insertions(+), 13019 deletions(-)
create mode 100644 linden/indra/linux_crash_logger/llcrashloggerlinux.cpp
create mode 100644 linden/indra/linux_crash_logger/llcrashloggerlinux.h
create mode 100755 linden/indra/llcrashlogger/llcrashlogger.cpp
create mode 100755 linden/indra/llcrashlogger/llcrashlogger.h
create mode 100644 linden/indra/mac_crash_logger/llcrashloggermac.cpp
create mode 100644 linden/indra/mac_crash_logger/llcrashloggermac.h
create mode 100644 linden/indra/mac_updater/AutoUpdater.nib/classes.nib
create mode 100644 linden/indra/mac_updater/AutoUpdater.nib/info.nib
create mode 100644 linden/indra/mac_updater/AutoUpdater.nib/objects.xib
create mode 100755 linden/indra/newview/linux_tools/handle_secondlifeprotocol.sh
create mode 100755 linden/indra/newview/linux_tools/register_secondlifeprotocol.sh
create mode 100644 linden/indra/newview/llappviewer.cpp
create mode 100644 linden/indra/newview/llappviewer.h
create mode 100644 linden/indra/newview/llappviewerlinux.cpp
create mode 100644 linden/indra/newview/llappviewerlinux.h
create mode 100644 linden/indra/newview/llappviewermacosx.cpp
create mode 100644 linden/indra/newview/llappviewermacosx.h
create mode 100644 linden/indra/newview/llappviewerwin32.cpp
create mode 100644 linden/indra/newview/llappviewerwin32.h
create mode 100644 linden/indra/newview/llvectorperfoptions.cpp
create mode 100644 linden/indra/newview/llvectorperfoptions.h
create mode 100644 linden/indra/newview/llvieweraudio.cpp
create mode 100644 linden/indra/newview/llvieweraudio.h
create mode 100644 linden/indra/newview/macview.xcodeproj/default.pbxuser
create mode 100644 linden/indra/newview/skins/xui/de/LCD_text.xml
create mode 100644 linden/indra/newview/skins/xui/de/floater_landmark_ctrl.xml
create mode 100644 linden/indra/newview/skins/xui/de/floater_preview_classified.xml
create mode 100644 linden/indra/newview/skins/xui/de/floater_preview_event.xml
create mode 100644 linden/indra/newview/skins/xui/de/floater_preview_url.xml
create mode 100644 linden/indra/newview/skins/xui/de/menu_slurl.xml
create mode 100644 linden/indra/newview/skins/xui/de/need_to_long.xml
create mode 100644 linden/indra/newview/skins/xui/de/need_to_translate.xml
create mode 100644 linden/indra/newview/skins/xui/de/need_to_update.xml
create mode 100644 linden/indra/newview/skins/xui/de/panel_preferences_LCD.xml
create mode 100644 linden/indra/newview/skins/xui/en-us/menu_login.xml
create mode 100644 linden/indra/newview/skins/xui/ja/LCD_text.xml
create mode 100644 linden/indra/newview/skins/xui/ja/floater_landmark_ctrl.xml
create mode 100644 linden/indra/newview/skins/xui/ja/floater_preview_classified.xml
create mode 100644 linden/indra/newview/skins/xui/ja/floater_preview_event.xml
create mode 100644 linden/indra/newview/skins/xui/ja/floater_preview_url.xml
create mode 100644 linden/indra/newview/skins/xui/ja/menu_slurl.xml
create mode 100644 linden/indra/newview/skins/xui/ja/need_to_long.xml
create mode 100644 linden/indra/newview/skins/xui/ja/need_to_translate.xml
create mode 100644 linden/indra/newview/skins/xui/ja/need_to_update.xml
create mode 100644 linden/indra/newview/skins/xui/ja/panel_preferences_LCD.xml
create mode 100644 linden/indra/newview/skins/xui/ko/LCD_text.xml
create mode 100644 linden/indra/newview/skins/xui/ko/floater_landmark_ctrl.xml
create mode 100644 linden/indra/newview/skins/xui/ko/floater_preview_classified.xml
create mode 100644 linden/indra/newview/skins/xui/ko/floater_preview_event.xml
create mode 100644 linden/indra/newview/skins/xui/ko/floater_preview_url.xml
create mode 100644 linden/indra/newview/skins/xui/ko/menu_slurl.xml
create mode 100644 linden/indra/newview/skins/xui/ko/need_to_long.xml
create mode 100644 linden/indra/newview/skins/xui/ko/need_to_translate.xml
create mode 100644 linden/indra/newview/skins/xui/ko/need_to_update.xml
create mode 100644 linden/indra/newview/skins/xui/ko/panel_preferences_LCD.xml
delete mode 100644 linden/indra/newview/viewer.cpp
delete mode 100644 linden/indra/newview/viewer.h
create mode 100644 linden/indra/win_crash_logger/llcrashloggerwindows.cpp
create mode 100644 linden/indra/win_crash_logger/llcrashloggerwindows.h
diff --git a/linden/doc/contributions.txt b/linden/doc/contributions.txt
index 897977c..62210f0 100644
--- a/linden/doc/contributions.txt
+++ b/linden/doc/contributions.txt
@@ -215,6 +215,7 @@ Nicholaz Beresford
VWR-1861
VWR-1872
VWR-1968
+ VWR-2046
VWR-2152
Nounouch Hapmouche
VWR-238
diff --git a/linden/etc/message.xml b/linden/etc/message.xml
index 3d9d0eb..1e6e30e 100644
--- a/linden/etc/message.xml
+++ b/linden/etc/message.xml
@@ -255,7 +255,7 @@
CoarseLocationUpdate
@@ -399,6 +399,14 @@
true
+
+ ScriptRunningReply
+
capBans
diff --git a/linden/indra/SConstruct b/linden/indra/SConstruct
index f1a6c89..0e68039 100644
--- a/linden/indra/SConstruct
+++ b/linden/indra/SConstruct
@@ -91,7 +91,7 @@ opts.AddOptions(
BoolOption('GSTREAMER', 'Enabled GStreamer support', True),
BoolOption('COLORGCC', 'Enabled colorgcc', True),
EnumOption('GRID', 'Client package\'s default grid', 'default',
- allowed_values=('default', 'aditi', 'agni', 'dmz', 'durga', 'ganga', 'shakti', 'siva', 'soma', 'uma', 'vaak')),
+ allowed_values=('default', 'aditi', 'agni', 'dmz', 'durga', 'ganga', 'shakti', 'siva', 'soma', 'uma', 'vaak', 'yami')),
EnumOption('CHANNEL', 'Client package\'s default channel', 'Release',
allowed_values=('Release', 'Release Candidate', 'WindLight')),
BoolOption('ELFIO', 'Enabled enhanced backtraces with libELFIO symbol extraction support', True),
@@ -203,7 +203,7 @@ for build_target in targets:
### Base include directories ###
include_dirs = Split("""
- ./llcommon ./llmath ./llwindow ./llaudio ./llcharacter
+ ./llcommon ./llmath ./llwindow ./llaudio ./llcharacter ./llcrashlogger
./lldatabase ./llhavok ./llimage ./llinventory ./llmedia ./llmessage
./llprimitive ./llrender ./llscene ./llui ./llvfs ./llwindow
./llxml ./lscript ./lscript/lscript_compile
@@ -350,7 +350,7 @@ for build_target in targets:
releasenoopt_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 '
releasefordownload_cflags = cflags + '-O2 '
releasefordownload_cxxflags = cxxflags + '-O2 '
- releasefordownload_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 '
+ releasefordownload_cppflags = cppflags + '-DNDEBUG -DLL_RELEASE=1 -DLL_RELEASE_FOR_DOWNLOAD=1 -DLL_SEND_CRASH_REPORTS=1 '
################
# ENVIRONMENT #
@@ -585,6 +585,7 @@ for build_target in targets:
create_cond_module('llvfs')
create_cond_module('llimagej2coj', module_libs=['openjpeg'])
create_cond_module('llimage', module_libs=['llimagej2coj', 'jpeg', 'png12'])
+ create_static_module('llcrashlogger')
create_static_module('llmessage')
create_static_module('llinventory')
create_static_module('llcharacter')
@@ -616,7 +617,7 @@ for build_target in targets:
pkgconfig('--libs-only-l', ['gtk+-2.0']).split()]
else:
external_libs = net_external_libs + [ 'db-4.2', 'gtk-x11-2.0' ]
- internal_libs = [ 'llvfs', 'llmath', 'llcommon' ]
+ internal_libs = [ 'llui', 'llxml', 'llmessage', 'llvfs', 'llmath', 'llcommon' ]
create_executable(output_crashlogger_bin + '-globalsyms',
'linux_crash_logger',
internal_libs + external_libs)
diff --git a/linden/indra/indra_complete/indra_complete.sln b/linden/indra/indra_complete/indra_complete.sln
index 513d9a8..83dbdc5 100644
--- a/linden/indra/indra_complete/indra_complete.sln
+++ b/linden/indra/indra_complete/indra_complete.sln
@@ -482,6 +482,7 @@ Global
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseForDownload.ActiveCfg = Release|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseForDownload.Build.0 = Release|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseNoOpt.ActiveCfg = ReleaseNoOpt|Win32
+ {E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseNoOpt.Build.0 = ReleaseNoOpt|Win32
{023011F7-3ADB-49D3-9EC5-6D392F6D15FE}.Debug.ActiveCfg = Debug|Win32
{023011F7-3ADB-49D3-9EC5-6D392F6D15FE}.Debug.Build.0 = Debug|Win32
{023011F7-3ADB-49D3-9EC5-6D392F6D15FE}.Release.ActiveCfg = Release|Win32
diff --git a/linden/indra/indra_complete/indra_complete_vc8.sln b/linden/indra/indra_complete/indra_complete_vc8.sln
index 04e1e9a..f677d2c 100644
--- a/linden/indra/indra_complete/indra_complete_vc8.sln
+++ b/linden/indra/indra_complete/indra_complete_vc8.sln
@@ -26,28 +26,27 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llinventory", "..\llinvento
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "newview", "..\newview\newview_vc8.vcproj", "{E6F4CF1B-6109-4CA8-B58D-87FA936CDE08}"
ProjectSection(ProjectDependencies) = postProject
- {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B} = {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}
- {9D0C7E02-6506-4EE7-BC5C-75671D28D594} = {9D0C7E02-6506-4EE7-BC5C-75671D28D594}
- {2ADE3C14-94C4-40BF-B033-70F3C954EE90} = {2ADE3C14-94C4-40BF-B033-70F3C954EE90}
- {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
- {93B2BA29-FBE9-4376-92C1-6108DCFE09D3} = {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
- {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552}
- {076DD042-2E58-42EA-9401-53210B65C1FC} = {076DD042-2E58-42EA-9401-53210B65C1FC}
- {DE55D666-6A3D-476C-937F-109269B83681} = {DE55D666-6A3D-476C-937F-109269B83681}
- {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
- {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228} = {B771CF1B-E253-47BD-8B0A-6B0440CC9228}
- {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
- {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
- {4C8D64D5-649F-481E-96BE-EF1E82A77ACB} = {4C8D64D5-649F-481E-96BE-EF1E82A77ACB}
- {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E} = {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}
- {648685F3-8760-4CC5-BB2B-CAF9DECC25A4} = {648685F3-8760-4CC5-BB2B-CAF9DECC25A4}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {648685F3-8760-4CC5-BB2B-CAF9DECC25A4} = {648685F3-8760-4CC5-BB2B-CAF9DECC25A4}
+ {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E} = {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}
+ {4C8D64D5-649F-481E-96BE-EF1E82A77ACB} = {4C8D64D5-649F-481E-96BE-EF1E82A77ACB}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}
+ {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808}
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
+ {DE55D666-6A3D-476C-937F-109269B83681} = {DE55D666-6A3D-476C-937F-109269B83681}
+ {076DD042-2E58-42EA-9401-53210B65C1FC} = {076DD042-2E58-42EA-9401-53210B65C1FC}
+ {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552}
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
+ {93B2BA29-FBE9-4376-92C1-6108DCFE09D3} = {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
+ {2ADE3C14-94C4-40BF-B033-70F3C954EE90} = {2ADE3C14-94C4-40BF-B033-70F3C954EE90}
+ {9D0C7E02-6506-4EE7-BC5C-75671D28D594} = {9D0C7E02-6506-4EE7-BC5C-75671D28D594}
+ {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B} = {E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}
EndProjectSection
EndProject
EndProject
@@ -70,45 +69,43 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lscript_compile", "..\lscri
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
- {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552}
- {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
- {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
- {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
- {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
- {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
- {B4B838C7-2C72-428E-BBFD-25764E659A8B} = {B4B838C7-2C72-428E-BBFD-25764E659A8B}
- {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E} = {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}
- {D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
{023011F7-3ADB-49D3-9EC5-6D392F6D15FE} = {023011F7-3ADB-49D3-9EC5-6D392F6D15FE}
+ {D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E} = {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}
+ {B4B838C7-2C72-428E-BBFD-25764E659A8B} = {B4B838C7-2C72-428E-BBFD-25764E659A8B}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}
+ {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808}
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
+ {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552}
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
- {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
- {B4B838C7-2C72-428E-BBFD-25764E659A8B} = {B4B838C7-2C72-428E-BBFD-25764E659A8B}
- {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E} = {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E} = {5EA5DDF0-C7E1-4F49-BEF5-9246A4656B2E}
+ {B4B838C7-2C72-428E-BBFD-25764E659A8B} = {B4B838C7-2C72-428E-BBFD-25764E659A8B}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lscript_compile_fb", "..\lscript\lscript_compile\lscript_compile_fb_vc8.vcproj", "{B771CF1B-E253-47BD-8B0A-6B0440CC9228}"
-EndProject
ProjectSection(ProjectDependencies) = postProject
{44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808}
EndProjectSection
@@ -119,11 +116,11 @@ EndProject
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "win_crash_logger", "..\win_crash_logger\win_crash_logger_vc8.vcproj", "{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}"
ProjectSection(ProjectDependencies) = postProject
- {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "win_updater", "..\win_updater\win_updater_vc8.vcproj", "{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}"
@@ -133,16 +130,16 @@ EndProject
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
- {2ADE3C14-94C4-40BF-B033-70F3C954EE90} = {2ADE3C14-94C4-40BF-B033-70F3C954EE90}
- {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
- {AF2D801E-EEE7-4B52-A025-F8E648ADC34B} = {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}
- {93B2BA29-FBE9-4376-92C1-6108DCFE09D3} = {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {DE55D666-6A3D-476C-937F-109269B83681} = {DE55D666-6A3D-476C-937F-109269B83681}
- {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
+ {DE55D666-6A3D-476C-937F-109269B83681} = {DE55D666-6A3D-476C-937F-109269B83681}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
+ {93B2BA29-FBE9-4376-92C1-6108DCFE09D3} = {93B2BA29-FBE9-4376-92C1-6108DCFE09D3}
+ {AF2D801E-EEE7-4B52-A025-F8E648ADC34B} = {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
+ {2ADE3C14-94C4-40BF-B033-70F3C954EE90} = {2ADE3C14-94C4-40BF-B033-70F3C954EE90}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llmedia", "..\llmedia\llmedia_vc8.vcproj", "{9D0C7E02-6506-4EE7-BC5C-75671D28D594}"
@@ -150,51 +147,52 @@ EndProject
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "..\test\test_vc8.vcproj", "{BBAA6588-CA96-4A87-A988-B02270B8D02B}"
ProjectSection(ProjectDependencies) = postProject
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
- {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552}
- {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
- {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228} = {B771CF1B-E253-47BD-8B0A-6B0440CC9228}
- {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC} = {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}
- {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
- {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}
- {777F38BE-2DFE-4051-9AAD-2832ABC474CC} = {777F38BE-2DFE-4051-9AAD-2832ABC474CC}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {777F38BE-2DFE-4051-9AAD-2832ABC474CC} = {777F38BE-2DFE-4051-9AAD-2832ABC474CC}
+ {BFA102B0-C891-4E13-B1CF-C2F28073DA8E} = {BFA102B0-C891-4E13-B1CF-C2F28073DA8E}
+ {A5470DA6-0C3A-4602-B930-43DB25511A59} = {A5470DA6-0C3A-4602-B930-43DB25511A59}
+ {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC} = {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {44CE6D82-7320-4609-8FC3-5965C19F4808} = {44CE6D82-7320-4609-8FC3-5965C19F4808}
+ {328D1968-924F-4863-AAE8-5F9A95BA68E5} = {328D1968-924F-4863-AAE8-5F9A95BA68E5}
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
+ {F882263E-4F2A-43D9-A45A-FA4C8EC66552} = {F882263E-4F2A-43D9-A45A-FA4C8EC66552}
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
- {2ADE3C14-94C4-40BF-B033-70F3C954EE90} = {2ADE3C14-94C4-40BF-B033-70F3C954EE90}
- {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
- {AF2D801E-EEE7-4B52-A025-F8E648ADC34B} = {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
- {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
- {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {E5D94794-5671-4BD6-A16D-26EC18F3DB34} = {E5D94794-5671-4BD6-A16D-26EC18F3DB34}
+ {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4} = {4B19F64E-AB97-4FB9-8E1D-74A8104DE0C4}
+ {FCC4483C-5B84-4944-B91F-4589A219BC0B} = {FCC4483C-5B84-4944-B91F-4589A219BC0B}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
+ {AF2D801E-EEE7-4B52-A025-F8E648ADC34B} = {AF2D801E-EEE7-4B52-A025-F8E648ADC34B}
+ {B5B53617-416F-404A-BF10-22EBCCA0E4FB} = {B5B53617-416F-404A-BF10-22EBCCA0E4FB}
+ {2ADE3C14-94C4-40BF-B033-70F3C954EE90} = {2ADE3C14-94C4-40BF-B033-70F3C954EE90}
EndProjectSection
EndProject
EndProject
EndProject
ProjectSection(ProjectDependencies) = postProject
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
- {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
{D37774F4-253D-4760-BF64-372A943224A1} = {D37774F4-253D-4760-BF64-372A943224A1}
+ {E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
EndProjectSection
EndProject
ProjectSection(ProjectDependencies) = postProject
- {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
- {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
{E87FD9BE-BE42-4EA3-BF4D-D992223046D9} = {E87FD9BE-BE42-4EA3-BF4D-D992223046D9}
+ {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5} = {681FDD6C-2FAE-4CB9-AF6D-B952F2B151C5}
+ {7BCB4B2C-8378-4186-88EA-5742B5ABE17F} = {7BCB4B2C-8378-4186-88EA-5742B5ABE17F}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "llimagej2coj", "..\llimagej2coj\llimagej2coj_vc8.vcproj", "{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lscript_compile_fb_vc8", "..\lscript\lscript_compile\lscript_compile_fb_vc8.vcproj", "{B771CF1B-E253-47BD-8B0A-6B0440CC9228}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@@ -414,16 +412,6 @@ Global
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.ReleaseForDownload|Win32.Build.0 = Release|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{A5504A1E-8BA4-45D2-8144-1B6937E37E98}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.ActiveCfg = Debug|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.Build.0 = Debug|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Release|Win32.ActiveCfg = Release|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Release|Win32.Build.0 = Release|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseForDownload|Win32.Build.0 = Release|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32
- {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Debug|Win32.ActiveCfg = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Debug|Win32.Build.0 = Debug|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
@@ -432,6 +420,7 @@ Global
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.Release|Win32.Build.0 = Release|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
{777F38BE-2DFE-4051-9AAD-2832ABC474CC}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32
+ {777F38BE-2DFE-4051-9AAD-2832ABC474CC}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Debug|Win32.ActiveCfg = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Debug|Win32.Build.0 = Debug|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
@@ -440,6 +429,7 @@ Global
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.Release|Win32.Build.0 = Release|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
{EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32
+ {EC2A989E-3F8F-4B8B-9AE6-7C7EA37C84BC}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Debug|Win32.ActiveCfg = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.Debug|Win32.Build.0 = Debug|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
@@ -449,7 +439,6 @@ Global
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.ReleaseForDownload|Win32.Build.0 = Release|Win32
{648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
- {648685F3-8760-4CC5-BB2B-CAF9DECC25A4}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Debug|Win32.ActiveCfg = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.Debug|Win32.Build.0 = Debug|Win32
{E928F33B-E090-4FA8-818B-6B5D8B0F1F4B}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
@@ -513,6 +502,7 @@ Global
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseForDownload|Win32.Build.0 = Release|Win32
{E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
+ {E9F5BD55-F8E8-4C61-B9B5-CCE7C1048241}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
{023011F7-3ADB-49D3-9EC5-6D392F6D15FE}.Debug|Win32.ActiveCfg = Debug|Win32
{023011F7-3ADB-49D3-9EC5-6D392F6D15FE}.Debug|Win32.Build.0 = Debug|Win32
{023011F7-3ADB-49D3-9EC5-6D392F6D15FE}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
@@ -563,6 +553,16 @@ Global
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.ReleaseForDownload|Win32.Build.0 = Release|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.ReleaseNoOpt|Win32.ActiveCfg = ReleaseNoOpt|Win32
{4C8D64D5-649F-481E-96BE-EF1E82A77ACB}.ReleaseNoOpt|Win32.Build.0 = ReleaseNoOpt|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Debug|Win32.Build.0 = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.ActiveCfg = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.DebugMesaHeadless|Win32.Build.0 = Debug|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Release|Win32.ActiveCfg = Release|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.Release|Win32.Build.0 = Release|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseForDownload|Win32.ActiveCfg = Release|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseForDownload|Win32.Build.0 = Release|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.ActiveCfg = Release|Win32
+ {B771CF1B-E253-47BD-8B0A-6B0440CC9228}.ReleaseNoOpt|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/linden/indra/lib/python/indra/util/llmanifest.py b/linden/indra/lib/python/indra/util/llmanifest.py
index 029b697..2408fab 100644
--- a/linden/indra/lib/python/indra/util/llmanifest.py
+++ b/linden/indra/lib/python/indra/util/llmanifest.py
@@ -38,6 +38,7 @@ import re
import shutil
import sys
import tarfile
+import errno
def path_ancestors(path):
path = os.path.normpath(path)
@@ -463,6 +464,12 @@ class LLManifest(object):
return
# only copy if it's not excluded
if(self.includes(src, dst)):
+ try:
+ os.unlink(dst)
+ except OSError, err:
+ if err.errno != errno.ENOENT:
+ raise
+
shutil.copy2(src, dst)
def ccopytree(self, src, dst):
diff --git a/linden/indra/linux_crash_logger/files.lst b/linden/indra/linux_crash_logger/files.lst
index 8bf99b0..5c8b9a2 100644
--- a/linden/indra/linux_crash_logger/files.lst
+++ b/linden/indra/linux_crash_logger/files.lst
@@ -1 +1,3 @@
+llcrashlogger/llcrashlogger.cpp
linux_crash_logger/linux_crash_logger.cpp
+linux_crash_logger/llcrashloggerlinux.cpp
diff --git a/linden/indra/linux_crash_logger/linux_crash_logger.cpp b/linden/indra/linux_crash_logger/linux_crash_logger.cpp
index e75a317..5310093 100644
--- a/linden/indra/linux_crash_logger/linux_crash_logger.cpp
+++ b/linden/indra/linux_crash_logger/linux_crash_logger.cpp
@@ -29,542 +29,16 @@
* $/LicenseInfo$
*/
-#include "linden_common.h"
-
-#include
-#include
-#include
-
-#include
-
-#if LL_GTK
-# include "gtk/gtk.h"
-#endif // LL_GTK
-
-#include "indra_constants.h" // CRASH_BEHAVIOR_ASK
-#include "llerror.h"
-#include "lltimer.h"
-#include "lldir.h"
-
-#include "llstring.h"
-
-
-// These need to be localized.
-static const char dialog_text[] =
-"Second Life appears to have crashed.\n"
-"This crash reporter collects information about your computer's hardware, operating system, and some Second Life logs, which are used for debugging purposes only.\n"
-"Sending crash reports is the best way to help us improve the quality of Second Life.\n"
-"If you continue to experience this problem, please try:\n"
-"- Contacting support by visiting http://www.secondlife.com/support\n"
-"\n"
-"Send crash report?";
-
-static const char dialog_title[] =
-"Second Life Crash Logger";
-
-
-class LLFileEncoder
-{
-public:
- LLFileEncoder(const char *formname, const char *filename, bool isCrashLog = false);
-
- BOOL isValid() const { return mIsValid; }
- LLString encodeURL(const S32 max_length = 0);
-public:
- BOOL mIsValid;
- LLString mFilename;
- LLString mFormname;
- LLString mBuf;
-};
-
-LLString encode_string(const char *formname, const LLString &str);
-
-LLString gServerResponse;
-BOOL gSendReport = FALSE;
-LLString gUserserver;
-LLString gUserText;
-BOOL gCrashInPreviousExec = FALSE;
-time_t gLaunchTime;
-
-static size_t curl_download_callback(void *data, size_t size, size_t nmemb,
- void *user_data)
-{
- S32 bytes = size * nmemb;
- char *cdata = (char *) data;
- for (int i =0; i < bytes; i += 1)
- {
- gServerResponse += (cdata[i]);
- }
- return bytes;
-}
-
-#if LL_GTK
-static void response_callback (GtkDialog *dialog,
- gint arg1,
- gpointer user_data)
-{
- gint *response = (gint*)user_data;
- *response = arg1;
- gtk_widget_destroy(GTK_WIDGET(dialog));
- gtk_main_quit();
-}
-#endif // LL_GTK
-
-static BOOL do_ask_dialog(void)
-{
-#if LL_GTK
- gtk_disable_setlocale();
- if (!gtk_init_check(NULL, NULL)) {
- llinfos << "Could not initialize GTK for 'ask to send crash report' dialog; not sending report." << llendl;
- return FALSE;
- }
-
- GtkWidget *win = NULL;
- GtkDialogFlags flags = GTK_DIALOG_MODAL;
- GtkMessageType messagetype = GTK_MESSAGE_QUESTION;
- GtkButtonsType buttons = GTK_BUTTONS_YES_NO;
- gint response = GTK_RESPONSE_NONE;
-
- win = gtk_message_dialog_new(NULL,
- flags, messagetype, buttons,
- dialog_text);
- gtk_window_set_type_hint(GTK_WINDOW(win),
- GDK_WINDOW_TYPE_HINT_DIALOG);
- gtk_window_set_title(GTK_WINDOW(win), dialog_title);
- g_signal_connect (win,
- "response",
- G_CALLBACK (response_callback),
- &response);
- gtk_widget_show_all (win);
- gtk_main();
-
- return (GTK_RESPONSE_OK == response ||
- GTK_RESPONSE_YES == response ||
- GTK_RESPONSE_APPLY == response);
-#else
- return FALSE;
-#endif // LL_GTK
-}
-
+#include "llcrashloggerlinux.h"
int main(int argc, char **argv)
{
- const S32 BT_MAX_SIZE = 100000; // Maximum size to transmit of the backtrace file
- const S32 SL_MAX_SIZE = 100000; // Maximum size of the Second Life log file.
- int i;
- S32 crash_behavior = CRASH_BEHAVIOR_ALWAYS_SEND;
-
- time(&gLaunchTime);
-
- llinfos << "Starting Second Life Viewer Crash Reporter" << llendl;
-
- for(i=1; iinitAppDirs("SecondLife");
-
- // Lots of silly variable, replicated for each log file.
- LLString db_file_name;
- LLString sl_file_name;
- LLString bt_file_name; // stack_trace.log file
- LLString st_file_name; // stats.log file
- LLString si_file_name; // settings.xml file
-
- LLFileEncoder *db_filep = NULL;
- LLFileEncoder *sl_filep = NULL;
- LLFileEncoder *st_filep = NULL;
- LLFileEncoder *bt_filep = NULL;
- LLFileEncoder *si_filep = NULL;
-
- ///////////////////////////////////
- //
- // We do the parsing for the debug_info file first, as that will
- // give us the location of the SecondLife.log file.
- //
-
- // Figure out the filename of the debug log
- db_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"debug_info.log").c_str();
- db_filep = new LLFileEncoder("DB", db_file_name.c_str());
-
- // Get the filename of the SecondLife.log file
- // *NOTE: These buffer sizes are hardcoded into a scanf() below.
- char tmp_sl_name[LL_MAX_PATH];
- tmp_sl_name[0] = '\0';
- char tmp_space[256];
- tmp_space[0] = '\0';
-
- // Look for it in the debug_info.log file
- if (db_filep->isValid())
- {
- // This was originally scanning for "SL Log: %[^\r\n]", which happily skipped to the next line
- // on debug logs (which don't have anything after "SL Log:" and tried to open a nonsensical filename.
- sscanf(db_filep->mBuf.c_str(), "SL Log:%255[ ]%1023[^\r\n]", tmp_space, tmp_sl_name);
- }
- else
- {
- delete db_filep;
- db_filep = NULL;
- }
-
- // If we actually have a legitimate file name, use it.
- if (gCrashInPreviousExec)
- {
- // If we froze, the crash log this time around isn't useful.
- // Use the old one.
- sl_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"SecondLife.old");
- }
- else if (tmp_sl_name[0])
- {
- sl_file_name = tmp_sl_name;
- llinfos << "Using log file from debug log: " << sl_file_name << llendl;
- }
- else
- {
- // Figure out the filename of the second life log
- sl_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"SecondLife.log").c_str();
- }
-
- // Now we get the SecondLife.log file if it's there, and recent enough...
- sl_filep = new LLFileEncoder("SL", sl_file_name.c_str());
- if (!sl_filep->isValid())
- {
- delete sl_filep;
- sl_filep = NULL;
- }
-
- st_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stats.log").c_str();
- st_filep = new LLFileEncoder("ST", st_file_name.c_str());
- if (!st_filep->isValid())
- {
- delete st_filep;
- st_filep = NULL;
- }
-
- si_file_name = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS,"settings.xml").c_str();
- si_filep = new LLFileEncoder("SI", si_file_name.c_str());
- if (!si_filep->isValid())
- {
- delete si_filep;
- si_filep = NULL;
- }
-
- // encode this as if it were a 'Dr Watson' plain-text backtrace
- bt_file_name = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log").c_str();
- bt_filep = new LLFileEncoder("DW", bt_file_name.c_str());
- if (!bt_filep->isValid())
- {
- delete bt_filep;
- bt_filep = NULL;
- }
-
- LLString post_data;
- LLString tmp_url_buf;
-
- // Append the userserver
- tmp_url_buf = encode_string("USER", gUserserver);
- post_data += tmp_url_buf;
- llinfos << "PostData:" << post_data << llendl;
-
- if (gCrashInPreviousExec)
- {
- post_data.append("&");
- tmp_url_buf = encode_string("EF", "Y");
- post_data += tmp_url_buf;
- }
-
- if (db_filep)
- {
- post_data.append("&");
- tmp_url_buf = db_filep->encodeURL();
- post_data += tmp_url_buf;
- llinfos << "Sending DB log file" << llendl;
- }
- else
- {
- llinfos << "Not sending DB log file" << llendl;
- }
-
- if (sl_filep)
- {
- post_data.append("&");
- tmp_url_buf = sl_filep->encodeURL(SL_MAX_SIZE);
- post_data += tmp_url_buf;
- llinfos << "Sending SL log file" << llendl;
- }
- else
- {
- llinfos << "Not sending SL log file" << llendl;
- }
-
- if (st_filep)
- {
- post_data.append("&");
- tmp_url_buf = st_filep->encodeURL(SL_MAX_SIZE);
- post_data += tmp_url_buf;
- llinfos << "Sending stats log file" << llendl;
- }
- else
- {
- llinfos << "Not sending stats log file" << llendl;
- }
-
- if (bt_filep)
- {
- post_data.append("&");
- tmp_url_buf = bt_filep->encodeURL(BT_MAX_SIZE);
- post_data += tmp_url_buf;
- llinfos << "Sending crash log file" << llendl;
- }
- else
- {
- llinfos << "Not sending crash log file" << llendl;
- }
-
- if (si_filep)
- {
- post_data.append("&");
- tmp_url_buf = si_filep->encodeURL();
- post_data += tmp_url_buf;
- llinfos << "Sending settings log file" << llendl;
- }
- else
- {
- llinfos << "Not sending settings.xml file" << llendl;
- }
-
- if (gUserText.size())
- {
- post_data.append("&");
- tmp_url_buf = encode_string("UN", gUserText);
- post_data += tmp_url_buf;
- }
-
- delete db_filep;
- db_filep = NULL;
- delete sl_filep;
- sl_filep = NULL;
- delete bt_filep;
- bt_filep = NULL;
-
- // Debugging spam
-#if 0
- printf("Crash report post data:\n--------\n");
- printf("%s", post_data.getString());
- printf("\n--------\n");
-#endif
-
- // Send the report. Yes, it's this easy.
- {
- CURL *curl = curl_easy_init();
-
- curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
- curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &curl_download_callback);
- curl_easy_setopt(curl, CURLOPT_POST, 1);
- curl_easy_setopt(curl, CURLOPT_POSTFIELDS, post_data.c_str());
- curl_easy_setopt(curl, CURLOPT_URL, "http://EXAMPLE.com/cgi-bin/viewer_crash_reporter2");
-
- llinfos << "Connecting to crash report server" << llendl;
- CURLcode result = curl_easy_perform(curl);
-
- curl_easy_cleanup(curl);
-
- if(result != CURLE_OK)
- {
- llinfos << "Couldn't talk to crash report server" << llendl;
- }
- else
- {
- llinfos << "Response from crash report server:" << llendl;
- llinfos << gServerResponse << llendl;
- }
- }
-
+ LLCrashLoggerLinux app;
+ app.parseCommandOptions(argc, argv);
+ app.init();
+ app.mainLoop();
+ app.cleanup();
return 0;
}
-LLFileEncoder::LLFileEncoder(const char *form_name, const char *filename, bool isCrashLog)
-{
- mFormname = form_name;
- mFilename = filename;
- mIsValid = FALSE;
-
- int res;
-
- struct stat stat_data;
- res = stat(mFilename.c_str(), &stat_data);
- if (res)
- {
- llwarns << "File " << mFilename << " is missing!" << llendl;
- return;
- }
- else
- {
- // Debugging spam
-// llinfos << "File " << mFilename << " is present..." << llendl;
-
- if(!gCrashInPreviousExec && isCrashLog)
- {
- // Make sure the file isn't too old.
- double age = difftime(gLaunchTime, stat_data.st_mtim.tv_sec);
-
-// llinfos << "age is " << age << llendl;
- if(age > 60.0)
- {
- // The file was last modified more than 60 seconds before the crash reporter was launched. Assume it's stale.
- llwarns << "File " << mFilename << " is too old!" << llendl;
- return;
- }
- }
-
- }
-
- S32 buf_size = stat_data.st_size;
- FILE *fp = fopen(mFilename.c_str(), "rb");
- U8 *buf = new U8[buf_size + 1];
- size_t nread = fread(buf, 1, buf_size, fp);
- fclose(fp);
- buf[nread] = 0;
-
- mBuf = (char *)buf;
-
- if(isCrashLog)
- {
- // Crash logs consist of a number of entries, one per crash.
- // Each entry is preceeded by "**********" on a line by itself.
- // We want only the most recent (i.e. last) one.
- const char *sep = "**********";
- const char *start = mBuf.c_str();
- const char *cur = start;
- const char *temp = strstr(cur, sep);
-
- while(temp != NULL)
- {
- // Skip past the marker we just found
- cur = temp + strlen(sep);
-
- // and try to find another
- temp = strstr(cur, sep);
- }
-
- // If there's more than one entry in the log file, strip all but the last one.
- if(cur != start)
- {
- mBuf.erase(0, cur - start);
- }
- }
-
- mIsValid = TRUE;
- delete[] buf;
-}
-
-LLString LLFileEncoder::encodeURL(const S32 max_length)
-{
- LLString result = mFormname;
- result.append("=");
-
- S32 i = 0;
-
- if (max_length)
- {
- if ((S32)mBuf.size() > max_length)
- {
- i = mBuf.size() - max_length;
- }
- }
-
-#if 0
- // Plain text version for debugging
- result.append(mBuf);
-#else
- // Not using LLString because of bad performance issues
- S32 buf_size = mBuf.size();
- S32 url_buf_size = 3*mBuf.size() + 1;
- char *url_buf = new char[url_buf_size];
-
- S32 cur_pos = 0;
- for (; i < buf_size; i++)
- {
- sprintf(url_buf + cur_pos, "%%%02x", mBuf[i]);
- cur_pos += 3;
- }
- url_buf[i*3] = 0;
-
- result.append(url_buf);
- delete[] url_buf;
-#endif
- return result;
-}
-
-LLString encode_string(const char *formname, const LLString &str)
-{
- LLString result = formname;
- result.append("=");
- // Not using LLString because of bad performance issues
- S32 buf_size = str.size();
- S32 url_buf_size = 3*str.size() + 1;
- char *url_buf = new char[url_buf_size];
-
- S32 cur_pos = 0;
- S32 i;
- for (i = 0; i < buf_size; i++)
- {
- sprintf(url_buf + cur_pos, "%%%02x", str[i]);
- cur_pos += 3;
- }
- url_buf[i*3] = 0;
-
- result.append(url_buf);
- delete[] url_buf;
- return result;
-}
diff --git a/linden/indra/linux_crash_logger/llcrashloggerlinux.cpp b/linden/indra/linux_crash_logger/llcrashloggerlinux.cpp
new file mode 100644
index 0000000..26a8f0c
--- /dev/null
+++ b/linden/indra/linux_crash_logger/llcrashloggerlinux.cpp
@@ -0,0 +1,140 @@
+/**
+ * @file llcrashloggerlinux.cpp
+ * @brief Linux crash logger implementation
+ *
+ * $LicenseInfo:firstyear=2003&license=viewergpl$
+ *
+ * Copyright (c) 2003-2007, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llcrashloggerlinux.h"
+
+#include
+
+#include "linden_common.h"
+
+#include "boost/tokenizer.hpp"
+
+#include "indra_constants.h" // CRASH_BEHAVIOR_ASK, CRASH_SETTING_NAME
+#include "llerror.h"
+#include "llfile.h"
+#include "lltimer.h"
+#include "llstring.h"
+#include "lldir.h"
+#include "llsdserialize.h"
+
+#if LL_GTK
+# include "gtk/gtk.h"
+#endif // LL_GTK
+
+#define MAX_LOADSTRING 100
+
+// These need to be localized.
+static const char dialog_text[] =
+"Second Life appears to have crashed or frozen last time it ran.\n"
+"This crash reporter collects information about your computer's hardware, operating system, and some Second Life logs, all of which are used for debugging purposes only.\n"
+"In the space below, please briefly describe what you were doing or trying to do just prior to the crash. Thank you for your help!\n"
+"This report is NOT read by Customer Support. If you have billing or other questions, contact support by visiting http://www.secondlife.com/support\n"
+"\n"
+"Send crash report?";
+
+static const char dialog_title[] =
+"Second Life Crash Logger";
+
+#if LL_GTK
+static void response_callback (GtkDialog *dialog,
+ gint arg1,
+ gpointer user_data)
+{
+ gint *response = (gint*)user_data;
+ *response = arg1;
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+ gtk_main_quit();
+}
+#endif // LL_GTK
+
+static BOOL do_ask_dialog(void)
+{
+#if LL_GTK
+ gtk_disable_setlocale();
+ if (!gtk_init_check(NULL, NULL)) {
+ llinfos << "Could not initialize GTK for 'ask to send crash report' dialog; not sending report." << llendl;
+ return FALSE;
+ }
+
+ GtkWidget *win = NULL;
+ GtkDialogFlags flags = GTK_DIALOG_MODAL;
+ GtkMessageType messagetype = GTK_MESSAGE_QUESTION;
+ GtkButtonsType buttons = GTK_BUTTONS_YES_NO;
+ gint response = GTK_RESPONSE_NONE;
+
+ win = gtk_message_dialog_new(NULL,
+ flags, messagetype, buttons,
+ dialog_text);
+ gtk_window_set_type_hint(GTK_WINDOW(win),
+ GDK_WINDOW_TYPE_HINT_DIALOG);
+ gtk_window_set_title(GTK_WINDOW(win), dialog_title);
+ g_signal_connect (win,
+ "response",
+ G_CALLBACK (response_callback),
+ &response);
+ gtk_widget_show_all (win);
+ gtk_main();
+
+ return (GTK_RESPONSE_OK == response ||
+ GTK_RESPONSE_YES == response ||
+ GTK_RESPONSE_APPLY == response);
+#else
+ return FALSE;
+#endif // LL_GTK
+}
+
+LLCrashLoggerLinux::LLCrashLoggerLinux(void)
+{
+}
+
+LLCrashLoggerLinux::~LLCrashLoggerLinux(void)
+{
+}
+
+void LLCrashLoggerLinux::gatherPlatformSpecificFiles()
+{
+ mFileMap["CrashLog"] = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"stack_trace.log").c_str();
+}
+
+bool LLCrashLoggerLinux::mainLoop()
+{
+ if(!do_ask_dialog())
+ {
+ return true;
+ }
+ sendCrashLogs();
+ return true;
+}
+
+void LLCrashLoggerLinux::updateApplication(LLString message)
+{
+ LLCrashLogger::updateApplication(message);
+}
diff --git a/linden/indra/linux_crash_logger/llcrashloggerlinux.h b/linden/indra/linux_crash_logger/llcrashloggerlinux.h
new file mode 100644
index 0000000..a84ee00
--- /dev/null
+++ b/linden/indra/linux_crash_logger/llcrashloggerlinux.h
@@ -0,0 +1,49 @@
+/**
+ * @file llcrashloggerlinux.h
+ * @brief Linux crash logger definition
+ *
+ * $LicenseInfo:firstyear=2003&license=viewergpl$
+ *
+ * Copyright (c) 2003-2007, Linden Research, Inc.
+ *
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab. Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlife.com/developers/opensource/gplv2
+ *
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at http://secondlife.com/developers/opensource/flossexception
+ *
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ *
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LLCRASHLOGGERLINUX_H
+#define LLCRASHLOGGERLINUX_H
+
+#include "linden_common.h"
+#include "llcrashlogger.h"
+#include "llstring.h"
+
+class LLCrashLoggerLinux : public LLCrashLogger
+{
+public:
+ LLCrashLoggerLinux(void);
+ ~LLCrashLoggerLinux(void);
+ virtual bool mainLoop();
+ virtual void updateApplication(LLString message = "");
+ virtual void gatherPlatformSpecificFiles();
+};
+
+#endif
diff --git a/linden/indra/llcommon/llapp.cpp b/linden/indra/llcommon/llapp.cpp
index b0751b8..2347ac9 100644
--- a/linden/indra/llcommon/llapp.cpp
+++ b/linden/indra/llcommon/llapp.cpp
@@ -47,6 +47,7 @@
//
#if LL_WINDOWS
LONG WINAPI default_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop);
+BOOL ConsoleCtrlHandler(DWORD fdwCtrlType);
#else
#include // for fork()
void setup_signals();
@@ -219,6 +220,11 @@ void LLApp::setupErrorHandling()
// Disable this until the viewer gets ported so server crashes can be JIT debugged.
//LPTOP_LEVEL_EXCEPTION_FILTER prev_filter;
//prev_filter = SetUnhandledExceptionFilter(default_windows_exception_handler);
+
+ // This sets a callback to handle w32 signals to the console window.
+ // The viewer shouldn't be affected, sicne its a windowed app.
+ SetConsoleCtrlHandler( (PHANDLER_ROUTINE) ConsoleCtrlHandler, TRUE);
+
#else
//
// Start up signal handling.
@@ -399,6 +405,34 @@ LONG WINAPI default_windows_exception_handler(struct _EXCEPTION_POINTERS *except
return retval;
}
+// Win32 doesn't support signals. This is used instead.
+BOOL ConsoleCtrlHandler(DWORD fdwCtrlType)
+{
+ switch (fdwCtrlType)
+ {
+ case CTRL_BREAK_EVENT:
+ case CTRL_LOGOFF_EVENT:
+ case CTRL_SHUTDOWN_EVENT:
+ case CTRL_CLOSE_EVENT: // From end task or the window close button.
+ case CTRL_C_EVENT: // from CTRL-C on the keyboard
+ // Just set our state to quitting, not error
+ if (LLApp::isQuitting() || LLApp::isError())
+ {
+ // We're already trying to die, just ignore this signal
+ if (LLApp::sLogInSignal)
+ {
+ llinfos << "Signal handler - Already trying to quit, ignoring signal!" << llendl;
+ }
+ return TRUE;
+ }
+ LLApp::setQuitting();
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+}
+
#else //!LL_WINDOWS
void LLApp::setChildCallback(pid_t pid, LLAppChildCallback callback)
{
diff --git a/linden/indra/llcommon/llavatarconstants.h b/linden/indra/llcommon/llavatarconstants.h
index c62cae2..4ba6642 100644
--- a/linden/indra/llcommon/llavatarconstants.h
+++ b/linden/indra/llcommon/llavatarconstants.h
@@ -49,6 +49,7 @@ const U32 AVATAR_MATURE_PUBLISH = 0x1 << 1; // profile is "mature"
const U32 AVATAR_IDENTIFIED = 0x1 << 2; // whether avatar has provided payment info
const U32 AVATAR_TRANSACTED = 0x1 << 3; // whether avatar has actively used payment info
const U32 AVATAR_ONLINE = 0x1 << 4; // the online status of this avatar, if known.
+const U32 AVATAR_AGEVERIFIED = 0x1 << 5; // whether avatar has been age-verified
static const std::string VISIBILITY_DEFAULT("default");
static const std::string VISIBILITY_HIDDEN("hidden");
diff --git a/linden/indra/llcommon/llcommon.vcproj b/linden/indra/llcommon/llcommon.vcproj
index 80704af..0ab544e 100644
--- a/linden/indra/llcommon/llcommon.vcproj
+++ b/linden/indra/llcommon/llcommon.vcproj
@@ -415,6 +415,9 @@
RelativePath=".\llindexedqueue.h">
+
+
class ImplBase : public LLSD::Impl
///< This class handles most of the work for a subclass of Impl
@@ -632,7 +648,11 @@ U32 LLSD::Impl::sOutstandingCount = 0;
+#ifdef NAME_UNNAMED_NAMESPACE
+namespace LLSDUnnamedNamespace {
+#else
namespace {
+#endif
inline LLSD::Impl& safe(LLSD::Impl* impl)
{ return LLSD::Impl::safe(impl); }
diff --git a/linden/indra/llcommon/llsd.h b/linden/indra/llcommon/llsd.h
index 1fb917f..65ba7dd 100644
--- a/linden/indra/llcommon/llsd.h
+++ b/linden/indra/llcommon/llsd.h
@@ -376,6 +376,7 @@ struct llsd_select_string : public std::unary_function
}
};
+std::ostream& operator<<(std::ostream& s, const LLSD& llsd);
/** QUESTIONS & TO DOS
- Would Binary be more convenient as usigned char* buffer semantics?
diff --git a/linden/indra/llcommon/llsdserialize.cpp b/linden/indra/llcommon/llsdserialize.cpp
index a7470be..5ab9471 100644
--- a/linden/indra/llcommon/llsdserialize.cpp
+++ b/linden/indra/llcommon/llsdserialize.cpp
@@ -1641,4 +1641,9 @@ void serialize_string(const std::string& value, std::ostream& str)
}
}
+std::ostream& operator<<(std::ostream& s, const LLSD& llsd)
+{
+ s << LLSDNotationStreamer(llsd);
+ return s;
+}
diff --git a/linden/indra/llcommon/llstring.cpp b/linden/indra/llcommon/llstring.cpp
index 6dab598..e701ea0 100644
--- a/linden/indra/llcommon/llstring.cpp
+++ b/linden/indra/llcommon/llstring.cpp
@@ -34,6 +34,13 @@
#include "llstring.h"
#include "llerror.h"
+#if LL_WINDOWS
+#define WIN32_LEAN_AND_MEAN
+#include
+#include
+#include // for WideCharToMultiByte
+#endif
+
std::string ll_safe_string(const char* in)
{
if(in) return std::string(in);
@@ -718,19 +725,7 @@ std::string utf8str_removeCRLF(const std::string& utf8str)
}
#if LL_WINDOWS
-/* If the size of the passed in buffer is not large enough to hold the string,
- * two bad things happen:
- * 1. resulting formatted string is NOT null terminated
- * 2. Depending on the platform, the return value could be a) the required
- * size of the buffer to copy the entire formatted string or b) -1.
- * On Windows with VS.Net 2003, it returns -1 e.g.
- *
- * safe_snprintf always adds a NULL terminator so that the caller does not
- * need to check for return value or need to add the NULL terminator.
- * It does not, however change the return value - to let the caller know
- * that the passed in buffer size was not large enough to hold the formatted string.
- *
- */
+// documentation moved to header. Phoenix 2007-11-27
int safe_snprintf(char *str, size_t size, const char *format, ...)
{
va_list args;
@@ -742,6 +737,43 @@ int safe_snprintf(char *str, size_t size, const char *format, ...)
str[size-1] = '\0'; // always null terminate
return num_written;
}
+
+std::string ll_convert_wide_to_string(const wchar_t* in)
+{
+ std::string out;
+ if(in)
+ {
+ int len_in = wcslen(in);
+ int len_out = WideCharToMultiByte(
+ CP_ACP,
+ 0,
+ in,
+ len_in,
+ NULL,
+ 0,
+ 0,
+ 0);
+ // We will need two more bytes for the double NULL ending
+ // created in WideCharToMultiByte().
+ char* pout = new char [len_out + 2];
+ memset(pout, 0, len_out + 2);
+ if(pout)
+ {
+ WideCharToMultiByte(
+ CP_ACP,
+ 0,
+ in,
+ len_in,
+ pout,
+ len_out,
+ 0,
+ 0);
+ out.assign(pout);
+ delete[] pout;
+ }
+ }
+ return out;
+}
#endif // LL_WINDOWS
S32 LLStringOps::collate(const llwchar* a, const llwchar* b)
diff --git a/linden/indra/llcommon/llstring.h b/linden/indra/llcommon/llstring.h
index 70f7d54..ae44ac3 100644
--- a/linden/indra/llcommon/llstring.h
+++ b/linden/indra/llcommon/llstring.h
@@ -481,7 +481,37 @@ std::ostream& operator<<(std::ostream &s, const LLStringBase &str)
std::ostream& operator<<(std::ostream &s, const LLWString &wstr);
#if LL_WINDOWS
-int safe_snprintf(char *str, size_t size, const char *format, ...);
+/* @name Windows string helpers
+ */
+//@{
+
+/**
+ * @brief Implementation the expected snprintf interface.
+ *
+ * If the size of the passed in buffer is not large enough to hold the string,
+ * two bad things happen:
+ * 1. resulting formatted string is NOT null terminated
+ * 2. Depending on the platform, the return value could be a) the required
+ * size of the buffer to copy the entire formatted string or b) -1.
+ * On Windows with VS.Net 2003, it returns -1 e.g.
+ *
+ * safe_snprintf always adds a NULL terminator so that the caller does not
+ * need to check for return value or need to add the NULL terminator.
+ * It does not, however change the return value - to let the caller know
+ * that the passed in buffer size was not large enough to hold the
+ * formatted string.
+ *
+ */
+int safe_snprintf(char* str, size_t size, const char* format, ...);
+
+/**
+ * @brief Convert a wide string to std::string
+ *
+ * This replaces the unsafe W2A macro from ATL.
+ */
+std::string ll_convert_wide_to_string(const wchar_t* in);
+
+//@}
#endif // LL_WINDOWS
/**
diff --git a/linden/indra/llcommon/llsys.cpp b/linden/indra/llcommon/llsys.cpp
index 3b57db7..7346b29 100644
--- a/linden/indra/llcommon/llsys.cpp
+++ b/linden/indra/llcommon/llsys.cpp
@@ -65,8 +65,7 @@ static const S32 CPUINFO_BUFFER_SIZE = 16383;
LLCPUInfo gSysCPU;
LLOSInfo::LLOSInfo() :
- mMajorVer(0), mMinorVer(0), mBuild(0),
- mOSString("")
+ mMajorVer(0), mMinorVer(0), mBuild(0)
{
#if LL_WINDOWS
@@ -94,27 +93,28 @@ LLOSInfo::LLOSInfo() :
// Test for the product.
if(osvi.dwMajorVersion <= 4)
{
- mOSString = "Microsoft Windows NT ";
+ mOSStringSimple = "Microsoft Windows NT ";
}
else if(osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)
{
- mOSString = "Microsoft Windows 2000 ";
+ mOSStringSimple = "Microsoft Windows 2000 ";
}
else if(osvi.dwMajorVersion ==5 && osvi.dwMinorVersion == 1)
{
- mOSString = "Microsoft Windows XP ";
+ mOSStringSimple = "Microsoft Windows XP ";
}
else if(osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
{
if(osvi.wProductType == VER_NT_WORKSTATION)
- mOSString = "Microsoft Windows XP x64 Edition ";
- else mOSString = "Microsoft Windows Server 2003 ";
+ mOSStringSimple = "Microsoft Windows XP x64 Edition ";
+ else
+ mOSStringSimple = "Microsoft Windows Server 2003 ";
}
else if(osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
{
if(osvi.wProductType == VER_NT_WORKSTATION)
- mOSString = "Microsoft Windows Vista ";
- else mOSString = "Microsoft Windows Vista Server ";
+ mOSStringSimple = "Microsoft Windows Vista ";
+ else mOSStringSimple = "Microsoft Windows Vista Server ";
}
else // Use the registry on early versions of Windows NT.
{
@@ -129,15 +129,15 @@ LLOSInfo::LLOSInfo() :
RegCloseKey( hKey );
if ( lstrcmpi( L"WINNT", szProductType) == 0 )
{
- mOSString += "Professional ";
+ mOSStringSimple += "Professional ";
}
else if ( lstrcmpi( L"LANMANNT", szProductType) == 0 )
{
- mOSString += "Server ";
+ mOSStringSimple += "Server ";
}
else if ( lstrcmpi( L"SERVERNT", szProductType) == 0 )
{
- mOSString += "Advanced Server ";
+ mOSStringSimple += "Advanced Server ";
}
}
@@ -164,7 +164,7 @@ LLOSInfo::LLOSInfo() :
csdversion.c_str(),
(osvi.dwBuildNumber & 0xffff));
}
- mOSString += tmp;
+ mOSString = mOSStringSimple + tmp;
}
break;
@@ -172,41 +172,65 @@ LLOSInfo::LLOSInfo() :
// Test for the Windows 95 product family.
if(osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
{
- mOSString = "Microsoft Windows 95 ";
+ mOSStringSimple = "Microsoft Windows 95 ";
if ( osvi.szCSDVersion[1] == 'C' || osvi.szCSDVersion[1] == 'B' )
{
- mOSString += "OSR2 ";
+ mOSStringSimple += "OSR2 ";
}
}
if(osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
{
- mOSString = "Microsoft Windows 98 ";
+ mOSStringSimple = "Microsoft Windows 98 ";
if ( osvi.szCSDVersion[1] == 'A' )
{
- mOSString += "SE ";
+ mOSStringSimple += "SE ";
}
}
if(osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
{
- mOSString = "Microsoft Windows Millennium Edition ";
- }
+ mOSStringSimple = "Microsoft Windows Millennium Edition ";
+ }
+ mOSString = mOSStringSimple;
break;
}
#else
struct utsname un;
- if(uname(&un) != -1)
+ if(uname(&un) != -1)
{
- mOSString.append(un.sysname);
- mOSString.append(" ");
- mOSString.append(un.release);
+ mOSStringSimple.append(un.sysname);
+ mOSStringSimple.append(" ");
+ mOSStringSimple.append(un.release);
+
+ mOSString = mOSStringSimple;
mOSString.append(" ");
mOSString.append(un.version);
mOSString.append(" ");
mOSString.append(un.machine);
+
+ // Simplify 'Simple'
+ std::string ostype = mOSStringSimple.substr(0, mOSStringSimple.find_first_of(" ", 0));
+ if (ostype == "Darwin")
+ {
+ // Only care about major Darwin versions, truncate at first '.'
+ S32 idx1 = mOSStringSimple.find_first_of(".", 0);
+ std::string simple = mOSStringSimple.substr(0, idx1);
+ if (simple.length() > 0)
+ mOSStringSimple = simple;
+ }
+ else if (ostype == "Linux")
+ {
+ // Only care about major and minor Linux versions, truncate at second '.'
+ S32 idx1 = mOSStringSimple.find_first_of(".", 0);
+ S32 idx2 = (idx1 != std::string::npos) ? mOSStringSimple.find_first_of(".", idx1+1) : std::string::npos;
+ std::string simple = mOSStringSimple.substr(0, idx2);
+ if (simple.length() > 0)
+ mOSStringSimple = simple;
+ }
}
else
{
- mOSString.append("Unable to collect OS info");
+ mOSStringSimple.append("Unable to collect OS info");
+ mOSString = mOSStringSimple;
}
#endif
@@ -255,6 +279,11 @@ const std::string& LLOSInfo::getOSString() const
return mOSString;
}
+const std::string& LLOSInfo::getOSStringSimple() const
+{
+ return mOSStringSimple;
+}
+
const S32 STATUS_SIZE = 8192;
//static
diff --git a/linden/indra/llcommon/llsys.h b/linden/indra/llcommon/llsys.h
index fc4e027..332d62c 100644
--- a/linden/indra/llcommon/llsys.h
+++ b/linden/indra/llcommon/llsys.h
@@ -51,6 +51,7 @@ public:
void stream(std::ostream& s) const;
const std::string& getOSString() const;
+ const std::string& getOSStringSimple() const;
S32 mMajorVer;
S32 mMinorVer;
@@ -64,6 +65,7 @@ public:
static U32 getProcessResidentSizeKB();
private:
std::string mOSString;
+ std::string mOSStringSimple;
};
diff --git a/linden/indra/llcommon/lluri.cpp b/linden/indra/llcommon/lluri.cpp
index df79043..5e4dec7 100644
--- a/linden/indra/llcommon/lluri.cpp
+++ b/linden/indra/llcommon/lluri.cpp
@@ -40,6 +40,8 @@
#include "../llmath/lluuid.h"
+// system includes
+#include
// static
std::string LLURI::escape(const std::string& str, const std::string & allowed)
@@ -130,7 +132,7 @@ LLURI::LLURI()
LLURI::LLURI(const std::string& escaped_str)
{
- std::string::size_type delim_pos, delim_pos2;
+ std::string::size_type delim_pos;
delim_pos = escaped_str.find(':');
std::string temp;
if (delim_pos == std::string::npos)
@@ -144,13 +146,39 @@ LLURI::LLURI(const std::string& escaped_str)
mEscapedOpaque = escaped_str.substr(delim_pos+1);
}
- if (mScheme == "http" || mScheme == "https" || mScheme == "ftp")
+ parseAuthorityAndPathUsingOpaque();
+
+ delim_pos = mEscapedPath.find('?');
+ if (delim_pos != std::string::npos)
+ {
+ mEscapedQuery = mEscapedPath.substr(delim_pos+1);
+ mEscapedPath = mEscapedPath.substr(0,delim_pos);
+ }
+}
+
+static BOOL isDefault(const std::string& scheme, U16 port)
+{
+ if (scheme == "http")
+ return port == 80;
+ if (scheme == "https")
+ return port == 443;
+ if (scheme == "ftp")
+ return port == 21;
+
+ return FALSE;
+}
+
+void LLURI::parseAuthorityAndPathUsingOpaque()
+{
+ if (mScheme == "http" || mScheme == "https" ||
+ mScheme == "ftp" || mScheme == "secondlife" )
{
if (mEscapedOpaque.substr(0,2) != "//")
{
return;
}
-
+
+ std::string::size_type delim_pos, delim_pos2;
delim_pos = mEscapedOpaque.find('/', 2);
delim_pos2 = mEscapedOpaque.find('?', 2);
// no path, no query
@@ -182,27 +210,12 @@ LLURI::LLURI(const std::string& escaped_str)
mEscapedPath = mEscapedOpaque.substr(delim_pos);
}
}
-
- delim_pos = mEscapedPath.find('?');
- if (delim_pos != std::string::npos)
+ else if (mScheme == "about")
{
- mEscapedQuery = mEscapedPath.substr(delim_pos+1);
- mEscapedPath = mEscapedPath.substr(0,delim_pos);
+ mEscapedPath = mEscapedOpaque;
}
}
-static BOOL isDefault(const std::string& scheme, U16 port)
-{
- if (scheme == "http")
- return port == 80;
- if (scheme == "https")
- return port == 443;
- if (scheme == "ftp")
- return port == 21;
-
- return FALSE;
-}
-
LLURI::LLURI(const std::string& scheme,
const std::string& userName,
const std::string& password,
@@ -440,6 +453,22 @@ std::string LLURI::path() const
return unescape(mEscapedPath);
}
+LLSD LLURI::pathArray() const
+{
+ typedef boost::tokenizer > tokenizer;
+ boost::char_separator sep("/", "", boost::drop_empty_tokens);
+ tokenizer tokens(mEscapedPath, sep);
+ tokenizer::iterator it = tokens.begin();
+ tokenizer::iterator end = tokens.end();
+
+ LLSD params;
+ for ( ; it != end; ++it)
+ {
+ params.append(*it);
+ }
+ return params;
+}
+
std::string LLURI::query() const
{
return unescape(mEscapedQuery);
diff --git a/linden/indra/llcommon/lluri.h b/linden/indra/llcommon/lluri.h
index 3246dcd..bfe673c 100644
--- a/linden/indra/llcommon/lluri.h
+++ b/linden/indra/llcommon/lluri.h
@@ -107,7 +107,7 @@ public:
BOOL defaultPort() const; // true if port is default for scheme
const std::string& escapedPath() const { return mEscapedPath; }
std::string path() const; // ex.: "/abc/def", includes leading slash
- // LLSD pathArray() const; // above decoded into an array of strings
+ LLSD pathArray() const; // above decoded into an array of strings
std::string query() const; // ex.: "x=34", section after "?"
const std::string& escapedQuery() const { return mEscapedQuery; }
LLSD queryMap() const; // above decoded into a map
@@ -135,6 +135,11 @@ public:
//@}
private:
+ // only "http", "https", "ftp", and "secondlife" schemes are parsed
+ // secondlife scheme parses authority as "" and includes it as part of
+ // the path. See lluri_tut.cpp
+ // i.e. secondlife://app/login has mAuthority = "" and mPath = "/app/login"
+ void parseAuthorityAndPathUsingOpaque();
std::string mScheme;
std::string mEscapedOpaque;
std::string mEscapedAuthority;
diff --git a/linden/indra/llcommon/llversionserver.h b/linden/indra/llcommon/llversionserver.h
index e36702a..9e1a8f5 100644
--- a/linden/indra/llcommon/llversionserver.h
+++ b/linden/indra/llcommon/llversionserver.h
@@ -34,8 +34,8 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 18;
-const S32 LL_VERSION_PATCH = 3;
-const S32 LL_VERSION_BUILD = 73552;
+const S32 LL_VERSION_PATCH = 6;
+const S32 LL_VERSION_BUILD = 74522;
const char * const LL_CHANNEL = "Second Life Server";
diff --git a/linden/indra/llcommon/llversionviewer.h b/linden/indra/llcommon/llversionviewer.h
index 1df8a89..f9f3bf2 100644
--- a/linden/indra/llcommon/llversionviewer.h
+++ b/linden/indra/llcommon/llversionviewer.h
@@ -34,8 +34,8 @@
const S32 LL_VERSION_MAJOR = 1;
const S32 LL_VERSION_MINOR = 18;
-const S32 LL_VERSION_PATCH = 5;
-const S32 LL_VERSION_BUILD = 3;
+const S32 LL_VERSION_PATCH = 6;
+const S32 LL_VERSION_BUILD = 0;
const char * const LL_CHANNEL = "Second Life Release";
diff --git a/linden/indra/llcrashlogger/llcrashlogger.cpp b/linden/indra/llcrashlogger/llcrashlogger.cpp
new file mode 100755
index 0000000..01e9901
--- /dev/null
+++ b/linden/indra/llcrashlogger/llcrashlogger.cpp
@@ -0,0 +1,309 @@
+/**
+* @file llcrashlogger.cpp
+* @brief Crash logger implementation
+*
+* $LicenseInfo:firstyear=2003&license=viewergpl$
+*
+* Copyright (c) 2003-2007, Linden Research, Inc.
+*
+* Second Life Viewer Source Code
+* The source code in this file ("Source Code") is provided by Linden Lab
+* to you under the terms of the GNU General Public License, version 2.0
+* ("GPL"), unless you have obtained a separate licensing agreement
+* ("Other License"), formally executed by you and Linden Lab. Terms of
+* the GPL can be found in doc/GPL-license.txt in this distribution, or
+* online at http://secondlife.com/developers/opensource/gplv2
+*
+* There are special exceptions to the terms and conditions of the GPL as
+* it is applied to this Source Code. View the full text of the exception
+* in the file doc/FLOSS-exception.txt in this software distribution, or
+* online at http://secondlife.com/developers/opensource/flossexception
+*
+* By copying, modifying or distributing this software, you acknowledge
+* that you have read and understood your obligations described above,
+* and agree to abide by those obligations.
+*
+* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+* COMPLETENESS OR PERFORMANCE.
+* $/LicenseInfo$
+*/
+#include
+#include
+#include
+#include