diff options
author | nealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2009-04-06 00:25:29 +0000 |
---|---|---|
committer | nealsid <nealsid@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2009-04-06 00:25:29 +0000 |
commit | a3d4c973369987e14cc0c05964e288ea0eac11dc (patch) | |
tree | f53b1acc20ae0a32a8b2a5cc96c4a0d90e101368 /src/client/mac/crash_generation | |
parent | Open sourcing the Breakpad framework from Google. (diff) | |
download | breakpad-a3d4c973369987e14cc0c05964e288ea0eac11dc.tar.xz |
Incorporate feedback from first Breakpad integration.
This upload fixes five issues:
1) Preston's email was hardcoded in the xib :-(
2) Changed from xib to NIB to facilitate Tiger building
3) Changed the logs location to be user specifiable by BreakpadMinidumpLocation
key, or ~/Library/Breakpad/<BREAKPAD_PRODUCT> by default
4) Fixed GTM Defines problem in order to build on Tiger
5) Also set CFBundleIcon in the sender program correctly, and updated plist, and
renamed ReporterIcons to crash_report_sendER.ICNS. However the rietveld upload
script doesn't appear to pick up renamed files correctly, so that file doesn't
show up in the patch upload.
Also various comments were updated for accuracy.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@323 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/client/mac/crash_generation')
-rw-r--r-- | src/client/mac/crash_generation/Inspector.h | 15 | ||||
-rw-r--r-- | src/client/mac/crash_generation/Inspector.mm | 28 |
2 files changed, 29 insertions, 14 deletions
diff --git a/src/client/mac/crash_generation/Inspector.h b/src/client/mac/crash_generation/Inspector.h index 38d441fb..098c56e8 100644 --- a/src/client/mac/crash_generation/Inspector.h +++ b/src/client/mac/crash_generation/Inspector.h @@ -122,18 +122,9 @@ class ConfigFile { //============================================================================= class MinidumpLocation { public: - MinidumpLocation() { - NSString *minidumpDirBase = NSHomeDirectory(); - NSString *minidumpDir; - - // Put root processes at root - if (geteuid() == 0) - minidumpDirBase = @"/"; - - minidumpDir = - [minidumpDirBase stringByAppendingPathComponent:@"Library/Logs/Google"]; - + MinidumpLocation(const NSString *minidumpDir) { // Ensure that the path exists. Fallback to /tmp if unable to locate path. + assert(minidumpDir); if (!EnsureDirectoryPathExists(minidumpDir)) { DEBUGLOG(stderr, "Unable to create: %s\n", [minidumpDir UTF8String]); minidumpDir = @"/tmp"; @@ -196,5 +187,3 @@ class Inspector { } // namespace google_breakpad - - diff --git a/src/client/mac/crash_generation/Inspector.mm b/src/client/mac/crash_generation/Inspector.mm index f659b669..2508289c 100644 --- a/src/client/mac/crash_generation/Inspector.mm +++ b/src/client/mac/crash_generation/Inspector.mm @@ -325,7 +325,33 @@ bool Inspector::InspectTask() { // keep the task quiet while we're looking at it task_suspend(remote_task_); - MinidumpLocation minidumpLocation; + NSString *minidumpDir; + + const char *minidumpDirectory = + config_params_.GetValueForKey(BREAKPAD_DUMP_DIRECTORY); + + // If the client app has not specified a minidump directory, + // use a default of Library/<kDefaultLibrarySubdirectory>/<Product Name> + if (0 == strlen(minidumpDirectory)) { + NSArray *libraryDirectories = + NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, + NSUserDomainMask, + YES); + + NSString *applicationSupportDirectory = + [libraryDirectories objectAtIndex:0]; + + minidumpDir = + [NSString stringWithFormat:@"%@/%s/%s", + applicationSupportDirectory, + kDefaultLibrarySubdirectory, + config_params_.GetValueForKey(GOOGLE_BREAKPAD_PRODUCT)]; + } else { + minidumpDir = [[NSString stringWithUTF8String:minidumpDirectory] + stringByExpandingTildeInPath]; + } + + MinidumpLocation minidumpLocation(minidumpDir); config_file_.WriteFile( &config_params_, minidumpLocation.GetPath(), |