]> git.sesse.net Git - vlc/commitdiff
macosx: Fix crashlog opening.
authorPierre d'Herbemont <pdherbemont@videolan.org>
Fri, 1 Aug 2008 21:22:02 +0000 (23:22 +0200)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Fri, 1 Aug 2008 22:26:14 +0000 (00:26 +0200)
modules/gui/macosx/intf.m

index 17b163f402444bb79b172f85342f22d4f61837e5..a54c34c2dc48c2332eb5b2dcea2e51c5902b8bd3 100644 (file)
@@ -1991,14 +1991,43 @@ end:
 
 - (IBAction)openCrashLog:(id)sender
 {
-    NSString * o_path = [@"~/Library/Logs/CrashReporter/VLC.crash.log"
-                                    stringByExpandingTildeInPath];
-
+    NSString * crashReporter = [@"~/Library/Logs/CrashReporter" stringByExpandingTildeInPath];
+    NSDirectoryEnumerator *direnum = [[NSFileManager defaultManager] enumeratorAtPath:crashReporter];
+    NSString *fname;
+    BOOL found = NO;
+    NSString * latestLog = nil;
+    int year = 0;
+    int month = 0;
+    int day = 0;
+    int hours = 0;
+
+    while (fname = [direnum nextObject])
+    {
+        [direnum skipDescendents];
+        if([fname hasPrefix:@"VLC"] && [fname hasSuffix:@"crash"])
+        {
+            NSArray * compo = [fname componentsSeparatedByString:@"_"];
+            if( [compo count] < 3 ) { found = NO; break; }
+            compo = [[compo objectAtIndex:1] componentsSeparatedByString:@"-"];
+            if( [compo count] < 4 ) { found = NO; break; }
+            if( year  < [[compo objectAtIndex:0] intValue] &&
+                month < [[compo objectAtIndex:1] intValue] &&
+                day   < [[compo objectAtIndex:2] intValue] &&
+                hours < [[compo objectAtIndex:3] intValue] )
+            {
+                year  = [[compo objectAtIndex:0] intValue];
+                month = [[compo objectAtIndex:1] intValue];
+                day   = [[compo objectAtIndex:2] intValue];
+                hours = [[compo objectAtIndex:3] intValue];
+                latestLog = [NSString stringWithFormat:@"%@/%@",crashReporter, fname];
+                found = YES;
+            }
+        }
+    }
 
-    if( [[NSFileManager defaultManager] fileExistsAtPath: o_path ] )
+    if( found && latestLog && [[NSFileManager defaultManager] fileExistsAtPath: latestLog ] )
     {
-        [[NSWorkspace sharedWorkspace] openFile: o_path
-                                    withApplication: @"Console"];
+        [[NSWorkspace sharedWorkspace] openFile: latestLog withApplication: @"Console"];
     }
     else
     {