From c23d1e5ebd8b82ee54034f0c7e6efc88fb4e511c Mon Sep 17 00:00:00 2001 From: "stuart.morgan%alumni.case.edu" Date: Sat, 22 May 2010 16:48:38 +0000 Subject: [PATCH] Camino only - Bug 445629: Update Sparkle to latest trunk, skipping the delta-update patches git-svn-id: svn://10.0.0.236/trunk@260355 18797224-902f-48f8-a5cc-f745e15eee43 --- .../Configurations/ConfigCommon.xcconfig | 15 +- .../Configurations/ConfigCommonDebug.xcconfig | 6 +- .../ConfigCommonRelease.xcconfig | 2 - mozilla/camino/sparkle/NTSynchronousTask.h | 1 + mozilla/camino/sparkle/NTSynchronousTask.m | 259 ++-- mozilla/camino/sparkle/README | 6 +- mozilla/camino/sparkle/SUAppcast.h | 5 +- mozilla/camino/sparkle/SUAppcast.m | 62 +- mozilla/camino/sparkle/SUAppcastItem.h | 4 +- mozilla/camino/sparkle/SUAppcastItem.m | 16 +- .../camino/sparkle/SUAutomaticUpdateDriver.h | 4 +- mozilla/camino/sparkle/SUBasicUpdateDriver.m | 56 +- mozilla/camino/sparkle/SUConstants.h | 36 +- mozilla/camino/sparkle/SUConstants.m | 38 +- mozilla/camino/sparkle/SUDSAVerifier.m | 46 +- .../camino/sparkle/SUDiskImageUnarchiver.m | 40 +- mozilla/camino/sparkle/SUHost.h | 1 + mozilla/camino/sparkle/SUHost.m | 30 +- mozilla/camino/sparkle/SUInstaller.h | 2 +- mozilla/camino/sparkle/SUInstaller.m | 14 +- mozilla/camino/sparkle/SUPackageInstaller.m | 18 +- mozilla/camino/sparkle/SUPipedUnarchiver.m | 48 +- mozilla/camino/sparkle/SUPlainInstaller.m | 29 +- .../sparkle/SUPlainInstallerInternals.m | 41 +- .../camino/sparkle/SUScheduledUpdateDriver.h | 4 +- .../sparkle/SUStandardVersionComparator.m | 12 +- mozilla/camino/sparkle/SUStatusController.h | 4 +- mozilla/camino/sparkle/SUStatusController.m | 6 +- mozilla/camino/sparkle/SUSystemProfiler.m | 33 +- .../camino/sparkle/SUUIBasedUpdateDriver.m | 64 +- mozilla/camino/sparkle/SUUnarchiver.h | 2 +- mozilla/camino/sparkle/SUUnarchiver.m | 8 +- mozilla/camino/sparkle/SUUnarchiver_Private.h | 14 +- mozilla/camino/sparkle/SUUnarchiver_Private.m | 26 +- mozilla/camino/sparkle/SUUpdateAlert.m | 2 +- mozilla/camino/sparkle/SUUpdateDriver.h | 2 +- mozilla/camino/sparkle/SUUpdateDriver.m | 2 +- .../camino/sparkle/SUUpdatePermissionPrompt.m | 3 +- mozilla/camino/sparkle/SUUpdater.h | 4 +- mozilla/camino/sparkle/SUUpdater.m | 9 +- .../sparkle/SUUserInitiatedUpdateDriver.h | 4 +- .../sparkle/SUUserInitiatedUpdateDriver.m | 34 +- mozilla/camino/sparkle/SUWindowController.m | 3 +- mozilla/camino/sparkle/Sparkle.pch | 16 +- .../sparkle/Sparkle.xcodeproj/project.pbxproj | 93 +- .../SUAutomaticUpdateAlert.nib/classes.nib | 29 - .../SUAutomaticUpdateAlert.nib/info.nib | 18 - .../keyedobjects.nib | Bin 7137 -> 8147 bytes .../da.lproj/SUAutomaticUpdateAlert.strings | Bin 1040 -> 1032 bytes .../da.lproj/SUUpdateAlert.nib/classes.nib | 39 - .../da.lproj/SUUpdateAlert.nib/info.nib | 16 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10197 -> 11557 bytes .../sparkle/da.lproj/SUUpdateAlert.strings | Bin 1674 -> 1664 bytes .../SUUpdatePermissionPrompt.nib/classes.nib | 34 - .../data.dependency | 10 - .../SUUpdatePermissionPrompt.nib/info.nib | 16 - .../keyedobjects.nib | Bin 12807 -> 15232 bytes .../camino/sparkle/da.lproj/Sparkle.strings | Bin 8320 -> 8276 bytes .../designable.nib | 64 +- .../keyedobjects.nib | Bin 15269 -> 15315 bytes .../camino/sparkle/de.lproj/Sparkle.strings | Bin 8884 -> 8884 bytes .../designable.nib | 80 +- .../keyedobjects.nib | Bin 15739 -> 15740 bytes .../camino/sparkle/es.lproj/Sparkle.strings | Bin 9696 -> 9592 bytes .../camino/sparkle/ja.lproj/Sparkle.strings | Bin 7204 -> 7180 bytes .../SUAutomaticUpdateAlert.nib/designable.nib | 652 +++++++++ .../keyedobjects.nib | Bin 0 -> 8445 bytes .../SUAutomaticUpdateAlert.strings | Bin 0 -> 1068 bytes .../sparkle/pt_PT.lproj/SUStatus.strings | Bin 0 -> 96 bytes .../SUUpdateAlert.nib/designable.nib | 974 +++++++++++++ .../SUUpdateAlert.nib/keyedobjects.nib | Bin 0 -> 11971 bytes .../sparkle/pt_PT.lproj/SUUpdateAlert.strings | Bin 0 -> 1700 bytes .../designable.nib | 1130 +++++++++++++++ .../keyedobjects.nib | Bin 0 -> 15665 bytes .../sparkle/pt_PT.lproj/Sparkle.strings | Bin 0 -> 8528 bytes mozilla/camino/sparkle/relaunch.m | 28 +- .../SUAutomaticUpdateAlert.nib/classes.nib | 50 - .../SUAutomaticUpdateAlert.nib/info.nib | 20 - .../keyedobjects.nib | Bin 7675 -> 8751 bytes .../ru.lproj/SUAutomaticUpdateAlert.strings | Bin 1070 -> 1070 bytes .../ru.lproj/SUUpdateAlert.nib/classes.nib | 67 - .../ru.lproj/SUUpdateAlert.nib/info.nib | 20 - .../SUUpdateAlert.nib/keyedobjects.nib | Bin 10895 -> 12116 bytes .../sparkle/ru.lproj/SUUpdateAlert.strings | Bin 1688 -> 1680 bytes .../designable.nib | 1218 ++++------------- .../keyedobjects.nib | Bin 14999 -> 15767 bytes .../camino/sparkle/ru.lproj/Sparkle.strings | Bin 8364 -> 8364 bytes 87 files changed, 3751 insertions(+), 1838 deletions(-) delete mode 100644 mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/info.nib delete mode 100644 mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/classes.nib delete mode 100644 mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/data.dependency delete mode 100644 mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/info.nib create mode 100644 mozilla/camino/sparkle/pt_PT.lproj/SUAutomaticUpdateAlert.nib/designable.nib create mode 100644 mozilla/camino/sparkle/pt_PT.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib create mode 100755 mozilla/camino/sparkle/pt_PT.lproj/SUAutomaticUpdateAlert.strings create mode 100755 mozilla/camino/sparkle/pt_PT.lproj/SUStatus.strings create mode 100644 mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.nib/designable.nib create mode 100644 mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.nib/keyedobjects.nib create mode 100755 mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.strings create mode 100644 mozilla/camino/sparkle/pt_PT.lproj/SUUpdatePermissionPrompt.nib/designable.nib create mode 100644 mozilla/camino/sparkle/pt_PT.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib create mode 100755 mozilla/camino/sparkle/pt_PT.lproj/Sparkle.strings delete mode 100644 mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib delete mode 100644 mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib delete mode 100644 mozilla/camino/sparkle/ru.lproj/SUUpdateAlert.nib/classes.nib delete mode 100644 mozilla/camino/sparkle/ru.lproj/SUUpdateAlert.nib/info.nib diff --git a/mozilla/camino/sparkle/Configurations/ConfigCommon.xcconfig b/mozilla/camino/sparkle/Configurations/ConfigCommon.xcconfig index 92b4f129c95..7c1af2e1ba0 100644 --- a/mozilla/camino/sparkle/Configurations/ConfigCommon.xcconfig +++ b/mozilla/camino/sparkle/Configurations/ConfigCommon.xcconfig @@ -15,7 +15,9 @@ GCC_DEBUGGING_SYMBOLS = full GCC_PRECOMPILE_PREFIX_HEADER = YES GCC_PREFIX_HEADER = $(SDKROOT)/System/Library/Frameworks/Cocoa.framework/Headers/Cocoa.h GCC_FAST_OBJC_DISPATCH = YES -//GCC_FAST_OBJC_DISPATCH[arch=ppc] = NO // requires 10.4 +GCC_ENABLE_PASCAL_STRINGS = NO +//ARCHS = ppc i386 x86_64 +ARCHS = ppc i386 // Enable warnings GCC_WARN_CHECK_SWITCH_STATEMENTS = YES @@ -37,4 +39,13 @@ GCC_WARN_UNKNOWN_PRAGMAS = YES GCC_WARN_UNUSED_VARIABLE = YES GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES -WARNING_CFLAGS = -Wall +GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES +GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES +GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES +GCC_WARN_UNUSED_FUNCTION = YES +GCC_WARN_UNUSED_LABEL = YES +GCC_WARN_UNUSED_VALUE = YES +GCC_WARN_UNUSED_PARAMETER = YES +GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES +GCC_WARN_UNDECLARED_SELECTOR = YES +WARNING_CFLAGS = -Wall -Wundef -Wendif-labels -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-noreturn -Wmissing-format-attribute -Wpacked -Wredundant-decls -Winline -Wdisabled-optimization -Wformat=2 -Wlarger-than-32768 -Winvalid-pch diff --git a/mozilla/camino/sparkle/Configurations/ConfigCommonDebug.xcconfig b/mozilla/camino/sparkle/Configurations/ConfigCommonDebug.xcconfig index 718bd9fba14..36003c984b4 100644 --- a/mozilla/camino/sparkle/Configurations/ConfigCommonDebug.xcconfig +++ b/mozilla/camino/sparkle/Configurations/ConfigCommonDebug.xcconfig @@ -3,6 +3,8 @@ GCC_OPTIMIZATION_LEVEL = 0 DEBUG_INFORMATION_FORMAT = dwarf GCC_GENERATE_DEBUGGING_SYMBOLS = YES -SPARKLE_EXTRA_DEBUG = -DDEBUG -fstack-protector -D_FORTIFY_SOURCE=2 +SPARKLE_EXTRA_DEBUG_10_5_ONLY = -fstack-protector -D_FORTIFY_SOURCE=2 +SPARKLE_EXTRA_DEBUG = -DDEBUG OTHER_CFLAGS = $(SPARKLE_EXTRA_DEBUG) -ARCHS = $(NATIVE_ARCH_ACTUAL) + +// Add $(SPARKLE_EXTRA_DEBUG_10_5_ONLY) to SPARKLE_EXTRA_DEBUG if your deployment is 10.5 or greater. \ No newline at end of file diff --git a/mozilla/camino/sparkle/Configurations/ConfigCommonRelease.xcconfig b/mozilla/camino/sparkle/Configurations/ConfigCommonRelease.xcconfig index 16ae8ca910f..13c67733a1b 100644 --- a/mozilla/camino/sparkle/Configurations/ConfigCommonRelease.xcconfig +++ b/mozilla/camino/sparkle/Configurations/ConfigCommonRelease.xcconfig @@ -7,5 +7,3 @@ GCC_GENERATE_DEBUGGING_SYMBOLS = YES DEAD_CODE_STRIPPING = YES GCC_TREAT_WARNINGS_AS_ERRORS = YES GCC_WARN_UNINITIALIZED_AUTOS = YES -//ARCHS = ppc i386 x86_64 -ARCHS = ppc i386 diff --git a/mozilla/camino/sparkle/NTSynchronousTask.h b/mozilla/camino/sparkle/NTSynchronousTask.h index 1cf5c04e2f0..e1e32bee832 100644 --- a/mozilla/camino/sparkle/NTSynchronousTask.h +++ b/mozilla/camino/sparkle/NTSynchronousTask.h @@ -11,6 +11,7 @@ @interface NTSynchronousTask : NSObject { +@private NSTask *mv_task; NSPipe *mv_outputPipe; NSPipe *mv_inputPipe; diff --git a/mozilla/camino/sparkle/NTSynchronousTask.m b/mozilla/camino/sparkle/NTSynchronousTask.m index d506cad5b84..c2e3cecbefb 100644 --- a/mozilla/camino/sparkle/NTSynchronousTask.m +++ b/mozilla/camino/sparkle/NTSynchronousTask.m @@ -9,148 +9,8 @@ #import "Sparkle.h" #import "NTSynchronousTask.h" -@interface NTSynchronousTask (Private) -- (void)run:(NSString*)toolPath directory:(NSString*)currentDirectory withArgs:(NSArray*)args input:(NSData*)input; - -- (NSTask *)task; -- (void)setTask:(NSTask *)theTask; - -- (NSPipe *)outputPipe; -- (void)setOutputPipe:(NSPipe *)theOutputPipe; - -- (NSPipe *)inputPipe; -- (void)setInputPipe:(NSPipe *)theInputPipe; - -- (NSData *)output; -- (void)setOutput:(NSData *)theOutput; - -- (BOOL)done; -- (void)setDone:(BOOL)flag; - -- (int)result; -- (void)setResult:(int)theResult; -@end - @implementation NTSynchronousTask -- (id)init; -{ - self = [super init]; - if (self) - { - [self setTask:[[[NSTask alloc] init] autorelease]]; - [self setOutputPipe:[[[NSPipe alloc] init] autorelease]]; - [self setInputPipe:[[[NSPipe alloc] init] autorelease]]; - - [[self task] setStandardInput:[self inputPipe]]; - [[self task] setStandardOutput:[self outputPipe]]; - } - - return self; -} - -//---------------------------------------------------------- -// dealloc -//---------------------------------------------------------- -- (void)dealloc -{ - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [self setTask:nil]; - [self setOutputPipe:nil]; - [self setInputPipe:nil]; - [self setOutput:nil]; - - [super dealloc]; -} - -+ (NSData*)task:(NSString*)toolPath directory:(NSString*)currentDirectory withArgs:(NSArray*)args input:(NSData*)input; -{ - // we need this wacky pool here, otherwise we run out of pipes, the pipes are internally autoreleased - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSData* result=nil; - - NS_DURING - { - NTSynchronousTask* task = [[NTSynchronousTask alloc] init]; - - [task run:toolPath directory:currentDirectory withArgs:args input:input]; - - if ([task result] == 0) - result = [[task output] retain]; - - [task release]; - } - NS_HANDLER; - NS_ENDHANDLER; - - [pool drain]; - - // retained above - [result autorelease]; - - return result; -} - -@end - -@implementation NTSynchronousTask (Private) - -- (void)run:(NSString*)toolPath directory:(NSString*)currentDirectory withArgs:(NSArray*)args input:(NSData*)input; -{ - BOOL success = NO; - - if (currentDirectory) - [[self task] setCurrentDirectoryPath: currentDirectory]; - - [[self task] setLaunchPath:toolPath]; - [[self task] setArguments:args]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(taskOutputAvailable:) - name:NSFileHandleReadToEndOfFileCompletionNotification - object:[[self outputPipe] fileHandleForReading]]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(taskDidTerminate:) - name:NSTaskDidTerminateNotification - object:[self task]]; - - [[[self outputPipe] fileHandleForReading] readToEndOfFileInBackgroundAndNotifyForModes:[NSArray arrayWithObjects:NSDefaultRunLoopMode, NSModalPanelRunLoopMode, NSEventTrackingRunLoopMode, nil]]; - - NS_DURING - [[self task] launch]; - success = YES; - NS_HANDLER - ; - NS_ENDHANDLER - - if (success) - { - if (input) - { - // feed the running task our input - [[[self inputPipe] fileHandleForWriting] writeData:input]; - [[[self inputPipe] fileHandleForWriting] closeFile]; - } - - // loop until we are done receiving the data - if (![self done]) - { - double resolution = 1; - BOOL isRunning; - NSDate* next; - - do { - next = [NSDate dateWithTimeIntervalSinceNow:resolution]; - - isRunning = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode - beforeDate:next]; - } while (isRunning && ![self done]); - } - } -} - //---------------------------------------------------------- // task //---------------------------------------------------------- @@ -241,10 +101,6 @@ mv_result = theResult; } -@end - -@implementation NTSynchronousTask (Notifications) - - (void)taskOutputAvailable:(NSNotification*)note { [self setOutput:[[note userInfo] objectForKey:NSFileHandleNotificationDataItem]]; @@ -257,6 +113,117 @@ [self setResult:[[self task] terminationStatus]]; } +- (id)init; +{ + self = [super init]; + if (self) + { + [self setTask:[[[NSTask alloc] init] autorelease]]; + [self setOutputPipe:[[[NSPipe alloc] init] autorelease]]; + [self setInputPipe:[[[NSPipe alloc] init] autorelease]]; + + [[self task] setStandardInput:[self inputPipe]]; + [[self task] setStandardOutput:[self outputPipe]]; + } + + return self; +} + +//---------------------------------------------------------- +// dealloc +//---------------------------------------------------------- +- (void)dealloc +{ + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [mv_task release]; + [mv_outputPipe release]; + [mv_inputPipe release]; + [mv_output release]; + + [super dealloc]; +} + +- (void)run:(NSString*)toolPath directory:(NSString*)currentDirectory withArgs:(NSArray*)args input:(NSData*)input; +{ + BOOL success = NO; + + if (currentDirectory) + [[self task] setCurrentDirectoryPath: currentDirectory]; + + [[self task] setLaunchPath:toolPath]; + [[self task] setArguments:args]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(taskOutputAvailable:) + name:NSFileHandleReadToEndOfFileCompletionNotification + object:[[self outputPipe] fileHandleForReading]]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(taskDidTerminate:) + name:NSTaskDidTerminateNotification + object:[self task]]; + + [[[self outputPipe] fileHandleForReading] readToEndOfFileInBackgroundAndNotifyForModes:[NSArray arrayWithObjects:NSDefaultRunLoopMode, NSModalPanelRunLoopMode, NSEventTrackingRunLoopMode, nil]]; + + @try + { + [[self task] launch]; + success = YES; + } + @catch (NSException *localException) { } + + if (success) + { + if (input) + { + // feed the running task our input + [[[self inputPipe] fileHandleForWriting] writeData:input]; + [[[self inputPipe] fileHandleForWriting] closeFile]; + } + + // loop until we are done receiving the data + if (![self done]) + { + double resolution = 1; + BOOL isRunning; + NSDate* next; + + do { + next = [NSDate dateWithTimeIntervalSinceNow:resolution]; + + isRunning = [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode + beforeDate:next]; + } while (isRunning && ![self done]); + } + } +} + ++ (NSData*)task:(NSString*)toolPath directory:(NSString*)currentDirectory withArgs:(NSArray*)args input:(NSData*)input; +{ + // we need this wacky pool here, otherwise we run out of pipes, the pipes are internally autoreleased + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSData* result=nil; + + @try + { + NTSynchronousTask* task = [[NTSynchronousTask alloc] init]; + + [task run:toolPath directory:currentDirectory withArgs:args input:input]; + + if ([task result] == 0) + result = [[task output] retain]; + + [task release]; + } + @catch (NSException *localException) { } + + [pool drain]; + + // retained above + [result autorelease]; + + return result; +} + @end - - diff --git a/mozilla/camino/sparkle/README b/mozilla/camino/sparkle/README index c473daf2e30..c0c08e4a8de 100644 --- a/mozilla/camino/sparkle/README +++ b/mozilla/camino/sparkle/README @@ -3,9 +3,9 @@ functionality. See http://sparkle.andymatuschak.org/ for more information about Sparkle. The Sparkle framework is shipped inside Camino's bundle, and some glue code is included in Camino itself. -This is a pull of af37928283042f985e6c7c6ce67869de74e39b52 from git://github.com/andymatuschak/Sparkle.git +This is a pull of fe1372c9621a38978f03bc5773342e8716dcc1e3 from git://github.com/andymatuschak/Sparkle.git with the following changes: +- Skipped the delta-updates changes (803676d56a5f9de18e1b and 19ae8506ab1d54287c87), since that code doesn't yet build on 10.4 - Commented out used of [arch=] notation in ConfigCommon.xcconfig to allow building with our toolchain -- Commented out ARCHS in ConfigCommonRelease.xcconfig and replaced it with a version that doesn't include x86_64 +- Commented out ARCHS in ConfigCommon.xcconfig and replaced it with a version that doesn't include x86_64 - Changed GCC_GENERATE_DEBUGGING_SYMBOLS to YES (and set GCC_ENABLE_SYMBOL_SEPARATION to NO) in ConfigCommonRelease.xcconfig so that we get a dSYM bundle. -- Added null-checks to downloadFilename in SUAppcast.m to fix https://bugs.launchpad.net/sparkle/+bug/456514 and bug 560985. diff --git a/mozilla/camino/sparkle/SUAppcast.h b/mozilla/camino/sparkle/SUAppcast.h index a29492c54b5..5a60d2fda83 100644 --- a/mozilla/camino/sparkle/SUAppcast.h +++ b/mozilla/camino/sparkle/SUAppcast.h @@ -10,11 +10,14 @@ #define SUAPPCAST_H @class SUAppcastItem; -@interface SUAppcast : NSObject { +@interface SUAppcast : NSObject +{ +@private NSArray *items; NSString *userAgentString; id delegate; NSString *downloadFilename; + NSURLDownload *download; } - (void)fetchAppcastFromURL:(NSURL *)url; diff --git a/mozilla/camino/sparkle/SUAppcast.m b/mozilla/camino/sparkle/SUAppcast.m index 7539028d801..fc7aceb37eb 100644 --- a/mozilla/camino/sparkle/SUAppcast.m +++ b/mozilla/camino/sparkle/SUAppcast.m @@ -20,6 +20,7 @@ { [items release]; [userAgentString release]; + [download release]; [super dealloc]; } @@ -34,43 +35,50 @@ if (userAgentString) [request setValue:userAgentString forHTTPHeaderField:@"User-Agent"]; - NSURLDownload *download = [[[NSURLDownload alloc] initWithRequest:request delegate:self] autorelease]; - CFRetain(download); + download = [[NSURLDownload alloc] initWithRequest:request delegate:self]; } -- (void)download:(NSURLDownload *)download decideDestinationWithSuggestedFilename:(NSString *)filename +- (void)download:(NSURLDownload *)aDownload decideDestinationWithSuggestedFilename:(NSString *)filename { - NSString *destinationFilename = [NSTemporaryDirectory() stringByAppendingPathComponent:filename]; - [download setDestination:destinationFilename allowOverwrite:NO]; + NSString* destinationFilename = NSTemporaryDirectory(); + if (destinationFilename) + { + destinationFilename = [destinationFilename stringByAppendingPathComponent:filename]; + [download setDestination:destinationFilename allowOverwrite:NO]; + } } -- (void)download:(NSURLDownload *)download didCreateDestination:(NSString *)path +- (void)download:(NSURLDownload *)aDownload didCreateDestination:(NSString *)path { [downloadFilename release]; downloadFilename = [path copy]; } -- (void)downloadDidFinish:(NSURLDownload *)download -{ - CFRelease(download); - +- (void)downloadDidFinish:(NSURLDownload *)aDownload +{ NSError *error = nil; - NSXMLDocument *document = nil; - if (downloadFilename) - document = [[NSXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:downloadFilename] options:0 error:&error]; + + NSXMLDocument *document = nil; BOOL failed = NO; NSArray *xmlItems = nil; NSMutableArray *appcastItems = [NSMutableArray array]; + if (downloadFilename) { + document = [[[NSXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:downloadFilename] options:0 error:&error] autorelease]; + #if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - [[NSFileManager defaultManager] removeFileAtPath:downloadFilename handler:nil]; + [[NSFileManager defaultManager] removeFileAtPath:downloadFilename handler:nil]; #else - [[NSFileManager defaultManager] removeItemAtPath:downloadFilename error:NULL]; + [[NSFileManager defaultManager] removeItemAtPath:downloadFilename error:nil]; #endif - } - [downloadFilename release]; - downloadFilename = nil; + [downloadFilename release]; + downloadFilename = nil; + } + else + { + failed = YES; + } if (nil == document) { @@ -148,11 +156,10 @@ } NSString *errString; - SUAppcastItem *anItem = [[SUAppcastItem alloc] initWithDictionary:dict failureReason:&errString]; + SUAppcastItem *anItem = [[[SUAppcastItem alloc] initWithDictionary:dict failureReason:&errString] autorelease]; if (anItem) { [appcastItems addObject:anItem]; - [anItem release]; } else { @@ -162,8 +169,6 @@ [dict removeAllObjects]; } } - - [document release]; if ([appcastItems count]) { @@ -182,15 +187,14 @@ } } -- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error +- (void)download:(NSURLDownload *)aDownload didFailWithError:(NSError *)error { - CFRelease(download); if (downloadFilename) { #if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - [[NSFileManager defaultManager] removeFileAtPath:downloadFilename handler:nil]; + [[NSFileManager defaultManager] removeFileAtPath:downloadFilename handler:nil]; #else - [[NSFileManager defaultManager] removeItemAtPath:downloadFilename error:NULL]; + [[NSFileManager defaultManager] removeItemAtPath:downloadFilename error:nil]; #endif } [downloadFilename release]; @@ -199,7 +203,7 @@ [self reportError:error]; } -- (NSURLRequest *)download:(NSURLDownload *)download willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse +- (NSURLRequest *)download:(NSURLDownload *)aDownload willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse { return request; } @@ -224,11 +228,11 @@ NSXMLElement *node; NSMutableArray *languages = [NSMutableArray array]; NSString *lang; - NSInteger i; + NSUInteger i; while ((node = [nodeEnum nextObject])) { lang = [[node attributeForName:@"xml:lang"] stringValue]; - [languages addObject:(lang ?: @"")]; + [languages addObject:(lang ? lang : @"")]; } lang = [[NSBundle preferredLocalizationsFromArray:languages] objectAtIndex:0]; i = [languages indexOfObject:([languages containsObject:lang] ? lang : @"")]; diff --git a/mozilla/camino/sparkle/SUAppcastItem.h b/mozilla/camino/sparkle/SUAppcastItem.h index 010c892ae42..f3e017630f1 100644 --- a/mozilla/camino/sparkle/SUAppcastItem.h +++ b/mozilla/camino/sparkle/SUAppcastItem.h @@ -9,7 +9,9 @@ #ifndef SUAPPCASTITEM_H #define SUAPPCASTITEM_H -@interface SUAppcastItem : NSObject { +@interface SUAppcastItem : NSObject +{ +@private NSString *title; NSDate *date; NSString *itemDescription; diff --git a/mozilla/camino/sparkle/SUAppcastItem.m b/mozilla/camino/sparkle/SUAppcastItem.m index f17ce4935db..ba88d2f5822 100644 --- a/mozilla/camino/sparkle/SUAppcastItem.m +++ b/mozilla/camino/sparkle/SUAppcastItem.m @@ -185,14 +185,14 @@ - (void)dealloc { - [self setTitle:nil]; - [self setDate:nil]; - [self setItemDescription:nil]; - [self setReleaseNotesURL:nil]; - [self setDSASignature:nil]; - [self setFileURL:nil]; - [self setVersionString:nil]; - [self setDisplayVersionString:nil]; + [title release]; + [date release]; + [itemDescription release]; + [releaseNotesURL release]; + [DSASignature release]; + [fileURL release]; + [versionString release]; + [displayVersionString release]; [propertiesDictionary release]; [super dealloc]; } diff --git a/mozilla/camino/sparkle/SUAutomaticUpdateDriver.h b/mozilla/camino/sparkle/SUAutomaticUpdateDriver.h index f63c194ed56..266f6b698d6 100644 --- a/mozilla/camino/sparkle/SUAutomaticUpdateDriver.h +++ b/mozilla/camino/sparkle/SUAutomaticUpdateDriver.h @@ -13,7 +13,9 @@ #import "SUBasicUpdateDriver.h" @class SUAutomaticUpdateAlert; -@interface SUAutomaticUpdateDriver : SUBasicUpdateDriver { +@interface SUAutomaticUpdateDriver : SUBasicUpdateDriver +{ +@private BOOL postponingInstallation, showErrors; SUAutomaticUpdateAlert *alert; } diff --git a/mozilla/camino/sparkle/SUBasicUpdateDriver.m b/mozilla/camino/sparkle/SUBasicUpdateDriver.m index 6f109ea9383..2b0978c3cc6 100644 --- a/mozilla/camino/sparkle/SUBasicUpdateDriver.m +++ b/mozilla/camino/sparkle/SUBasicUpdateDriver.m @@ -34,7 +34,7 @@ [appcast fetchAppcastFromURL:URL]; } -- (id )_versionComparator +- (id )versionComparator { id comparator = nil; @@ -51,7 +51,7 @@ - (BOOL)isItemNewer:(SUAppcastItem *)ui { - return [[self _versionComparator] compareVersion:[host version] toVersion:[ui versionString]] == NSOrderedAscending; + return [[self versionComparator] compareVersion:[host version] toVersion:[ui versionString]] == NSOrderedAscending; } - (BOOL)hostSupportsItem:(SUAppcastItem *)ui @@ -64,7 +64,7 @@ { NSString *skippedVersion = [host objectForUserDefaultsKey:SUSkippedVersionKey]; if (skippedVersion == nil) { return NO; } - return [[self _versionComparator] compareVersion:[ui versionString] toVersion:skippedVersion] != NSOrderedDescending; + return [[self versionComparator] compareVersion:[ui versionString] toVersion:skippedVersion] != NSOrderedDescending; } - (BOOL)itemContainsValidUpdate:(SUAppcastItem *)ui @@ -94,7 +94,7 @@ } updateItem = [item retain]; - CFRelease(ac); // Remember that we're explicitly managing the memory of the appcast. + if (ac) { CFRelease(ac); } // Remember that we're explicitly managing the memory of the appcast. if (updateItem == nil) { [self didNotFindUpdate]; return; } if ([self itemContainsValidUpdate:updateItem]) @@ -105,7 +105,7 @@ - (void)appcast:(SUAppcast *)ac failedToLoadWithError:(NSError *)error { - CFRelease(ac); // Remember that we're explicitly managing the memory of the appcast. + if (ac) { CFRelease(ac); } // Remember that we're explicitly managing the memory of the appcast. [self abortUpdateWithError:error]; } @@ -139,27 +139,31 @@ // We create a temporary directory in /tmp and stick the file there. // Not using a GUID here because hdiutil (for DMGs) for some reason chokes on GUIDs. Too long? I really have no idea. NSString *prefix = [NSString stringWithFormat:@"%@ %@ Update", [host name], [host version]]; - NSString *tempDir = [NSTemporaryDirectory() stringByAppendingPathComponent:prefix]; - int cnt=1; - while ([[NSFileManager defaultManager] fileExistsAtPath:tempDir] && cnt <= 999) + NSString *tempDir = NSTemporaryDirectory(); + if (tempDir) { - tempDir = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@ %d", prefix, cnt++]]; - } + tempDir = [tempDir stringByAppendingPathComponent:prefix]; + unsigned int cnt = 1; + while ([[NSFileManager defaultManager] fileExistsAtPath:tempDir] && cnt <= 999) + { + tempDir = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@ %u", prefix, cnt++]]; + } #if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:tempDir attributes:nil]; + BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:tempDir attributes:nil]; #else - BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:tempDir withIntermediateDirectories:YES attributes:nil error:NULL]; + BOOL success = [[NSFileManager defaultManager] createDirectoryAtPath:tempDir withIntermediateDirectories:YES attributes:nil error:nil]; #endif - if (!success) - { - // Okay, something's really broken with /tmp - [download cancel]; - [self abortUpdateWithError:[NSError errorWithDomain:SUSparkleErrorDomain code:SUTemporaryDirectoryError userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Can't make a temporary directory for the update download at %@.",tempDir] forKey:NSLocalizedDescriptionKey]]]; + if (!success) + { + // Okay, something's really broken with /tmp + [download cancel]; + [self abortUpdateWithError:[NSError errorWithDomain:SUSparkleErrorDomain code:SUTemporaryDirectoryError userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Can't make a temporary directory for the update download at %@.",tempDir] forKey:NSLocalizedDescriptionKey]]]; + } + + downloadPath = [[tempDir stringByAppendingPathComponent:name] retain]; + [download setDestination:downloadPath allowOverwrite:YES]; } - - downloadPath = [[tempDir stringByAppendingPathComponent:name] retain]; - [download setDestination:downloadPath allowOverwrite:YES]; } - (void)downloadDidFinish:(NSURLDownload *)d @@ -226,8 +230,9 @@ { if ([[updater delegate] respondsToSelector:@selector(updater:willInstallUpdate:)]) [[updater delegate] updater:updater willInstallUpdate:updateItem]; + // Copy the relauncher into a temporary directory so we can get to it after the new version's installed. - NSString *relaunchPathToCopy = [[NSBundle bundleForClass:[self class]] pathForResource:@"relaunch" ofType:@""]; + NSString *relaunchPathToCopy = [SPARKLE_BUNDLE pathForResource:@"relaunch" ofType:@""]; NSString *targetPath = [NSTemporaryDirectory() stringByAppendingPathComponent:[relaunchPathToCopy lastPathComponent]]; // Only the paranoid survive: if there's already a stray copy of relaunch there, we would have problems. NSError *error = nil; @@ -235,14 +240,14 @@ [[NSFileManager defaultManager] removeFileAtPath:targetPath handler:nil]; if ([[NSFileManager defaultManager] copyPath:relaunchPathToCopy toPath:targetPath handler:nil]) #else - [[NSFileManager defaultManager] removeItemAtPath:targetPath error:NULL]; + [[NSFileManager defaultManager] removeItemAtPath:targetPath error:nil]; if ([[NSFileManager defaultManager] copyItemAtPath:relaunchPathToCopy toPath:targetPath error:&error]) #endif relaunchPath = [targetPath retain]; else [self abortUpdateWithError:[NSError errorWithDomain:SUSparkleErrorDomain code:SURelaunchError userInfo:[NSDictionary dictionaryWithObjectsAndKeys:SULocalizedString(@"An error occurred while extracting the archive. Please try again later.", nil), NSLocalizedDescriptionKey, [NSString stringWithFormat:@"Couldn't copy relauncher (%@) to temporary path (%@)! %@", relaunchPathToCopy, targetPath, (error ? [error localizedDescription] : @"")], NSLocalizedFailureReasonErrorKey, nil]]]; - [SUInstaller installFromUpdateFolder:[downloadPath stringByDeletingLastPathComponent] overHost:host delegate:self synchronously:[self shouldInstallSynchronously] versionComparator:[self _versionComparator]]; + [SUInstaller installFromUpdateFolder:[downloadPath stringByDeletingLastPathComponent] overHost:host delegate:self synchronously:[self shouldInstallSynchronously] versionComparator:[self versionComparator]]; } - (void)installerFinishedForHost:(SUHost *)aHost @@ -283,7 +288,8 @@ if ([[updater delegate] respondsToSelector:@selector(pathToRelaunchForUpdater:)]) pathToRelaunch = [[updater delegate] pathToRelaunchForUpdater:updater]; [NSTask launchedTaskWithLaunchPath:relaunchPath arguments:[NSArray arrayWithObjects:pathToRelaunch, [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]], nil]]; - + + [self setValue:[NSNumber numberWithBool:YES] forKey:@"finished"]; [NSApp terminate:self]; } @@ -292,7 +298,7 @@ #if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 [[NSFileManager defaultManager] removeFileAtPath:[downloadPath stringByDeletingLastPathComponent] handler:nil]; #else - [[NSFileManager defaultManager] removeItemAtPath:[downloadPath stringByDeletingLastPathComponent] error:NULL]; + [[NSFileManager defaultManager] removeItemAtPath:[downloadPath stringByDeletingLastPathComponent] error:nil]; #endif } diff --git a/mozilla/camino/sparkle/SUConstants.h b/mozilla/camino/sparkle/SUConstants.h index e9d8e9586f5..4a807d3842a 100644 --- a/mozilla/camino/sparkle/SUConstants.h +++ b/mozilla/camino/sparkle/SUConstants.h @@ -11,26 +11,26 @@ #define SUCONSTANTS_H -extern NSString *SUUpdaterWillRestartNotification; -extern NSString *SUTechnicalErrorInformationKey; +extern NSString *const SUUpdaterWillRestartNotification; +extern NSString *const SUTechnicalErrorInformationKey; -extern NSString *SUFeedURLKey; -extern NSString *SUHasLaunchedBeforeKey; -extern NSString *SUShowReleaseNotesKey; -extern NSString *SUSkippedVersionKey; -extern NSString *SUScheduledCheckIntervalKey; -extern NSString *SULastCheckTimeKey; -extern NSString *SUPublicDSAKeyKey; -extern NSString *SUPublicDSAKeyFileKey; -extern NSString *SUAutomaticallyUpdateKey; -extern NSString *SUAllowsAutomaticUpdatesKey; -extern NSString *SUEnableAutomaticChecksKey; -extern NSString *SUEnableAutomaticChecksKeyOld; -extern NSString *SUEnableSystemProfilingKey; -extern NSString *SUSendProfileInfoKey; -extern NSString *SULastProfileSubmitDateKey; +extern NSString *const SUFeedURLKey; +extern NSString *const SUHasLaunchedBeforeKey; +extern NSString *const SUShowReleaseNotesKey; +extern NSString *const SUSkippedVersionKey; +extern NSString *const SUScheduledCheckIntervalKey; +extern NSString *const SULastCheckTimeKey; +extern NSString *const SUPublicDSAKeyKey; +extern NSString *const SUPublicDSAKeyFileKey; +extern NSString *const SUAutomaticallyUpdateKey; +extern NSString *const SUAllowsAutomaticUpdatesKey; +extern NSString *const SUEnableAutomaticChecksKey; +extern NSString *const SUEnableAutomaticChecksKeyOld; +extern NSString *const SUEnableSystemProfilingKey; +extern NSString *const SUSendProfileInfoKey; +extern NSString *const SULastProfileSubmitDateKey; -extern NSString *SUSparkleErrorDomain; +extern NSString *const SUSparkleErrorDomain; // Appcast phase errors. extern OSStatus SUAppcastParseError; extern OSStatus SUNoUpdateError; diff --git a/mozilla/camino/sparkle/SUConstants.m b/mozilla/camino/sparkle/SUConstants.m index ae91584f26f..5f06311fed8 100644 --- a/mozilla/camino/sparkle/SUConstants.m +++ b/mozilla/camino/sparkle/SUConstants.m @@ -9,27 +9,27 @@ #import "Sparkle.h" #import "SUConstants.h" -NSString *SUUpdaterWillRestartNotification = @"SUUpdaterWillRestartNotificationName"; -NSString *SUTechnicalErrorInformationKey = @"SUTechnicalErrorInformation"; +NSString *const SUUpdaterWillRestartNotification = @"SUUpdaterWillRestartNotificationName"; +NSString *const SUTechnicalErrorInformationKey = @"SUTechnicalErrorInformation"; -NSString *SUHasLaunchedBeforeKey = @"SUHasLaunchedBefore"; -NSString *SUFeedURLKey = @"SUFeedURL"; -NSString *SUShowReleaseNotesKey = @"SUShowReleaseNotes"; -NSString *SUSkippedVersionKey = @"SUSkippedVersion"; -NSString *SUScheduledCheckIntervalKey = @"SUScheduledCheckInterval"; -NSString *SULastCheckTimeKey = @"SULastCheckTime"; -NSString *SUExpectsDSASignatureKey = @"SUExpectsDSASignature"; -NSString *SUPublicDSAKeyKey = @"SUPublicDSAKey"; -NSString *SUPublicDSAKeyFileKey = @"SUPublicDSAKeyFile"; -NSString *SUAutomaticallyUpdateKey = @"SUAutomaticallyUpdate"; -NSString *SUAllowsAutomaticUpdatesKey = @"SUAllowsAutomaticUpdates"; -NSString *SUEnableSystemProfilingKey = @"SUEnableSystemProfiling"; -NSString *SUEnableAutomaticChecksKey = @"SUEnableAutomaticChecks"; -NSString *SUEnableAutomaticChecksKeyOld = @"SUCheckAtStartup"; -NSString *SUSendProfileInfoKey = @"SUSendProfileInfo"; -NSString *SULastProfileSubmitDateKey = @"SULastProfileSubmissionDate"; +NSString *const SUHasLaunchedBeforeKey = @"SUHasLaunchedBefore"; +NSString *const SUFeedURLKey = @"SUFeedURL"; +NSString *const SUShowReleaseNotesKey = @"SUShowReleaseNotes"; +NSString *const SUSkippedVersionKey = @"SUSkippedVersion"; +NSString *const SUScheduledCheckIntervalKey = @"SUScheduledCheckInterval"; +NSString *const SULastCheckTimeKey = @"SULastCheckTime"; +NSString *const SUExpectsDSASignatureKey = @"SUExpectsDSASignature"; +NSString *const SUPublicDSAKeyKey = @"SUPublicDSAKey"; +NSString *const SUPublicDSAKeyFileKey = @"SUPublicDSAKeyFile"; +NSString *const SUAutomaticallyUpdateKey = @"SUAutomaticallyUpdate"; +NSString *const SUAllowsAutomaticUpdatesKey = @"SUAllowsAutomaticUpdates"; +NSString *const SUEnableSystemProfilingKey = @"SUEnableSystemProfiling"; +NSString *const SUEnableAutomaticChecksKey = @"SUEnableAutomaticChecks"; +NSString *const SUEnableAutomaticChecksKeyOld = @"SUCheckAtStartup"; +NSString *const SUSendProfileInfoKey = @"SUSendProfileInfo"; +NSString *const SULastProfileSubmitDateKey = @"SULastProfileSubmissionDate"; -NSString *SUSparkleErrorDomain = @"SUSparkleErrorDomain"; +NSString *const SUSparkleErrorDomain = @"SUSparkleErrorDomain"; OSStatus SUAppcastParseError = 1000; OSStatus SUNoUpdateError = 1001; OSStatus SUAppcastError = 1002; diff --git a/mozilla/camino/sparkle/SUDSAVerifier.m b/mozilla/camino/sparkle/SUDSAVerifier.m index e9ee03e582b..d827ac7d646 100644 --- a/mozilla/camino/sparkle/SUDSAVerifier.m +++ b/mozilla/camino/sparkle/SUDSAVerifier.m @@ -17,7 +17,7 @@ #import #import -long b64decode(unsigned char* str) +static long b64decode(unsigned char* str) { unsigned char *cur, *start; int d, dlast, phase; @@ -41,12 +41,12 @@ long b64decode(unsigned char* str) -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1 /* F0-FF */ }; - d = dlast = phase = 0; + dlast = phase = 0; start = str; for (cur = str; *cur != '\0'; ++cur ) { if(*cur == '\n' || *cur == '\r'){phase = dlast = 0; continue;} - d = table[(int)*cur]; + d = table[(unsigned int)*cur]; if(d != -1) { switch(phase) @@ -77,26 +77,30 @@ long b64decode(unsigned char* str) return str - start; } -EVP_PKEY* load_dsa_key(char *key) +static EVP_PKEY* load_dsa_key(char *key) { EVP_PKEY* pkey = NULL; - BIO *bio; - if((bio = BIO_new_mem_buf(key, (int)strlen(key)))) + size_t keylen = strlen(key); + if (keylen <= INT_MAX) { - DSA* dsa_key = 0; - if(PEM_read_bio_DSA_PUBKEY(bio, &dsa_key, NULL, NULL)) + BIO *bio; + if((bio = BIO_new_mem_buf(key, (int)keylen))) { - if((pkey = EVP_PKEY_new())) + DSA* dsa_key = 0; + if(PEM_read_bio_DSA_PUBKEY(bio, &dsa_key, NULL, NULL)) { - if(EVP_PKEY_assign_DSA(pkey, dsa_key) != 1) + if((pkey = EVP_PKEY_new())) { - DSA_free(dsa_key); - EVP_PKEY_free(pkey); - pkey = NULL; + if(EVP_PKEY_assign_DSA(pkey, dsa_key) != 1) + { + DSA_free(dsa_key); + EVP_PKEY_free(pkey); + pkey = NULL; + } } } + BIO_free(bio); } - BIO_free(bio); } return pkey; } @@ -119,12 +123,15 @@ EVP_PKEY* load_dsa_key(char *key) } pkeyString = [pkeyTrimmedLines componentsJoinedByString:@"\n"]; // Put them back together. + NSMutableData* pkeyData = [[[pkeyString dataUsingEncoding:NSUTF8StringEncoding] mutableCopy] autorelease]; + void *pkeyBytes = [pkeyData mutableBytes]; EVP_PKEY* pkey = NULL; - pkey = load_dsa_key((char *)[pkeyString UTF8String]); + pkey = load_dsa_key(pkeyBytes); if (!pkey) { return NO; } // Now, the signature is in base64; we have to decode it into a binary stream. - unsigned char *signature = (unsigned char *)[encodedSignature UTF8String]; + NSMutableData* signatureData = [[[encodedSignature dataUsingEncoding:NSUTF8StringEncoding] mutableCopy] autorelease]; + void *signature = [signatureData mutableBytes]; long length = b64decode(signature); // Decode the signature in-place and get the new length of the signature string. // We've got the signature, now get the file data. @@ -140,10 +147,17 @@ EVP_PKEY* load_dsa_key(char *key) if(EVP_VerifyInit(&ctx, EVP_dss1()) == 1) // We're using DSA keys. { EVP_VerifyUpdate(&ctx, md, SHA_DIGEST_LENGTH); + if ((length < 0) || (length > 0x7FFFFFFF)) { return NO; } // test before cast below result = (EVP_VerifyFinal(&ctx, signature, (unsigned int)length, pkey) == 1); } EVP_PKEY_free(pkey); + + // Prevent these from being collected earlier than we want (our only reference is an inner pointer). + [pkeyData self]; + [signatureData self]; + [pathData self]; + return result; } diff --git a/mozilla/camino/sparkle/SUDiskImageUnarchiver.m b/mozilla/camino/sparkle/SUDiskImageUnarchiver.m index a7c5f633cd3..2f4706fb9d8 100644 --- a/mozilla/camino/sparkle/SUDiskImageUnarchiver.m +++ b/mozilla/camino/sparkle/SUDiskImageUnarchiver.m @@ -13,17 +13,12 @@ @implementation SUDiskImageUnarchiver -+ (BOOL)_canUnarchivePath:(NSString *)path ++ (BOOL)canUnarchivePath:(NSString *)path { return [[path pathExtension] isEqualToString:@"dmg"]; } -- (void)start -{ - [NSThread detachNewThreadSelector:@selector(_extractDMG) toTarget:self withObject:nil]; -} - -- (void)_extractDMG +- (void)extractDMG { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; BOOL mountedSuccessfully = NO; @@ -35,14 +30,16 @@ do { CFUUIDRef uuid = CFUUIDCreate(NULL); - mountPointName = (NSString *)CFUUIDCreateString(NULL, uuid); - CFRelease(uuid); -#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_4 - [NSMakeCollectable((CFStringRef)mountPointName) autorelease]; -#else - [mountPointName autorelease]; -#endif - mountPoint = [@"/Volumes" stringByAppendingPathComponent:mountPointName]; + if (uuid) + { + CFStringRef uuidString = CFUUIDCreateString(NULL, uuid); + if (uuidString) + { + mountPoint = [@"/Volumes" stringByAppendingPathComponent:(NSString*)uuidString]; + CFRelease(uuidString); + } + CFRelease(uuid); + } } while (noErr == FSPathMakeRefWithOptions((UInt8 *)[mountPoint fileSystemRepresentation], kFSPathMakeRefDoNotFollowLeafSymlink, &tmpRef, NULL)); @@ -57,7 +54,7 @@ // Now that we've mounted it, we need to copy out its contents. FSRef srcRef, dstRef; - OSErr err; + OSStatus err; err = FSPathMakeRef((UInt8 *)[mountPoint fileSystemRepresentation], &srcRef, NULL); if (err != noErr) goto reportError; err = FSPathMakeRef((UInt8 *)[[archivePath stringByDeletingLastPathComponent] fileSystemRepresentation], &dstRef, NULL); @@ -66,11 +63,11 @@ err = FSCopyObjectSync(&srcRef, &dstRef, (CFStringRef)mountPointName, NULL, kFSFileOperationSkipSourcePermissionErrors); if (err != noErr) goto reportError; - [self performSelectorOnMainThread:@selector(_notifyDelegateOfSuccess) withObject:nil waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(notifyDelegateOfSuccess) withObject:nil waitUntilDone:NO]; goto finally; reportError: - [self performSelectorOnMainThread:@selector(_notifyDelegateOfFailure) withObject:nil waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(notifyDelegateOfFailure) withObject:nil waitUntilDone:NO]; finally: if (mountedSuccessfully) @@ -78,9 +75,14 @@ finally: [pool drain]; } +- (void)start +{ + [NSThread detachNewThreadSelector:@selector(extractDMG) toTarget:self withObject:nil]; +} + + (void)load { - [self _registerImplementation:self]; + [self registerImplementation:self]; } @end diff --git a/mozilla/camino/sparkle/SUHost.h b/mozilla/camino/sparkle/SUHost.h index f8f8203fc42..c43b4041652 100644 --- a/mozilla/camino/sparkle/SUHost.h +++ b/mozilla/camino/sparkle/SUHost.h @@ -9,6 +9,7 @@ @interface SUHost : NSObject { +@private NSBundle *bundle; } diff --git a/mozilla/camino/sparkle/SUHost.m b/mozilla/camino/sparkle/SUHost.m index df1305c8ca0..fb4ce41244e 100644 --- a/mozilla/camino/sparkle/SUHost.m +++ b/mozilla/camino/sparkle/SUHost.m @@ -14,9 +14,9 @@ - (id)initWithBundle:(NSBundle *)aBundle { - if (aBundle == nil) aBundle = [NSBundle mainBundle]; if ((self = [super init])) { + if (aBundle == nil) aBundle = [NSBundle mainBundle]; bundle = [aBundle retain]; if (![bundle bundleIdentifier]) NSLog(@"Sparkle Error: the bundle being updated at %@ has no CFBundleIdentifier! This will cause preference read/write to not work properly.", bundle); @@ -83,7 +83,17 @@ iconPath = [bundle pathForResource:[bundle objectForInfoDictionaryKey:@"CFBundleIconFile"] ofType: nil]; NSImage *icon = [[[NSImage alloc] initWithContentsOfFile:iconPath] autorelease]; // Use a default icon if none is defined. - if (!icon) { icon = [[NSWorkspace sharedWorkspace] iconForFileType:NSFileTypeForHFSTypeCode(bundle == [NSBundle mainBundle] ? kGenericApplicationIcon : UTGetOSTypeFromString(CFSTR("BNDL")))]; } + if (!icon) { + BOOL isMainBundle = (bundle == [NSBundle mainBundle]); + + // Starting with 10.6, iconForFileType: accepts a UTI. + NSString *fileType = nil; + if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_5) + fileType = isMainBundle ? NSFileTypeForHFSTypeCode(kGenericApplicationIcon) : @".bundle"; + else + fileType = isMainBundle ? (NSString*)kUTTypeApplication : (NSString*)kUTTypeBundle; + icon = [[NSWorkspace sharedWorkspace] iconForFileType:fileType]; + } return icon; } @@ -98,8 +108,8 @@ { ProcessSerialNumber PSN; GetCurrentProcess(&PSN); - NSDictionary * processInfo = (NSDictionary *)ProcessInformationCopyDictionary(&PSN, kProcessDictionaryIncludeAllInformationMask); - BOOL isElement = [[processInfo objectForKey:@"LSUIElement"] boolValue]; + CFDictionaryRef processInfo = ProcessInformationCopyDictionary(&PSN, kProcessDictionaryIncludeAllInformationMask); + BOOL isElement = [[(NSDictionary *)processInfo objectForKey:@"LSUIElement"] boolValue]; if (processInfo) CFRelease(processInfo); return isElement; @@ -114,7 +124,7 @@ // More likely, we've got a reference to a Resources file by filename: NSString *keyFilename = [self objectForInfoDictionaryKey:SUPublicDSAKeyFileKey]; if (!keyFilename) { return nil; } - NSError *ignoreErr; + NSError *ignoreErr = nil; return [NSString stringWithContentsOfFile:[bundle pathForResource:keyFilename ofType:nil] encoding:NSASCIIStringEncoding error: &ignoreErr]; } @@ -135,18 +145,14 @@ - (id)objectForUserDefaultsKey:(NSString *)defaultName { - // Under Tiger, CFPreferencesCopyAppValue doesn't get values from NSRegistratioDomain, so anything + // Under Tiger, CFPreferencesCopyAppValue doesn't get values from NSRegistrationDomain, so anything // passed into -[NSUserDefaults registerDefaults:] is ignored. The following line falls // back to using NSUserDefaults, but only if the host bundle is the main bundle. if (bundle == [NSBundle mainBundle]) return [[NSUserDefaults standardUserDefaults] objectForKey:defaultName]; CFPropertyListRef obj = CFPreferencesCopyAppValue((CFStringRef)defaultName, (CFStringRef)[bundle bundleIdentifier]); -#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_4 - return [NSMakeCollectable(obj) autorelease]; -#else - return [(id)obj autorelease]; -#endif + return [(id)CFMakeCollectable(obj) autorelease]; } - (void)setObject:(id)value forUserDefaultsKey:(NSString *)defaultName; @@ -195,7 +201,7 @@ } - (id)objectForKey:(NSString *)key { - return [self objectForUserDefaultsKey:key] ?: [self objectForInfoDictionaryKey:key]; + return [self objectForUserDefaultsKey:key] ? [self objectForUserDefaultsKey:key] : [self objectForInfoDictionaryKey:key]; } - (BOOL)boolForKey:(NSString *)key { diff --git a/mozilla/camino/sparkle/SUInstaller.h b/mozilla/camino/sparkle/SUInstaller.h index 6f12aefd666..9ef2f1e1515 100644 --- a/mozilla/camino/sparkle/SUInstaller.h +++ b/mozilla/camino/sparkle/SUInstaller.h @@ -15,7 +15,7 @@ @class SUHost; @interface SUInstaller : NSObject { } + (void)installFromUpdateFolder:(NSString *)updateFolder overHost:(SUHost *)host delegate:delegate synchronously:(BOOL)synchronously versionComparator:(id )comparator; -+ (void)_finishInstallationWithResult:(BOOL)result host:(SUHost *)host error:(NSError *)error delegate:delegate; ++ (void)finishInstallationWithResult:(BOOL)result host:(SUHost *)host error:(NSError *)error delegate:delegate; @end @interface NSObject (SUInstallerDelegateInformalProtocol) diff --git a/mozilla/camino/sparkle/SUInstaller.m b/mozilla/camino/sparkle/SUInstaller.m index 870663c4936..4601d8acb26 100644 --- a/mozilla/camino/sparkle/SUInstaller.m +++ b/mozilla/camino/sparkle/SUInstaller.m @@ -13,7 +13,7 @@ @implementation SUInstaller -+ (BOOL)_isAliasFolderAtPath:(NSString *)path ++ (BOOL)isAliasFolderAtPath:(NSString *)path { FSRef fileRef; OSStatus err = noErr; @@ -78,7 +78,7 @@ } // Some DMGs have symlinks into /Applications! That's no good! - if ([self _isAliasFolderAtPath:currentPath]) + if ([self isAliasFolderAtPath:currentPath]) [dirEnum skipDescendents]; } @@ -92,7 +92,7 @@ if (newAppDownloadPath == nil) { - [self _finishInstallationWithResult:NO host:host error:[NSError errorWithDomain:SUSparkleErrorDomain code:SUMissingUpdateError userInfo:[NSDictionary dictionaryWithObject:@"Couldn't find an appropriate update in the downloaded package." forKey:NSLocalizedDescriptionKey]] delegate:delegate]; + [self finishInstallationWithResult:NO host:host error:[NSError errorWithDomain:SUSparkleErrorDomain code:SUMissingUpdateError userInfo:[NSDictionary dictionaryWithObject:@"Couldn't find an appropriate update in the downloaded package." forKey:NSLocalizedDescriptionKey]] delegate:delegate]; } else { @@ -100,7 +100,7 @@ } } -+ (void)_mdimportHost:(SUHost *)host ++ (void)mdimportHost:(SUHost *)host { NSTask *mdimport = [[[NSTask alloc] init] autorelease]; [mdimport setLaunchPath:@"/usr/bin/mdimport"]; @@ -116,11 +116,11 @@ } } -+ (void)_finishInstallationWithResult:(BOOL)result host:(SUHost *)host error:(NSError *)error delegate:delegate ++ (void)finishInstallationWithResult:(BOOL)result host:(SUHost *)host error:(NSError *)error delegate:delegate { - if (result == YES) + if (result) { - [self _mdimportHost:host]; + [self mdimportHost:host]; if ([delegate respondsToSelector:@selector(installerFinishedForHost:)]) [delegate installerFinishedForHost:host]; } diff --git a/mozilla/camino/sparkle/SUPackageInstaller.m b/mozilla/camino/sparkle/SUPackageInstaller.m index d1e90d02eaf..df6635ab4a0 100644 --- a/mozilla/camino/sparkle/SUPackageInstaller.m +++ b/mozilla/camino/sparkle/SUPackageInstaller.m @@ -8,10 +8,6 @@ #import "SUPackageInstaller.h" -#ifndef NSAppKitVersionNumber10_4 -#define NSAppKitVersionNumber10_4 824 -#endif - NSString *SUPackageInstallerCommandKey = @"SUPackageInstallerCommand"; NSString *SUPackageInstallerArgumentsKey = @"SUPackageInstallerArguments"; NSString *SUPackageInstallerHostKey = @"SUPackageInstallerHost"; @@ -19,12 +15,12 @@ NSString *SUPackageInstallerDelegateKey = @"SUPackageInstallerDelegate"; @implementation SUPackageInstaller -+ (void)_finishInstallationWithInfo:(NSDictionary *)info ++ (void)finishInstallationWithInfo:(NSDictionary *)info { - [self _finishInstallationWithResult:YES host:[info objectForKey:SUPackageInstallerHostKey] error:nil delegate:[info objectForKey:SUPackageInstallerDelegateKey]]; + [self finishInstallationWithResult:YES host:[info objectForKey:SUPackageInstallerHostKey] error:nil delegate:[info objectForKey:SUPackageInstallerDelegateKey]]; } -+ (void)_performInstallationWithInfo:(NSDictionary *)info ++ (void)performInstallationWithInfo:(NSDictionary *)info { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -32,7 +28,7 @@ NSString *SUPackageInstallerDelegateKey = @"SUPackageInstallerDelegate"; [installer waitUntilExit]; // Known bug: if the installation fails or is canceled, Sparkle goes ahead and restarts, thinking everything is fine. - [self performSelectorOnMainThread:@selector(_finishInstallationWithInfo:) withObject:info waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(finishInstallationWithInfo:) withObject:info waitUntilDone:NO]; [pool drain]; } @@ -58,15 +54,15 @@ NSString *SUPackageInstallerDelegateKey = @"SUPackageInstallerDelegate"; if (![[NSFileManager defaultManager] fileExistsAtPath:command]) { NSError *error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUMissingInstallerToolError userInfo:[NSDictionary dictionaryWithObject:@"Couldn't find Apple's installer tool!" forKey:NSLocalizedDescriptionKey]]; - [self _finishInstallationWithResult:NO host:host error:error delegate:delegate]; + [self finishInstallationWithResult:NO host:host error:error delegate:delegate]; } else { NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:command, SUPackageInstallerCommandKey, args, SUPackageInstallerArgumentsKey, host, SUPackageInstallerHostKey, delegate, SUPackageInstallerDelegateKey, nil]; if (synchronously) - [self _performInstallationWithInfo:info]; + [self performInstallationWithInfo:info]; else - [NSThread detachNewThreadSelector:@selector(_performInstallationWithInfo:) toTarget:self withObject:info]; + [NSThread detachNewThreadSelector:@selector(performInstallationWithInfo:) toTarget:self withObject:info]; } } diff --git a/mozilla/camino/sparkle/SUPipedUnarchiver.m b/mozilla/camino/sparkle/SUPipedUnarchiver.m index db7ffc99ab4..27853d89604 100644 --- a/mozilla/camino/sparkle/SUPipedUnarchiver.m +++ b/mozilla/camino/sparkle/SUPipedUnarchiver.m @@ -11,13 +11,13 @@ @implementation SUPipedUnarchiver -+ (SEL)_selectorConformingToTypeOfPath:(NSString *)path ++ (SEL)selectorConformingToTypeOfPath:(NSString *)path { static NSDictionary *typeSelectorDictionary; if (!typeSelectorDictionary) - typeSelectorDictionary = [[NSDictionary dictionaryWithObjectsAndKeys:@"_extractZIP", @".zip", @"_extractTAR", @".tar", - @"_extractTGZ", @".tar.gz", @"_extractTGZ", @".tgz", - @"_extractTBZ", @".tar.bz2", @"_extractTBZ", @".tbz", nil] retain]; + typeSelectorDictionary = [[NSDictionary dictionaryWithObjectsAndKeys:@"extractZIP", @".zip", @"extractTAR", @".tar", + @"extractTGZ", @".tar.gz", @"extractTGZ", @".tgz", + @"extractTBZ", @".tar.bz2", @"extractTBZ", @".tbz", nil] retain]; NSString *lastPathComponent = [path lastPathComponent]; NSEnumerator *typeEnumerator = [typeSelectorDictionary keyEnumerator]; @@ -33,25 +33,25 @@ - (void)start { - [NSThread detachNewThreadSelector:[[self class] _selectorConformingToTypeOfPath:archivePath] toTarget:self withObject:nil]; + [NSThread detachNewThreadSelector:[[self class] selectorConformingToTypeOfPath:archivePath] toTarget:self withObject:nil]; } -+ (BOOL)_canUnarchivePath:(NSString *)path ++ (BOOL)canUnarchivePath:(NSString *)path { - return ([self _selectorConformingToTypeOfPath:path] != nil); + return ([self selectorConformingToTypeOfPath:path] != nil); } // This method abstracts the types that use a command line tool piping data from stdin. -- (void)_extractArchivePipingDataToCommand:(NSString *)command +- (void)extractArchivePipingDataToCommand:(NSString *)command { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; FILE *fp = NULL, *cmdFP = NULL; // Get the file size. #if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - NSNumber *fs = [[[NSFileManager defaultManager] fileAttributesAtPath:archivePath traverseLink:NO] objectForKey:NSFileSize]; + NSNumber *fs = [[[NSFileManager defaultManager] fileAttributesAtPath:archivePath traverseLink:NO] objectForKey:NSFileSize]; #else - NSNumber *fs = [[[NSFileManager defaultManager] attributesOfItemAtPath:archivePath error:NULL] objectForKey:NSFileSize]; + NSNumber *fs = [[[NSFileManager defaultManager] attributesOfItemAtPath:archivePath error:nil] objectForKey:NSFileSize]; #endif if (fs == nil) goto reportError; @@ -62,11 +62,11 @@ setenv("DESTINATION", [[archivePath stringByDeletingLastPathComponent] fileSystemRepresentation], 1); cmdFP = popen([command fileSystemRepresentation], "w"); - long written; + size_t written; if (!cmdFP) goto reportError; char buf[32*1024]; - long len; + size_t len; while((len = fread(buf, 1, 32*1024, fp))) { written = fwrite(buf, 1, len, cmdFP); @@ -76,18 +76,18 @@ goto reportError; } - [self performSelectorOnMainThread:@selector(_notifyDelegateOfExtractedLength:) withObject:[NSNumber numberWithLong:len] waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(notifyDelegateOfExtractedLength:) withObject:[NSNumber numberWithUnsignedLong:len] waitUntilDone:NO]; } pclose(cmdFP); if( ferror( fp ) ) goto reportError; - [self performSelectorOnMainThread:@selector(_notifyDelegateOfSuccess) withObject:nil waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(notifyDelegateOfSuccess) withObject:nil waitUntilDone:NO]; goto finally; reportError: - [self performSelectorOnMainThread:@selector(_notifyDelegateOfFailure) withObject:nil waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(notifyDelegateOfFailure) withObject:nil waitUntilDone:NO]; finally: if (fp) @@ -95,29 +95,29 @@ finally: [pool drain]; } -- (void)_extractTAR +- (void)extractTAR { - return [self _extractArchivePipingDataToCommand:@"tar -xC \"$DESTINATION\""]; + return [self extractArchivePipingDataToCommand:@"tar -xC \"$DESTINATION\""]; } -- (void)_extractTGZ +- (void)extractTGZ { - return [self _extractArchivePipingDataToCommand:@"tar -zxC \"$DESTINATION\""]; + return [self extractArchivePipingDataToCommand:@"tar -zxC \"$DESTINATION\""]; } -- (void)_extractTBZ +- (void)extractTBZ { - return [self _extractArchivePipingDataToCommand:@"tar -jxC \"$DESTINATION\""]; + return [self extractArchivePipingDataToCommand:@"tar -jxC \"$DESTINATION\""]; } -- (void)_extractZIP +- (void)extractZIP { - return [self _extractArchivePipingDataToCommand:@"ditto -x -k - \"$DESTINATION\""]; + return [self extractArchivePipingDataToCommand:@"ditto -x -k - \"$DESTINATION\""]; } + (void)load { - [self _registerImplementation:self]; + [self registerImplementation:self]; } @end diff --git a/mozilla/camino/sparkle/SUPlainInstaller.m b/mozilla/camino/sparkle/SUPlainInstaller.m index 2586adddd01..ffb0cb6de73 100644 --- a/mozilla/camino/sparkle/SUPlainInstaller.m +++ b/mozilla/camino/sparkle/SUPlainInstaller.m @@ -8,23 +8,24 @@ #import "SUPlainInstaller.h" #import "SUPlainInstallerInternals.h" +#import "SUHost.h" -NSString *SUInstallerPathKey = @"SUInstallerPath"; -NSString *SUInstallerTargetPathKey = @"SUInstallerTargetPath"; -NSString *SUInstallerTempNameKey = @"SUInstallerTempName"; -NSString *SUInstallerHostKey = @"SUInstallerHost"; -NSString *SUInstallerDelegateKey = @"SUInstallerDelegate"; -NSString *SUInstallerResultKey = @"SUInstallerResult"; -NSString *SUInstallerErrorKey = @"SUInstallerError"; +static NSString * const SUInstallerPathKey = @"SUInstallerPath"; +static NSString * const SUInstallerTargetPathKey = @"SUInstallerTargetPath"; +static NSString * const SUInstallerTempNameKey = @"SUInstallerTempName"; +static NSString * const SUInstallerHostKey = @"SUInstallerHost"; +static NSString * const SUInstallerDelegateKey = @"SUInstallerDelegate"; +static NSString * const SUInstallerResultKey = @"SUInstallerResult"; +static NSString * const SUInstallerErrorKey = @"SUInstallerError"; @implementation SUPlainInstaller -+ (void)_finishInstallationWithInfo:(NSDictionary *)info ++ (void)finishInstallationWithInfo:(NSDictionary *)info { - [self _finishInstallationWithResult:[[info objectForKey:SUInstallerResultKey] boolValue] host:[info objectForKey:SUInstallerHostKey] error:[info objectForKey:SUInstallerErrorKey] delegate:[info objectForKey:SUInstallerDelegateKey]]; + [self finishInstallationWithResult:[[info objectForKey:SUInstallerResultKey] boolValue] host:[info objectForKey:SUInstallerHostKey] error:[info objectForKey:SUInstallerErrorKey] delegate:[info objectForKey:SUInstallerDelegateKey]]; } -+ (void)_performInstallationWithInfo:(NSDictionary *)info ++ (void)performInstallationWithInfo:(NSDictionary *)info { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; @@ -36,7 +37,7 @@ NSString *SUInstallerErrorKey = @"SUInstallerError"; [mutableInfo setObject:[NSNumber numberWithBool:result] forKey:SUInstallerResultKey]; if (!result && error) [mutableInfo setObject:error forKey:SUInstallerErrorKey]; - [self performSelectorOnMainThread:@selector(_finishInstallationWithInfo:) withObject:mutableInfo waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(finishInstallationWithInfo:) withObject:mutableInfo waitUntilDone:NO]; [pool drain]; } @@ -48,7 +49,7 @@ NSString *SUInstallerErrorKey = @"SUInstallerError"; { NSString * errorMessage = [NSString stringWithFormat:@"Sparkle Updater: Possible attack in progress! Attempting to \"upgrade\" from %@ to %@. Aborting update.", [host version], [[NSBundle bundleWithPath:path] objectForInfoDictionaryKey:@"CFBundleVersion"]]; NSError *error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUDowngradeError userInfo:[NSDictionary dictionaryWithObject:errorMessage forKey:NSLocalizedDescriptionKey]]; - [self _finishInstallationWithResult:NO host:host error:error delegate:delegate]; + [self finishInstallationWithResult:NO host:host error:error delegate:delegate]; return; } @@ -56,9 +57,9 @@ NSString *SUInstallerErrorKey = @"SUInstallerError"; NSString *tempName = [self temporaryNameForPath:targetPath]; NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:path, SUInstallerPathKey, targetPath, SUInstallerTargetPathKey, tempName, SUInstallerTempNameKey, host, SUInstallerHostKey, delegate, SUInstallerDelegateKey, nil]; if (synchronously) - [self _performInstallationWithInfo:info]; + [self performInstallationWithInfo:info]; else - [NSThread detachNewThreadSelector:@selector(_performInstallationWithInfo:) toTarget:self withObject:info]; + [NSThread detachNewThreadSelector:@selector(performInstallationWithInfo:) toTarget:self withObject:info]; } @end diff --git a/mozilla/camino/sparkle/SUPlainInstallerInternals.m b/mozilla/camino/sparkle/SUPlainInstallerInternals.m index 719089b616b..77191262620 100644 --- a/mozilla/camino/sparkle/SUPlainInstallerInternals.m +++ b/mozilla/camino/sparkle/SUPlainInstallerInternals.m @@ -79,13 +79,13 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza NSString *prefix = [[path stringByDeletingPathExtension] stringByAppendingFormat:@" (%@)", postFix]; NSString *tempDir = [prefix stringByAppendingPathExtension:[path pathExtension]]; // Now let's make sure we get a unique path. - int cnt=2; + unsigned int cnt=2; while ([[NSFileManager defaultManager] fileExistsAtPath:tempDir] && cnt <= 999) - tempDir = [NSString stringWithFormat:@"%@ %d.%@", prefix, cnt++, [path pathExtension]]; + tempDir = [NSString stringWithFormat:@"%@ %u.%@", prefix, cnt++, [path pathExtension]]; return [tempDir lastPathComponent]; } -+ (BOOL)_copyPathWithForcedAuthentication:(NSString *)src toPath:(NSString *)dst temporaryPath:(NSString *)tmp error:(NSError **)error ++ (BOOL)copyPathWithForcedAuthentication:(NSString *)src toPath:(NSString *)dst temporaryPath:(NSString *)tmp error:(NSError **)error { const char* srcPath = [src fileSystemRepresentation]; const char* tmpPath = [tmp fileSystemRepresentation]; @@ -136,7 +136,7 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza }; // Process the commands up until the first NULL - int commandIndex = 0; + unsigned int commandIndex = 0; for (; executables[commandIndex] != NULL; ++commandIndex) { if (res) res = AuthorizationExecuteWithPrivilegesAndWait(auth, executables[commandIndex], kAuthorizationFlagDefaults, argumentLists[commandIndex]); @@ -173,19 +173,19 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza { // Something went wrong somewhere along the way, but we're not sure exactly where. NSString *errorMessage = [NSString stringWithFormat:@"Authenticated file copy from %@ to %@ failed.", src, dst]; - if (error != NULL) + if (error != nil) *error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUAuthenticationFailure userInfo:[NSDictionary dictionaryWithObject:errorMessage forKey:NSLocalizedDescriptionKey]]; } } else { - if (error != NULL) + if (error != nil) *error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUAuthenticationFailure userInfo:[NSDictionary dictionaryWithObject:@"Couldn't get permission to authenticate." forKey:NSLocalizedDescriptionKey]]; } return res; } -+ (void)_movePathToTrash:(NSString *)path ++ (void)movePathToTrash:(NSString *)path { NSInteger tag = 0; if (![[NSWorkspace sharedWorkspace] performFileOperation:NSWorkspaceRecycleOperation source:[path stringByDeletingLastPathComponent] destination:@"" files:[NSArray arrayWithObject:[path lastPathComponent]] tag:&tag]) @@ -195,13 +195,13 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza + (BOOL)copyPathWithAuthentication:(NSString *)src overPath:(NSString *)dst temporaryName:(NSString *)tmp error:(NSError **)error { FSRef srcRef, dstRef, targetRef, movedRef; - OSErr err; + OSStatus err; err = FSPathMakeRefWithOptions((UInt8 *)[dst fileSystemRepresentation], kFSPathMakeRefDoNotFollowLeafSymlink, &dstRef, NULL); if (err != noErr) { NSString *errorMessage = [NSString stringWithFormat:@"Couldn't copy %@ over %@ because there is no file at %@.", src, dst, dst]; - if (error != NULL) + if (error != nil) *error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUFileCopyFailure userInfo:[NSDictionary dictionaryWithObject:errorMessage forKey:NSLocalizedDescriptionKey]]; return NO; } @@ -209,14 +209,14 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza NSString *tmpPath = [[dst stringByDeletingLastPathComponent] stringByAppendingPathComponent:tmp]; if (0 != access([dst fileSystemRepresentation], W_OK) || 0 != access([[dst stringByDeletingLastPathComponent] fileSystemRepresentation], W_OK)) - return [self _copyPathWithForcedAuthentication:src toPath:dst temporaryPath:tmpPath error:error]; + return [self copyPathWithForcedAuthentication:src toPath:dst temporaryPath:tmpPath error:error]; err = FSPathMakeRef((UInt8 *)[[dst stringByDeletingLastPathComponent] fileSystemRepresentation], &targetRef, NULL); if (err == noErr) err = FSMoveObjectSync(&dstRef, &targetRef, (CFStringRef)tmp, &movedRef, 0); if (err != noErr) { - if (error != NULL) + if (error != nil) *error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUFileCopyFailure userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Couldn't move %@ to %@.", dst, tmpPath] forKey:NSLocalizedDescriptionKey]]; return NO; } @@ -227,7 +227,7 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza { // We better move the old version back to its old location FSMoveObjectSync(&movedRef, &targetRef, (CFStringRef)[dst lastPathComponent], &movedRef, 0); - if (error != NULL) + if (error != nil) *error = [NSError errorWithDomain:SUSparkleErrorDomain code:SUFileCopyFailure userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Couldn't copy %@ to %@.", src, dst] forKey:NSLocalizedDescriptionKey]]; return NO; } @@ -235,11 +235,11 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza // Trash the old copy of the app. #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_4 if (FSMoveObjectToTrashSync == NULL) - [self performSelectorOnMainThread:@selector(_movePathToTrash:) withObject:tmpPath waitUntilDone:YES]; + [self performSelectorOnMainThread:@selector(movePathToTrash:) withObject:tmpPath waitUntilDone:YES]; else if (noErr != FSMoveObjectToTrashSync(&movedRef, NULL, 0)) NSLog(@"Sparkle error: couldn't move %@ to the trash. This is often a sign of a permissions error.", tmpPath); #else - [self performSelectorOnMainThread:@selector(_movePathToTrash:) withObject:tmpPath waitUntilDone:YES]; + [self performSelectorOnMainThread:@selector(movePathToTrash:) withObject:tmpPath waitUntilDone:YES]; #endif // If the currently-running application is trusted, the new @@ -258,9 +258,9 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza @end -#include -#include -#include +#import +#import +#import @implementation SUPlainInstaller (MMExtendedAttributes) @@ -308,8 +308,11 @@ static BOOL AuthorizationExecuteWithPrivilegesAndWait(AuthorizationRef authoriza // Only recurse if it's actually a directory. Don't recurse into a // root-level symbolic link. - NSDictionary* rootAttributes = - [[NSFileManager defaultManager] fileAttributesAtPath:root traverseLink:NO]; +#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 + NSDictionary* rootAttributes = [[NSFileManager defaultManager] fileAttributesAtPath:root traverseLink:NO]; +#else + NSDictionary* rootAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:root error:nil]; +#endif NSString* rootType = [rootAttributes objectForKey:NSFileType]; if (rootType == NSFileTypeDirectory) { diff --git a/mozilla/camino/sparkle/SUScheduledUpdateDriver.h b/mozilla/camino/sparkle/SUScheduledUpdateDriver.h index 892a6a7442e..64b8022d63d 100644 --- a/mozilla/camino/sparkle/SUScheduledUpdateDriver.h +++ b/mozilla/camino/sparkle/SUScheduledUpdateDriver.h @@ -12,7 +12,9 @@ #import #import "SUUIBasedUpdateDriver.h" -@interface SUScheduledUpdateDriver : SUUIBasedUpdateDriver { +@interface SUScheduledUpdateDriver : SUUIBasedUpdateDriver +{ +@private BOOL showErrors; } diff --git a/mozilla/camino/sparkle/SUStandardVersionComparator.m b/mozilla/camino/sparkle/SUStandardVersionComparator.m index 03c0c0d7008..19c56cab4e9 100644 --- a/mozilla/camino/sparkle/SUStandardVersionComparator.m +++ b/mozilla/camino/sparkle/SUStandardVersionComparator.m @@ -40,7 +40,8 @@ typedef enum { { NSString *character; NSMutableString *s; - NSInteger i, n, oldType, newType; + NSUInteger i, n; + SUCharacterType oldType, newType; NSMutableArray *parts = [NSMutableArray array]; if ([version length] == 0) { // Nothing to do here @@ -54,9 +55,8 @@ typedef enum { newType = [self typeOfCharacter:character]; if (oldType != newType || oldType == kPeriodType) { // We've reached a new segment - NSString *aPart = [[NSString alloc] initWithString:s]; + NSString *aPart = [[[NSString alloc] initWithString:s] autorelease]; [parts addObject:aPart]; - [aPart release]; [s setString:character]; } else { // Add character to string and continue @@ -76,8 +76,10 @@ typedef enum { NSArray *partsB = [self splitVersionString:versionB]; NSString *partA, *partB; - NSInteger i, n, typeA, typeB, intA, intB; - + NSUInteger i, n; + int intA, intB; + SUCharacterType typeA, typeB; + n = MIN([partsA count], [partsB count]); for (i = 0; i < n; ++i) { partA = [partsA objectAtIndex:i]; diff --git a/mozilla/camino/sparkle/SUStatusController.h b/mozilla/camino/sparkle/SUStatusController.h index c73ea5b8202..5dfd9775dcf 100644 --- a/mozilla/camino/sparkle/SUStatusController.h +++ b/mozilla/camino/sparkle/SUStatusController.h @@ -12,7 +12,9 @@ #import "SUWindowController.h" @class SUHost; -@interface SUStatusController : SUWindowController { +@interface SUStatusController : SUWindowController +{ +@private double progressValue, maxProgressValue; NSString *title, *statusText, *buttonTitle; IBOutlet NSButton *actionButton; diff --git a/mozilla/camino/sparkle/SUStatusController.m b/mozilla/camino/sparkle/SUStatusController.m index 16774c0a364..eea47609f4b 100644 --- a/mozilla/camino/sparkle/SUStatusController.m +++ b/mozilla/camino/sparkle/SUStatusController.m @@ -111,10 +111,10 @@ - (void)setMaxProgressValue:(double)value { - if (value < 0) value = 0; + if (value < 0.0) value = 0.0; maxProgressValue = value; - [self setProgressValue:0]; - [progressBar setIndeterminate:(value == 0)]; + [self setProgressValue:0.0]; + [progressBar setIndeterminate:(value == 0.0)]; [progressBar startAnimation:self]; } diff --git a/mozilla/camino/sparkle/SUSystemProfiler.m b/mozilla/camino/sparkle/SUSystemProfiler.m index 47d5909cedd..0fde4a18002 100644 --- a/mozilla/camino/sparkle/SUSystemProfiler.m +++ b/mozilla/camino/sparkle/SUSystemProfiler.m @@ -34,9 +34,9 @@ // Gather profile information and append it to the URL. NSMutableArray *profileArray = [NSMutableArray array]; NSArray *profileDictKeys = [NSArray arrayWithObjects:@"key", @"displayKey", @"value", @"displayValue", nil]; - int error = 0 ; - int value = 0 ; - unsigned long length = sizeof(value) ; + int error = 0; + int value = 0; + size_t length = sizeof(value); // OS version NSString *currentSystemVersion = [SUHost systemVersionString]; @@ -89,18 +89,18 @@ } error = sysctlbyname("hw.model", NULL, &length, NULL, 0); if (error == 0) { - char *cpuModel; - cpuModel = (char *)malloc(sizeof(char) * length); - error = sysctlbyname("hw.model", cpuModel, &length, NULL, 0); - if (error == 0) { - NSString *rawModelName = [NSString stringWithUTF8String:cpuModel]; - NSString *visibleModelName = [modelTranslation objectForKey:rawModelName]; - if (visibleModelName == nil) - visibleModelName = rawModelName; - [profileArray addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"model",@"Mac Model", rawModelName, visibleModelName, nil] forKeys:profileDictKeys]]; - } - if (cpuModel != NULL) + char *cpuModel = (char *)malloc(sizeof(char) * length); + if (cpuModel != NULL) { + error = sysctlbyname("hw.model", cpuModel, &length, NULL, 0); + if (error == 0) { + NSString *rawModelName = [NSString stringWithUTF8String:cpuModel]; + NSString *visibleModelName = [modelTranslation objectForKey:rawModelName]; + if (visibleModelName == nil) + visibleModelName = rawModelName; + [profileArray addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"model",@"Mac Model", rawModelName, visibleModelName, nil] forKeys:profileDictKeys]]; + } free(cpuModel); + } } // Number of CPUs @@ -111,7 +111,7 @@ // User preferred language NSUserDefaults *defs = [NSUserDefaults standardUserDefaults]; NSArray *languages = [defs objectForKey:@"AppleLanguages"]; - if (languages && ([languages count] > 0)) + if ([languages count] > 0) [profileArray addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"lang",@"Preferred Language", [languages objectAtIndex:0], [languages objectAtIndex:0],nil] forKeys:profileDictKeys]]; // Application sending the request @@ -124,9 +124,8 @@ // Number of displays? // CPU speed - OSErr err; SInt32 gestaltInfo; - err = Gestalt(gestaltProcClkSpeedMHz,&gestaltInfo); + OSErr err = Gestalt(gestaltProcClkSpeedMHz,&gestaltInfo); if (err == noErr) [profileArray addObject:[NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"cpuFreqMHz",@"CPU Speed (GHz)", [NSNumber numberWithInt:gestaltInfo], [NSNumber numberWithDouble:gestaltInfo/1000.0],nil] forKeys:profileDictKeys]]; diff --git a/mozilla/camino/sparkle/SUUIBasedUpdateDriver.m b/mozilla/camino/sparkle/SUUIBasedUpdateDriver.m index 3fe001eddca..79d509ea89c 100644 --- a/mozilla/camino/sparkle/SUUIBasedUpdateDriver.m +++ b/mozilla/camino/sparkle/SUUIBasedUpdateDriver.m @@ -14,6 +14,13 @@ @implementation SUUIBasedUpdateDriver +- (IBAction)cancelDownload:sender +{ + if (download) + [download cancel]; + [self abortUpdate]; +} + - (void)didFindValidUpdate { updateAlert = [[SUUpdateAlert alloc] initWithAppcastItem:updateItem host:host]; @@ -61,7 +68,7 @@ { case SUInstallUpdateChoice: statusController = [[SUStatusController alloc] initWithHost:host]; - [statusController beginActionWithTitle:SULocalizedString(@"Downloading update...", @"Take care not to overflow the status window.") maxProgressValue:0 statusText:nil]; + [statusController beginActionWithTitle:SULocalizedString(@"Downloading update...", @"Take care not to overflow the status window.") maxProgressValue:0.0 statusText:nil]; [statusController setButtonTitle:SULocalizedString(@"Cancel", nil) target:self action:@selector(cancelDownload:) isDefault:NO]; [statusController showWindow:self]; [self downloadUpdate]; @@ -80,70 +87,67 @@ [statusController setMaxProgressValue:[response expectedContentLength]]; } -- (NSString *)_humanReadableSizeFromDouble:(double)value +- (NSString *)humanReadableSizeFromDouble:(double)value { - if (value < 1024) + if (value < 1000) return [NSString stringWithFormat:@"%.0lf %@", value, SULocalizedString(@"B", @"the unit for bytes")]; - if (value < 1024 * 1024) - return [NSString stringWithFormat:@"%.0lf %@", value / 1024.0, SULocalizedString(@"KB", @"the unit for kilobytes")]; + if (value < 1000 * 1000) + return [NSString stringWithFormat:@"%.0lf %@", value / 1000.0, SULocalizedString(@"KB", @"the unit for kilobytes")]; - if (value < 1024 * 1024 * 1024) - return [NSString stringWithFormat:@"%.1lf %@", value / 1024.0 / 1024.0, SULocalizedString(@"MB", @"the unit for megabytes")]; + if (value < 1000 * 1000 * 1000) + return [NSString stringWithFormat:@"%.1lf %@", value / 1000.0 / 1000.0, SULocalizedString(@"MB", @"the unit for megabytes")]; - return [NSString stringWithFormat:@"%.2lf %@", value / 1024.0 / 1024.0 / 1024.0, SULocalizedString(@"GB", @"the unit for gigabytes")]; + return [NSString stringWithFormat:@"%.2lf %@", value / 1000.0 / 1000.0 / 1000.0, SULocalizedString(@"GB", @"the unit for gigabytes")]; } - (void)download:(NSURLDownload *)download didReceiveDataOfLength:(NSUInteger)length { - [statusController setProgressValue:[statusController progressValue] + length]; - if ([statusController maxProgressValue] > 0) - [statusController setStatusText:[NSString stringWithFormat:SULocalizedString(@"%@ of %@", nil), [self _humanReadableSizeFromDouble:[statusController progressValue]], [self _humanReadableSizeFromDouble:[statusController maxProgressValue]]]]; + [statusController setProgressValue:[statusController progressValue] + (double)length]; + if ([statusController maxProgressValue] > 0.0) + [statusController setStatusText:[NSString stringWithFormat:SULocalizedString(@"%@ of %@", nil), [self humanReadableSizeFromDouble:[statusController progressValue]], [self humanReadableSizeFromDouble:[statusController maxProgressValue]]]]; else - [statusController setStatusText:[NSString stringWithFormat:SULocalizedString(@"%@ downloaded", nil), [self _humanReadableSizeFromDouble:[statusController progressValue]]]]; -} - -- (IBAction)cancelDownload:sender -{ - if (download) - [download cancel]; - [self abortUpdate]; + [statusController setStatusText:[NSString stringWithFormat:SULocalizedString(@"%@ downloaded", nil), [self humanReadableSizeFromDouble:[statusController progressValue]]]]; } - (void)extractUpdate { // Now we have to extract the downloaded archive. - [statusController beginActionWithTitle:SULocalizedString(@"Extracting update...", @"Take care not to overflow the status window.") maxProgressValue:0 statusText:nil]; + [statusController beginActionWithTitle:SULocalizedString(@"Extracting update...", @"Take care not to overflow the status window.") maxProgressValue:0.0 statusText:nil]; [statusController setButtonEnabled:NO]; [super extractUpdate]; } -- (void)unarchiver:(SUUnarchiver *)ua extractedLength:(long)length +- (void)unarchiver:(SUUnarchiver *)ua extractedLength:(unsigned long)length { // We do this here instead of in extractUpdate so that we only have a determinate progress bar for archives with progress. - if ([statusController maxProgressValue] == 0) + if ([statusController maxProgressValue] == 0.0) + { + NSDictionary * attributes; #if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - [statusController setMaxProgressValue:[[[[NSFileManager defaultManager] fileAttributesAtPath:downloadPath traverseLink:NO] objectForKey:NSFileSize] doubleValue]]; + attributes = [[NSFileManager defaultManager] fileAttributesAtPath:downloadPath traverseLink:NO]; #else - [statusController setMaxProgressValue:[[[[NSFileManager defaultManager] attributesOfItemAtPath:downloadPath error:NULL] objectForKey:NSFileSize] doubleValue]]; + attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:downloadPath error:nil]; #endif - [statusController setProgressValue:[statusController progressValue] + length]; + [statusController setMaxProgressValue:[[attributes objectForKey:NSFileSize] doubleValue]]; + } + [statusController setProgressValue:[statusController progressValue] + (double)length]; } +- (void)installAndRestart:sender { [self installUpdate]; } + - (void)unarchiverDidFinish:(SUUnarchiver *)ua { - [statusController beginActionWithTitle:SULocalizedString(@"Ready to Install", nil) maxProgressValue:1 statusText:nil]; - [statusController setProgressValue:1]; // Fill the bar. + [statusController beginActionWithTitle:SULocalizedString(@"Ready to Install", nil) maxProgressValue:1.0 statusText:nil]; + [statusController setProgressValue:1.0]; // Fill the bar. [statusController setButtonEnabled:YES]; [statusController setButtonTitle:SULocalizedString(@"Install and Relaunch", nil) target:self action:@selector(installAndRestart:) isDefault:YES]; [NSApp requestUserAttention:NSInformationalRequest]; } -- (void)installAndRestart:sender { [self installUpdate]; } - - (void)installUpdate { - [statusController beginActionWithTitle:SULocalizedString(@"Installing update...", @"Take care not to overflow the status window.") maxProgressValue:0 statusText:nil]; + [statusController beginActionWithTitle:SULocalizedString(@"Installing update...", @"Take care not to overflow the status window.") maxProgressValue:0.0 statusText:nil]; [statusController setButtonEnabled:NO]; [super installUpdate]; diff --git a/mozilla/camino/sparkle/SUUnarchiver.h b/mozilla/camino/sparkle/SUUnarchiver.h index 1b2372107b0..3e388e9210f 100644 --- a/mozilla/camino/sparkle/SUUnarchiver.h +++ b/mozilla/camino/sparkle/SUUnarchiver.h @@ -22,7 +22,7 @@ @end @interface NSObject (SUUnarchiverDelegate) -- (void)unarchiver:(SUUnarchiver *)unarchiver extractedLength:(long)length; +- (void)unarchiver:(SUUnarchiver *)unarchiver extractedLength:(unsigned long)length; - (void)unarchiverDidFinish:(SUUnarchiver *)unarchiver; - (void)unarchiverDidFail:(SUUnarchiver *)unarchiver; @end diff --git a/mozilla/camino/sparkle/SUUnarchiver.m b/mozilla/camino/sparkle/SUUnarchiver.m index 03cfaac0d03..6592ac75496 100644 --- a/mozilla/camino/sparkle/SUUnarchiver.m +++ b/mozilla/camino/sparkle/SUUnarchiver.m @@ -13,16 +13,14 @@ @implementation SUUnarchiver -extern NSMutableArray *__unarchiverImplementations; - + (SUUnarchiver *)unarchiverForPath:(NSString *)path { - NSEnumerator *implementationEnumerator = [[self _unarchiverImplementations] objectEnumerator]; + NSEnumerator *implementationEnumerator = [[self unarchiverImplementations] objectEnumerator]; id current; while ((current = [implementationEnumerator nextObject])) { - if ([current _canUnarchivePath:path]) - return [[[current alloc] _initWithPath:path] autorelease]; + if ([current canUnarchivePath:path]) + return [[[current alloc] initWithPath:path] autorelease]; } return nil; } diff --git a/mozilla/camino/sparkle/SUUnarchiver_Private.h b/mozilla/camino/sparkle/SUUnarchiver_Private.h index 5928b2783ce..f9277803714 100644 --- a/mozilla/camino/sparkle/SUUnarchiver_Private.h +++ b/mozilla/camino/sparkle/SUUnarchiver_Private.h @@ -13,14 +13,14 @@ #import "SUUnarchiver.h" @interface SUUnarchiver (Private) -+ (void)_registerImplementation:(Class)implementation; -+ (NSArray *)_unarchiverImplementations; -+ (BOOL)_canUnarchivePath:(NSString *)path; -- _initWithPath:(NSString *)path; ++ (void)registerImplementation:(Class)implementation; ++ (NSArray *)unarchiverImplementations; ++ (BOOL)canUnarchivePath:(NSString *)path; +- (id)initWithPath:(NSString *)path; -- (void)_notifyDelegateOfExtractedLength:(NSNumber *)length; -- (void)_notifyDelegateOfSuccess; -- (void)_notifyDelegateOfFailure; +- (void)notifyDelegateOfExtractedLength:(NSNumber *)length; +- (void)notifyDelegateOfSuccess; +- (void)notifyDelegateOfFailure; @end #endif diff --git a/mozilla/camino/sparkle/SUUnarchiver_Private.m b/mozilla/camino/sparkle/SUUnarchiver_Private.m index ead77eeb488..ca3d9151034 100644 --- a/mozilla/camino/sparkle/SUUnarchiver_Private.m +++ b/mozilla/camino/sparkle/SUUnarchiver_Private.m @@ -10,7 +10,7 @@ @implementation SUUnarchiver (Private) -- _initWithPath:(NSString *)path +- (id)initWithPath:(NSString *)path { if ((self = [super init])) archivePath = [path copy]; @@ -23,41 +23,41 @@ [super dealloc]; } -+ (BOOL)_canUnarchivePath:(NSString *)path ++ (BOOL)canUnarchivePath:(NSString *)path { return NO; } -- (void)_notifyDelegateOfExtractedLength:(NSNumber *)length +- (void)notifyDelegateOfExtractedLength:(NSNumber *)length { if ([delegate respondsToSelector:@selector(unarchiver:extractedLength:)]) - [delegate unarchiver:self extractedLength:[length longValue]]; + [delegate unarchiver:self extractedLength:[length unsignedLongValue]]; } -- (void)_notifyDelegateOfSuccess +- (void)notifyDelegateOfSuccess { if ([delegate respondsToSelector:@selector(unarchiverDidFinish:)]) [delegate performSelector:@selector(unarchiverDidFinish:) withObject:self]; } -- (void)_notifyDelegateOfFailure +- (void)notifyDelegateOfFailure { if ([delegate respondsToSelector:@selector(unarchiverDidFail:)]) [delegate performSelector:@selector(unarchiverDidFail:) withObject:self]; } -static NSMutableArray *__unarchiverImplementations; +static NSMutableArray *gUnarchiverImplementations; -+ (void)_registerImplementation:(Class)implementation ++ (void)registerImplementation:(Class)implementation { - if (!__unarchiverImplementations) - __unarchiverImplementations = [[NSMutableArray alloc] init]; - [__unarchiverImplementations addObject:implementation]; + if (!gUnarchiverImplementations) + gUnarchiverImplementations = [[NSMutableArray alloc] init]; + [gUnarchiverImplementations addObject:implementation]; } -+ (NSArray *)_unarchiverImplementations ++ (NSArray *)unarchiverImplementations { - return [NSArray arrayWithArray:__unarchiverImplementations]; + return [NSArray arrayWithArray:gUnarchiverImplementations]; } @end diff --git a/mozilla/camino/sparkle/SUUpdateAlert.m b/mozilla/camino/sparkle/SUUpdateAlert.m index 08fa27927aa..607e37ab5a9 100644 --- a/mozilla/camino/sparkle/SUUpdateAlert.m +++ b/mozilla/camino/sparkle/SUUpdateAlert.m @@ -182,7 +182,7 @@ - (void)webView:sender decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:frame decisionListener:listener { - if (webViewFinishedLoading == YES) { + if (webViewFinishedLoading) { [[NSWorkspace sharedWorkspace] openURL:[request URL]]; [listener ignore]; diff --git a/mozilla/camino/sparkle/SUUpdateDriver.h b/mozilla/camino/sparkle/SUUpdateDriver.h index 5d181647040..1a305d11eef 100644 --- a/mozilla/camino/sparkle/SUUpdateDriver.h +++ b/mozilla/camino/sparkle/SUUpdateDriver.h @@ -11,7 +11,7 @@ #import -extern NSString *SUUpdateDriverFinishedNotification; +extern NSString * const SUUpdateDriverFinishedNotification; @class SUHost, SUUpdater; @interface SUUpdateDriver : NSObject diff --git a/mozilla/camino/sparkle/SUUpdateDriver.m b/mozilla/camino/sparkle/SUUpdateDriver.m index a3ccdd3221d..6b8e2bf5654 100644 --- a/mozilla/camino/sparkle/SUUpdateDriver.m +++ b/mozilla/camino/sparkle/SUUpdateDriver.m @@ -8,7 +8,7 @@ #import "SUUpdateDriver.h" -NSString *SUUpdateDriverFinishedNotification = @"SUUpdateDriverFinished"; +NSString * const SUUpdateDriverFinishedNotification = @"SUUpdateDriverFinished"; @implementation SUUpdateDriver - initWithUpdater:(SUUpdater *)anUpdater diff --git a/mozilla/camino/sparkle/SUUpdatePermissionPrompt.m b/mozilla/camino/sparkle/SUUpdatePermissionPrompt.m index a6277a505e5..2da8a146b77 100644 --- a/mozilla/camino/sparkle/SUUpdatePermissionPrompt.m +++ b/mozilla/camino/sparkle/SUUpdatePermissionPrompt.m @@ -39,7 +39,7 @@ // the user would not know why the application was paused. if ([aHost isBackgroundApplication]) { [NSApp activateIgnoringOtherApps:YES]; } - id prompt = [[[self class] alloc] initWithHost:aHost systemProfile:profile delegate:d]; + id prompt = [[[[self class] alloc] initWithHost:aHost systemProfile:profile delegate:d] autorelease]; [NSApp runModalForWindow:[prompt window]]; } @@ -125,7 +125,6 @@ [delegate updatePermissionPromptFinishedWithResult:([sender tag] == 1 ? SUAutomaticallyCheck : SUDoNotAutomaticallyCheck)]; [[self window] close]; [NSApp stopModal]; - [self autorelease]; } @end diff --git a/mozilla/camino/sparkle/SUUpdater.h b/mozilla/camino/sparkle/SUUpdater.h index 0ed3a2d4282..6874871e95f 100644 --- a/mozilla/camino/sparkle/SUUpdater.h +++ b/mozilla/camino/sparkle/SUUpdater.h @@ -12,7 +12,9 @@ #import @class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; -@interface SUUpdater : NSObject { +@interface SUUpdater : NSObject +{ +@private NSTimer *checkTimer; SUUpdateDriver *driver; diff --git a/mozilla/camino/sparkle/SUUpdater.m b/mozilla/camino/sparkle/SUUpdater.m index 16291250b45..151ac84bdf9 100644 --- a/mozilla/camino/sparkle/SUUpdater.m +++ b/mozilla/camino/sparkle/SUUpdater.m @@ -34,7 +34,7 @@ #pragma mark Initialization static NSMutableDictionary *sharedUpdaters = nil; -static NSString *SUUpdaterDefaultsObservationContext = @"SUUpdaterDefaultsObservationContext"; +static NSString * const SUUpdaterDefaultsObservationContext = @"SUUpdaterDefaultsObservationContext"; + (SUUpdater *)sharedUpdater { @@ -47,7 +47,7 @@ static NSString *SUUpdaterDefaultsObservationContext = @"SUUpdaterDefaultsObserv if (bundle == nil) bundle = [NSBundle mainBundle]; id updater = [sharedUpdaters objectForKey:[NSValue valueWithNonretainedObject:bundle]]; if (updater == nil) - updater = [[[self class] alloc] initForBundle:bundle]; + updater = [[[[self class] alloc] initForBundle:bundle] autorelease]; return updater; } @@ -313,7 +313,8 @@ static NSString *SUUpdaterDefaultsObservationContext = @"SUUpdaterDefaultsObserv if (customUserAgentString) return customUserAgentString; - NSString *userAgent = [NSString stringWithFormat:@"%@/%@ Sparkle/%@", [host name], [host displayVersion], [SPARKLE_BUNDLE objectForInfoDictionaryKey:@"CFBundleVersion"] ?: nil]; + NSString *version = [SPARKLE_BUNDLE objectForInfoDictionaryKey:@"CFBundleVersion"]; + NSString *userAgent = [NSString stringWithFormat:@"%@/%@ Sparkle/%@", [host name], [host displayVersion], version ? version : @"?"]; NSData *cleanedAgent = [userAgent dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; return [[[NSString alloc] initWithData:cleanedAgent encoding:NSASCIIStringEncoding] autorelease]; } @@ -350,7 +351,7 @@ static NSString *SUUpdaterDefaultsObservationContext = @"SUUpdaterDefaultsObserv parameters = [parameters arrayByAddingObjectsFromArray:[host systemProfile]]; [host setObject:[NSDate date] forUserDefaultsKey:SULastProfileSubmitDateKey]; } - if (parameters == nil || [parameters count] == 0) { return baseFeedURL; } + if ([parameters count] == 0) { return baseFeedURL; } // Build up the parameterized URL. NSMutableArray *parameterStrings = [NSMutableArray array]; diff --git a/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.h b/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.h index 9d9a3041aba..8df5f89dc53 100644 --- a/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.h +++ b/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.h @@ -12,7 +12,9 @@ #import #import "SUUIBasedUpdateDriver.h" -@interface SUUserInitiatedUpdateDriver : SUUIBasedUpdateDriver { +@interface SUUserInitiatedUpdateDriver : SUUIBasedUpdateDriver +{ +@private SUStatusController *checkingController; BOOL isCanceled; } diff --git a/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.m b/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.m index 92ad3f2e9fe..276b032b13a 100644 --- a/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.m +++ b/mozilla/camino/sparkle/SUUserInitiatedUpdateDriver.m @@ -13,23 +13,6 @@ @implementation SUUserInitiatedUpdateDriver -- (void)checkForUpdatesAtURL:(NSURL *)URL host:(SUHost *)aHost -{ - checkingController = [[SUStatusController alloc] initWithHost:aHost]; - [[checkingController window] center]; // Force the checking controller to load its window. - [checkingController beginActionWithTitle:SULocalizedString(@"Checking for updates...", nil) maxProgressValue:0 statusText:nil]; - [checkingController setButtonTitle:SULocalizedString(@"Cancel", nil) target:self action:@selector(cancelCheckForUpdates:) isDefault:NO]; - [checkingController showWindow:self]; - [super checkForUpdatesAtURL:URL host:aHost]; - - // For background applications, obtain focus. - // Useful if the update check is requested from another app like System Preferences. - if ([aHost isBackgroundApplication]) - { - [NSApp activateIgnoringOtherApps:YES]; - } -} - - (void)closeCheckingWindow { if (checkingController) @@ -46,6 +29,23 @@ isCanceled = YES; } +- (void)checkForUpdatesAtURL:(NSURL *)URL host:(SUHost *)aHost +{ + checkingController = [[SUStatusController alloc] initWithHost:aHost]; + [[checkingController window] center]; // Force the checking controller to load its window. + [checkingController beginActionWithTitle:SULocalizedString(@"Checking for updates...", nil) maxProgressValue:0.0 statusText:nil]; + [checkingController setButtonTitle:SULocalizedString(@"Cancel", nil) target:self action:@selector(cancelCheckForUpdates:) isDefault:NO]; + [checkingController showWindow:self]; + [super checkForUpdatesAtURL:URL host:aHost]; + + // For background applications, obtain focus. + // Useful if the update check is requested from another app like System Preferences. + if ([aHost isBackgroundApplication]) + { + [NSApp activateIgnoringOtherApps:YES]; + } +} + - (void)appcastDidFinishLoading:(SUAppcast *)ac { if (isCanceled) diff --git a/mozilla/camino/sparkle/SUWindowController.m b/mozilla/camino/sparkle/SUWindowController.m index c1c5d713ad4..038900ac287 100644 --- a/mozilla/camino/sparkle/SUWindowController.m +++ b/mozilla/camino/sparkle/SUWindowController.m @@ -20,7 +20,8 @@ NSBundle *framework = [NSBundle bundleWithPath:frameworkPath]; path = [framework pathForResource:nibName ofType:@"nib"]; } - return [super initWithWindowNibPath:path owner:self]; + self = [super initWithWindowNibPath:path owner:self]; + return self; } @end diff --git a/mozilla/camino/sparkle/Sparkle.pch b/mozilla/camino/sparkle/Sparkle.pch index c1bca45bdca..9bd4777fd6b 100644 --- a/mozilla/camino/sparkle/Sparkle.pch +++ b/mozilla/camino/sparkle/Sparkle.pch @@ -6,11 +6,25 @@ // Copyright 2008 Andy Matuschak. All rights reserved. // +#ifndef NSAppKitVersionNumber10_4 +#define NSAppKitVersionNumber10_4 824 +#endif + +#ifndef NSAppKitVersionNumber10_5 +#define NSAppKitVersionNumber10_5 949 +#endif + +#ifndef NSAppKitVersionNumber10_6 +#define NSAppKitVersionNumber10_6 1038 +#endif + +#ifdef __OBJC__ + #define SPARKLE_BUNDLE [NSBundle bundleWithIdentifier:@"org.andymatuschak.Sparkle"] #define SULocalizedString(key,comment) NSLocalizedStringFromTableInBundle(key, @"Sparkle", SPARKLE_BUNDLE, comment) #define SUAbstractFail() NSAssert2(nil, @"Can't call %@ on an instance of %@; this is an abstract method!", __PRETTY_FUNCTION__, [self class]); -#ifdef __OBJC__ #import #import "SUConstants.h" + #endif diff --git a/mozilla/camino/sparkle/Sparkle.xcodeproj/project.pbxproj b/mozilla/camino/sparkle/Sparkle.xcodeproj/project.pbxproj index adf6a27033e..28a4eed4fa5 100644 --- a/mozilla/camino/sparkle/Sparkle.xcodeproj/project.pbxproj +++ b/mozilla/camino/sparkle/Sparkle.xcodeproj/project.pbxproj @@ -92,6 +92,8 @@ DAAEFC9B0DA5722F0051E0D0 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D6A5FE840307C02AAC07 /* AppKit.framework */; }; DAAEFD4E0DA572330051E0D0 /* relaunch.m in Sources */ = {isa = PBXBuildFile; fileRef = 613242130CD06CEF00106AA4 /* relaunch.m */; }; DAAEFD510DA572550051E0D0 /* relaunch in Resources */ = {isa = PBXBuildFile; fileRef = DAAEFC960DA571DF0051E0D0 /* relaunch */; }; + FA8342D2104A4B1F001FE2FF /* SUStandardVersionComparator.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A225A30D1C4AC000430CCD /* SUStandardVersionComparator.m */; }; + FA8342DE104A4B54001FE2FF /* SUStandardVersionComparator.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A225A30D1C4AC000430CCD /* SUStandardVersionComparator.m */; }; FAEFA2F70D94AA7500472538 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D69BFE84028FC02AAC07 /* Foundation.framework */; }; FAEFA2F80D94AA7900472538 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D6A5FE840307C02AAC07 /* AppKit.framework */; }; FAEFA3040D94AB3400472538 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0867D6A5FE840307C02AAC07 /* AppKit.framework */; }; @@ -209,6 +211,10 @@ 615409C6103BBD9F00125AF1 /* cs */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cs; path = cs.lproj/SUAutomaticUpdateAlert.nib; sourceTree = ""; }; 615409C7103BBDA600125AF1 /* cs */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = cs; path = cs.lproj/SUUpdateAlert.nib; sourceTree = ""; }; 615AE3CF0D64DC40001CA7BD /* SUModelTranslation.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = SUModelTranslation.plist; sourceTree = ""; }; + 6186554210D7484300B1E074 /* pt_PT */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt_PT; path = pt_PT.lproj/SUUpdatePermissionPrompt.nib; sourceTree = ""; }; + 6186554310D7484E00B1E074 /* pt_PT */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt_PT; path = pt_PT.lproj/Sparkle.strings; sourceTree = ""; }; + 6186554410D7486E00B1E074 /* pt_PT */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt_PT; path = pt_PT.lproj/SUAutomaticUpdateAlert.nib; sourceTree = ""; }; + 6186554510D7488400B1E074 /* pt_PT */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = pt_PT; path = pt_PT.lproj/SUUpdateAlert.nib; sourceTree = ""; }; 618915700E35937600B5E981 /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = sv.lproj/SUUpdatePermissionPrompt.nib; sourceTree = ""; }; 618915710E35937600B5E981 /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = sv.lproj/SUUpdateAlert.nib; sourceTree = ""; }; 618915720E35937600B5E981 /* sv */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = sv; path = sv.lproj/SUAutomaticUpdateAlert.nib; sourceTree = ""; }; @@ -305,6 +311,10 @@ FA1941D30D94A70100DD942E /* ConfigRelaunchDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ConfigRelaunchDebug.xcconfig; sourceTree = ""; }; FA1941D40D94A70100DD942E /* ConfigRelaunchRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ConfigRelaunchRelease.xcconfig; sourceTree = ""; }; FA1941D50D94A70100DD942E /* ConfigFrameworkRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ConfigFrameworkRelease.xcconfig; sourceTree = ""; }; + FA302AFD109D13190060F891 /* ConfigUnitTestReleaseGCSupport.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ConfigUnitTestReleaseGCSupport.xcconfig; sourceTree = ""; }; + FA3AAF391050B273004B3130 /* ConfigUnitTestRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ConfigUnitTestRelease.xcconfig; sourceTree = ""; }; + FA3AAF3A1050B273004B3130 /* ConfigUnitTestDebug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ConfigUnitTestDebug.xcconfig; sourceTree = ""; }; + FA3AAF3B1050B273004B3130 /* ConfigUnitTest.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ConfigUnitTest.xcconfig; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -576,6 +586,10 @@ FA1941CE0D94A70100DD942E /* ConfigRelaunch.xcconfig */, FA1941D30D94A70100DD942E /* ConfigRelaunchDebug.xcconfig */, FA1941D40D94A70100DD942E /* ConfigRelaunchRelease.xcconfig */, + FA3AAF3B1050B273004B3130 /* ConfigUnitTest.xcconfig */, + FA3AAF3A1050B273004B3130 /* ConfigUnitTestDebug.xcconfig */, + FA3AAF391050B273004B3130 /* ConfigUnitTestRelease.xcconfig */, + FA302AFD109D13190060F891 /* ConfigUnitTestReleaseGCSupport.xcconfig */, ); path = Configurations; sourceTree = ""; @@ -746,6 +760,7 @@ zh_CN, fr_ca, pt_BR, + pt_PT, ); mainGroup = 0867D691FE84028FC02AAC07 /* Sparkle */; productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; @@ -862,6 +877,7 @@ buildActionMask = 2147483647; files = ( 61227A160DB548B800AB99EA /* SUVersionComparisonTest.m in Sources */, + FA8342DE104A4B54001FE2FF /* SUStandardVersionComparator.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -870,6 +886,7 @@ buildActionMask = 2147483647; files = ( 61B5F93009C4CFDC00B25A18 /* main.m in Sources */, + FA8342D2104A4B1F001FE2FF /* SUStandardVersionComparator.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -962,6 +979,7 @@ 611A904610240DF700CC659E /* ja */, 61E31A80103299500051D188 /* pt_BR */, 615409C4103BBC4000125AF1 /* cs */, + 6186554310D7484E00B1E074 /* pt_PT */, ); name = Sparkle.strings; sourceTree = ""; @@ -985,6 +1003,7 @@ 611A904810240E0600CC659E /* ja */, 61E31A81103299560051D188 /* pt_BR */, 615409C6103BBD9F00125AF1 /* cs */, + 6186554410D7486E00B1E074 /* pt_PT */, ); name = SUAutomaticUpdateAlert.nib; sourceTree = ""; @@ -1008,6 +1027,7 @@ 611A904910240E0C00CC659E /* ja */, 61E31A821032995F0051D188 /* pt_BR */, 615409C7103BBDA600125AF1 /* cs */, + 6186554510D7488400B1E074 /* pt_PT */, ); name = SUUpdateAlert.nib; sourceTree = ""; @@ -1047,6 +1067,7 @@ 611A904710240DFF00CC659E /* ja */, 61E31A7F103299450051D188 /* pt_BR */, 615409C5103BBC5000125AF1 /* cs */, + 6186554210D7484300B1E074 /* pt_PT */, ); name = SUUpdatePermissionPrompt.nib; sourceTree = ""; @@ -1094,7 +1115,6 @@ isa = XCBuildConfiguration; baseConfigurationReference = 61072EB20DF2640C008FE88B /* ConfigFrameworkReleaseGCSupport.xcconfig */; buildSettings = { - INSTALL_PATH = "@loader_path/../Frameworks"; }; name = "Release (GC dual-mode; 10.5-only)"; }; @@ -1114,87 +1134,22 @@ }; 61072EB10DF263BD008FE88B /* Release (GC dual-mode; 10.5-only) */ = { isa = XCBuildConfiguration; + baseConfigurationReference = FA302AFD109D13190060F891 /* ConfigUnitTestReleaseGCSupport.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(NATIVE_ARCH)"; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h"; - INFOPLIST_FILE = "Tests/Sparkle Unit Tests-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - OTHER_LDFLAGS = ( - "-framework", - Cocoa, - "-framework", - SenTestingKit, - ); - PREBINDING = NO; - PRODUCT_NAME = "Sparkle Unit Tests"; - WARNING_CFLAGS = ""; - WRAPPER_EXTENSION = octest; - ZERO_LINK = NO; }; name = "Release (GC dual-mode; 10.5-only)"; }; 612279DB0DB5470300AB99EA /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = FA3AAF3A1050B273004B3130 /* ConfigUnitTestDebug.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(NATIVE_ARCH_ACTUAL)"; - COPY_PHASE_STRIP = NO; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_DYNAMIC_NO_PIC = NO; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h"; - INFOPLIST_FILE = "Tests/Sparkle Unit Tests-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - OTHER_LDFLAGS = ( - "-framework", - Cocoa, - "-framework", - SenTestingKit, - ); - PREBINDING = NO; - PRODUCT_NAME = "Sparkle Unit Tests"; - WRAPPER_EXTENSION = octest; - ZERO_LINK = NO; }; name = Debug; }; 612279DC0DB5470300AB99EA /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = FA3AAF391050B273004B3130 /* ConfigUnitTestRelease.xcconfig */; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(NATIVE_ARCH)"; - COPY_PHASE_STRIP = YES; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks"; - GCC_ENABLE_FIX_AND_CONTINUE = NO; - GCC_ENABLE_OBJC_EXCEPTIONS = YES; - GCC_MODEL_TUNING = G5; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h"; - INFOPLIST_FILE = "Tests/Sparkle Unit Tests-Info.plist"; - INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles"; - OTHER_LDFLAGS = ( - "-framework", - Cocoa, - "-framework", - SenTestingKit, - ); - PREBINDING = NO; - PRODUCT_NAME = "Sparkle Unit Tests"; - WRAPPER_EXTENSION = octest; - ZERO_LINK = NO; }; name = Release; }; diff --git a/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 09004544ea6..00000000000 --- a/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,29 +0,0 @@ -{ - IBClasses = ( - { - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - CLASS = NSObject; - LANGUAGE = ObjC; - }, - { - ACTIONS = { - doNotInstall = id; - installLater = id; - installNow = id; - }; - CLASS = SUAutomaticUpdateAlert; - LANGUAGE = ObjC; - SUPERCLASS = SUWindowController; - }, - { - CLASS = SUWindowController; - LANGUAGE = ObjC; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/info.nib b/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index da986de652f..00000000000 --- a/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,18 +0,0 @@ - - - - - IBDocumentLocation - 69 10 356 240 0 0 1680 1028 - IBFramework Version - 489.0 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib index 5a2dfc875958ab50afb017fd6ad6f8dbb3cdb6a4..0ef484be4d82534cf0b2a070e42f269f6f49f978 100644 GIT binary patch literal 8147 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 literal 7137 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 LXxGkf>EZtch%sSf diff --git a/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.strings b/mozilla/camino/sparkle/da.lproj/SUAutomaticUpdateAlert.strings index 17a67d9b19f98ad645e0204876c5836bf0b94dba..4f47c3ac290b78eff046fb47a818b330f085442b 100644 GIT binary patch delta 50 zcmbQh(ZRv=|KCPtHYRxwhE#?;h7tw^hJ1!}Aejl|6$AN+3^_oUy4ir~0V5*=07Z}s A%K!iX delta 39 tcmeC+n83mO??1yvCN?I17lwR>a)vyH93Y*@kTRK{Nu2TJW_6|qi~!c*3XK2& diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/classes.nib b/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/classes.nib deleted file mode 100644 index 018710af886..00000000000 --- a/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,39 +0,0 @@ -{ - IBClasses = ( - { - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - CLASS = NSApplication; - LANGUAGE = ObjC; - SUPERCLASS = NSResponder; - }, - { - CLASS = NSObject; - LANGUAGE = ObjC; - }, - { - ACTIONS = { - installUpdate = id; - remindMeLater = id; - skipThisVersion = id; - }; - CLASS = SUUpdateAlert; - LANGUAGE = ObjC; - OUTLETS = { - delegate = id; - description = NSTextField; - releaseNotesView = WebView; - }; - SUPERCLASS = SUWindowController; - }, - { - CLASS = SUWindowController; - LANGUAGE = ObjC; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/info.nib b/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 7b026327649..00000000000 --- a/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 489.0 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBSystem Version - 9F33 - targetFramework - IBCocoaFramework - - diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/keyedobjects.nib b/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.nib/keyedobjects.nib index ad5666d311a07700aebbaafb679aba618dd0772d..75b515a5d53d6d70e990534252b2d90d47ccc851 100644 GIT binary patch literal 11557 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 literal 10197 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 diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.strings b/mozilla/camino/sparkle/da.lproj/SUUpdateAlert.strings index 7d1ca1bd00f63953e1a93eb394d7cb7f61e6a63b..12c2f3d0494a0c370ccb96cf14fd7669913bf2a7 100644 GIT binary patch delta 74 zcmeC;ZQy14|8Md^7O9Q0eT?!R45IQ7Y_gc diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/classes.nib b/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/classes.nib deleted file mode 100644 index 480bb357823..00000000000 --- a/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/classes.nib +++ /dev/null @@ -1,34 +0,0 @@ -{ - IBClasses = ( - { - CLASS = FirstResponder; - LANGUAGE = ObjC; - SUPERCLASS = NSObject; - }, - { - CLASS = NSObject; - LANGUAGE = ObjC; - }, - { - ACTIONS = { - finishPrompt = id; - toggleMoreInfo = id; - }; - CLASS = SUUpdatePermissionPrompt; - LANGUAGE = ObjC; - OUTLETS = { - delegate = id; - descriptionTextField = NSTextField; - moreInfoButton = NSButton; - moreInfoView = NSView; - }; - SUPERCLASS = SUWindowController; - }, - { - CLASS = SUWindowController; - LANGUAGE = ObjC; - SUPERCLASS = NSWindowController; - } - ); - IBVersion = 1; -} \ No newline at end of file diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/data.dependency b/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/data.dependency deleted file mode 100644 index b7381f72e4d..00000000000 --- a/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/data.dependency +++ /dev/null @@ -1,10 +0,0 @@ - - - - - IBPaletteDependency - - Controllers - - - diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/info.nib b/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/info.nib deleted file mode 100644 index 7b026327649..00000000000 --- a/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/info.nib +++ /dev/null @@ -1,16 +0,0 @@ - - - - - IBFramework Version - 489.0 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBSystem Version - 9F33 - targetFramework - IBCocoaFramework - - diff --git a/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/mozilla/camino/sparkle/da.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib index 4ef0a8b9be7a9a6d434ed0d3f53fc5096f24b9f0..608faf4b10570185c884d2821940b96cb03844ed 100644 GIT binary patch literal 15232 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
  • }lK*YK8MpW%Svkl~o&xZ#B18^d>olPTJi?3DbJUMVFh(^6_vyeai5 zz7&5-Af+iKlyYmzlPT*{o=bT?WlPGoldgBJ;M&l;qX5)6_ z4&zSaF5`#BFN{AJe>DD{M$?RG8EMWmcUoau&$KaVQ`3BDGt#b2yDsheG?sQ_+WfSe z(*Bk9c-p$O^=TW@Hl}S#+mf~|ZF}0gressLDaX{+)YH`0bh)X&sl-%f8fY49sxS>T zHJGk8-E8`o=~mP2rhl6jneH|%Hmx;%YWm#twdu6!tm!w?AEt9=WF}^6jx#5i&1Q?a zm$|pOulaIwe{-q1+&suU)f_e7WWLS3(0qq^k@;@(V)K3GW9F0QQ|8m=Kg{RTQ_`jM z!t`$GJ<^NQ`=s|vzao8H`km=Z)0d?`p1wBy+4SeqpHJVCzAb%w`i}IS>ATYRq<@xv z%7QG!LM?HYBukpbYUyU_Wht=?w~VlivP`hlT3RgETUJ`uTDDrYS+-kVw7g{bk7bYL z70YXuH!KG&?^-^!d~W&Da>DYBpNYAijazS)?b5@--&)UUWV3n*z*6!Ax)^XN=b*}Y(>oeB3tjBFCTbwPyrm<;li8h@r*(Tb| zHj6FC=CtM7@@!pf#kO+WDBC2P$5w0e+pf3Gvn{qQwQaC%v%PKm%yud}EjuH-U-tOy ziP@90YqCArwb|b6Te8<=@57aOnf-S52ieE%*e=*r_ISJ6uC?pz$@V<^ z751U_;r7w?YWrCGMEhiWjXi9?-M-Mi*1q1p!M@SH$-ddX)&7G0HTxU(x9soO57-ac zf3%;m|7<^N|IPk~{alVYr)$oYIm2=)b4KQj&Z*8Bn=?OWQO+|tTXSB>`90^)obwLs z5F9E;yhH8KI&_X?hu)FmNOhz+%npkq!;$5%IqVLH!{zAg$ai#gxE+O#ZjK&~Vn?}S zqGOU{iesw7=a}JWa)cZa$IXt19IG5V94|XQc6{&n#qq1-cczzL53}>S==)A@mb~Za_Ia{1_oO7KwIHS&a&IQh!owqn|b1rn=;audr+qu|zpYs9d zL(YetYn+ccPdLAEe&;;tJmoy?{K@%?^H=BZ&Oe>!UDzeKRIYfJ+NE{rT*)rIE5()S zN^_ZA7FUKV%Vl%fT@IJaCAo@RVOO(jmaD}z$2He=gDdKq=UU*p*>#KSHrGPe9j-;L zyIqT2_qiT$J>+`W^@wY^Yo%+o>rvO^t|whjyVkj$aqZ8&Ja=|pVP3zyioA(=x9081 zdq3}FeoDSG|H}N9{0H;b3S(D&6jSLZjtVi?vd`5?w1~vmPkvb zWzq_1m9$2BOnO3kN?I$emo`WnrA^XiX{+>t^rG~V^dD)r^s@A-^t!ZHdP{mo+AkfH z-jxnZN2H_DG3mJUiS(KDh4htlN;)l_k^Yp<7otLSp|&uwFtsqJuybMG!U2VqNd6)G RP#Jzyt=F`bZwM8R{C^$=gt`C# literal 12807 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 diff --git a/mozilla/camino/sparkle/da.lproj/Sparkle.strings b/mozilla/camino/sparkle/da.lproj/Sparkle.strings index 1a22f6bdca0a8012adedb9d2547198b91e04fd23..f0a44ab801330855cc4115b3104ad5dd155e24c7 100644 GIT binary patch delta 188 zcmZp0yyCDSfRR0eA(bJIp=5JBV<WdhPfeQ11N*j5iC$D4s!wWS9D5t=XGI=k1KQ}_8WOAcOBv2LG=6xJ@ zSlDyH78Xz5FDWh#vRZ*5i6I9lRt982HBAoWKe~AuUl9kZ2T1W`M={ySf5ZhQi%BMJ JULt;n0{|aXG_3#t delta 229 zcmccO(BQZsfRR6iA)ld~A&(&kNGCF+Yz}7(W#-KVG7Eq(6)2%Ic_WMX<|{0EjIxOg z*$gENr9j~vAg#cV0#=~FPz<6c^RlUOmjcDoftt%0Qa9VPg)_>d84pyb0M(QSG{}Ck zBU}7rJ`NROOm!t7xy^Gp?yyY$$H#;2&dCb}A~(O{{l&rWg6e_E{gT>~{lt 1050 - 10A432 - 732 - 1038 - 437.00 + 10D573 + 785 + 1038.29 + 460.00 com.apple.InterfaceBuilder.CocoaPlugin - 732 + 785 - + com.apple.InterfaceBuilder.CocoaPlugin @@ -410,8 +410,8 @@ 272629760 RGFzIGFub255bWlzaWVydGUgU3lzdGVtcHJvZmlsIGhpbGZ0IHVucyBiZWkgd2VpdGVyZW4gRW50d2lj a2x1bmdlbi4gRsO8ciB3ZWl0ZXJlIEZyYWdlbiB6dW0gYW5vbnltaXNpZXJ0ZW4gU3lzdGVtcHJvZmls -IGvDtm5uZW4gU2llIHNpY2ggYW4gdW5zIHdlbmRlbi4KCkZvbGdlbmRlIEluZm9ybWF0aW9uZW4gd8O8 -cmRlbiDDvGJlcnRyYWdlbjo +IGvDtm5uZW4gU2llIHNpY2ggYW4gdW5zIHdlbmRlbi4KCkRpZXNlIEluZm9ycm1hdGlvbmVuIHfDvHJk +ZW4gYW4gdW5zIGdlc2VuZGV0IHdlcmRlbjo @@ -870,9 +870,21 @@ cmRlbiDDvGJlcnRyYWdlbjo com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -884,7 +896,7 @@ cmRlbiDDvGJlcnRyYWdlbjo com.apple.InterfaceBuilder.CocoaPlugin - {{382, 512}, {365, 254}} + {{134, 540}, {365, 254}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -918,6 +930,7 @@ cmRlbiDDvGJlcnRyYWdlbjo FirstResponder + NSObject IBUserSource @@ -937,12 +950,40 @@ cmRlbiDDvGJlcnRyYWdlbjo id id + + + finishPrompt: + id + + + toggleMoreInfo: + id + + id NSTextField NSButton NSView + + + delegate + id + + + descriptionTextField + NSTextField + + + moreInfoButton + NSButton + + + moreInfoView + NSView + + IBUserSource @@ -959,6 +1000,7 @@ cmRlbiDDvGJlcnRyYWdlbjo 0 + IBCocoaFramework com.apple.InterfaceBuilder.CocoaPlugin.macosx @@ -966,5 +1008,9 @@ cmRlbiDDvGJlcnRyYWdlbjo YES ../Sparkle.xcodeproj 3 + + {128, 128} + {15, 15} + diff --git a/mozilla/camino/sparkle/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/mozilla/camino/sparkle/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib index 30eb15f707560b58ee0797c0a29f4fcbaa35fd8d..0394a79d8a457adc5b4c6a79e1da75196e6fdf32 100644 GIT binary patch delta 5008 zcmb7Id3Y1$_MR=pJp9`=MWT3iRSVN5On*wZ5w zVp#KucDI7vp6_EzkrtP!|RV>Q?y$+>n8lVL_}ColYzZE5`<7VXQ(_#&NzP z^v;QmK-WsNzWNkZj+LOhD)eL|S}U*;F~iV}d=D1Z%{Ab7R1tK;*^q(n!XOmk95@&d zy5Tj*sX?$r+-wZs#o{Gn2XytCUSdk&FjxU;SOX`DqfLIY3=R=%O;cnc$ibnoR7^JK zkmWEePBDjNuc2qd;jme3C$bV&iRo;vVg%aU98R@3pH0I@is#vmGFTFU?2f5;9|HE zEL)L zEnFwIbG?9X5G!1F4O?2kn_(?XEC8CULgAjVnMJ$PnfvGU2B!xUILjEkloMdbGHT(+Eu^)L;D-QJ(MQX`auxSIZGHckdU`bg~RWLM40T023r`>@(g1QUYKsLg|@QAqF8_yjlPZR)iPLE!d!HSIF z;Gz+ss><|mc~wO?6be=>BTtg2#9Q805gnF*@#HsUa zOYv=3Qi~n3mi+DsFL<-wQ0y35Q9=<*L823phOViomYZKr+=aWES0WSffi?4l1@R)( zYn%f$>LrOw~_*;l#5LN!CZcs$C8xA}~pq7Oa zwD@lcLWw|*v?K_>hh0YrdzPR=lpuihMeY?LvI}8WFO;LSzvU>5axv^_j`|?uRe$Cv z5jm5MTq0nnXRdf!T%o+;OTP9LJPA*UZ~0Q(1whj?SX1TfTow$KIMainP<~!TcyL)L z=*%h~91erib<_P_|3lM^{FhA=QCyCGUt;^Gji{;$m$#TI0NTG9j~Dv&EE54zKBIYI(Dw`p}@~W2o;>fuEA{~>7TSQfiRV4jZ zlm5kUMcHVCDGE7z6hF~e7+AzS^!cfHmg$#KR#_YhSB|I%iuv&=Vs=bA83yO-7RU7X z4;-}rA34a+4p#)5>1~cu{58IlxFf-#?B7y4Ped(7`Ca0ic#ksw2_5O-(1>ATqc2%( zAMcFhcSiZ~RXTG=mIo^a{smDUFFZ?k5H>A-c3=9J`=QM;NI=@k#j?@QUk26<%ON+Q z)-V=(8OuW|Z7vN|GQ@5o1GNYzDu)-bOr%B^p(RT2d-!53vIpx-wkGS5c)MaHsJo!b z!MbBzu&$`KW@9fQ4v2 zK}d*Wa*V~?m>)|-Rnw7}Pb?v>l2Vc-ePlA3Nxn>$lGSJyoq}f2MdUiN9yQ<}$v(F! zl9Ez#il&s5ngW!bGEgSULPb$_%85o%59Om`DL>VQ>O`ec8B_sPN>x&0sj1Wq>V0Z0 zwVC>Y+C}X~L+WYj0(FVHPW>v;NuCoQ2)0P7BummqQYaZDDUl48lu9N`rc2(Fd>~mZ zsgvxLd@0#4`C4*NazxT7X_8!)+>$(&;!;W~mCB{Gl#^yi^P~f$rP6BY1nJw-#nKhh z)zY=n_0o;fkENTWTcrD?r==I9KT2;%Z%S`TAIdP9N@kSVWNulKEK}A^HZUR^EGv}_ zk%eUCvf;9kvPrU;viD{4Wea6%WSeB$WjkdjWT#|jWM^gPWxvWE$uT)8SIX^jpS+E{ zojgOHC+{y0%0u!R`E>bQ`3CtG`Cj=6`6>As`C0jS`2+bM@<$3xK`0~&85%O2if)R* ziYmnv#RA28#STTiBCz2cVQj^ZAT(-f_uEi^|5 z=p?!mokjPgi|H!5ny#To(_`r+^g4PAy_McZZ>Q_&o%C*cFTIcciatsoqfgV{(B~K( z<78r)Bqp87WAd4SOc7Je1esTvGA6{7Gs7dyL}oJcCi72b7V|DMpIOK(VwNz6nN!R~ z<|=cIxxw6IZZUV5d(3_2A@f*?D@mnNsa9&0dS$tCigK;;sPdfho{CbbRq?76RTotc z)iBjq)l8MBnxmSlnx|Tz`arcb?_6rzfs1g3#GU=i33 zc7i?NORyh&4Gx0C;Ae0H+y-~S@8AJ=2p((YT9ekUjn=l){zKbQo2pIMW^4Ot^R-3V zA=+x~c>NseRchH z19Sztk-AB`X}Y<(Wx9j9!@5RYlkT|gyzYYTC*9AwUv$^?jNYyH>)Yy6^@H@q`k?+* zeVIO_FV_#(SLmnc*XTFuH|syqf2#jXze8WI-)ZP)2pY-_V+@lFGYv}(%Oi%BhFZgF z!}o?8hDS!Z(O`5K+Zr>C1C7Itqm6GF-!;}6R~y$F*Bdt)KQ?YMZZU2(ZZmE-?lkT; z?ltZ+erLR5yk)#&d~A}NEGCyJ&eYnJXi72lHI21?G zQ=Ms(X^UyAX`5+>sooUXX*y%po1@J!X2G0d?r2Umr<*g)UCdeLuI6lWuDRM=W1elE zW1efCXI@}lWL{!kX5Mc8)%=_J9*eV5R?gC_l2x;S)v?d9MwVvYdvTE*7}|G2kRy4W$P8|Z`RvUL=+Vzjf%*l z=qP2BIw~%zbJW17F;N?$8lrx*$!)-9wmEHnTfmlROR^=~QfyspS+=gWY+I3Sh^^Z8 zx^0qen(ckta@z*mR$IO8r0t>|x6^i;-EEJxr`X%uJJ>tf)9iWnzV_GbHTE~{bM5o& z3+x}*7u!Fw*V#AQKe2ymKM=8Bwcl|V91cgU!|#Z9@D9Pz+L7o;a`bTwbW}SgI;J|N zIc7L!Ic7WFb8K|%avX4+a-4Hqay)WMoHl1GXO^?8GuxT#?B?v@?B%R>PIE4Be&TF! z{^ES>^0>S%pDWfC=kmK+xe{EwtF0@=mF~)Pb#Z06y1IJ1BE_!Zt}!m?n&6u1TIgEp z+T_~dYIL1(U2~Ie;C{i~-re6_;~woE>mKKZ?g{Qm?ppU=_eJ*)?n~~=?kn!A?rZM* z?#G;yb8{Xpnv3D$xK>;Om&Fa>hHxS7HLj8y!Hwp|a^tvJ+!}5zcZfT}HF8bdaqc8{ zx-It&cbU7w{lZ=6ZgRIgT94ji@R&TT$Lg_p+In90lzE1FhIzuC*F2S;5uRn9jh+V2 zY0o!eQ`^LLIo>>PcW+N`Z*Q@8w0Dg6b#KJ`mUoJGx_72m^se-7^X~SZ_x>vyi&jM& zqs`Hl=$L3B`i1C@(Wzp3a-wQe^p@zY(c7Z8NAHc^Cr(aIQg!fk@}>DQe4Tx{zHZ`I z$w__o`@Z%a^d0s!_%8ac$1acE7`rF-NbHr^hjICFWpR7_GJgkuPybZ^9DhSAeSAaw zxddxM`-B%0$`Ym}%uDz@;b_9mgvY#^H}NcQ;W^&RNAo-{h>?`|)b0G|{1^N#eh>d8 zzn}k_Kgb{E8~CIAG5!R9ia*1j<24x{3ZS}e}%uw-{$WIdIw$!^b6z%1_lbn zZ&F%E)&({O>H=E=p9Z!E>I1t1djtCe2Lgu!je%o=;2Y3A={Qv*} delta 4957 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 K$MyL+F#JERG835q diff --git a/mozilla/camino/sparkle/de.lproj/Sparkle.strings b/mozilla/camino/sparkle/de.lproj/Sparkle.strings index 7233e4841204f9f558579370e900641e47bcf02f..e249bd55de552936fe418e15adf850d0ecacf4fc 100644 GIT binary patch delta 19 acmdnuy2W)vs1my_LkUAZgYM)Qr3e5)dIiS- delta 19 acmdnuy2W)vs1myZLkUAZgTmw(r3e5(ss*h8 diff --git a/mozilla/camino/sparkle/es.lproj/SUUpdatePermissionPrompt.nib/designable.nib b/mozilla/camino/sparkle/es.lproj/SUUpdatePermissionPrompt.nib/designable.nib index ea35995cbbb..4acb766cc8b 100644 --- a/mozilla/camino/sparkle/es.lproj/SUUpdatePermissionPrompt.nib/designable.nib +++ b/mozilla/camino/sparkle/es.lproj/SUUpdatePermissionPrompt.nib/designable.nib @@ -2,17 +2,17 @@ 1050 - 10A432 - 732 - 1038 - 437.00 + 10D573 + 785 + 1038.29 + 460.00 com.apple.InterfaceBuilder.CocoaPlugin - 732 + 785 - + com.apple.InterfaceBuilder.CocoaPlugin @@ -31,7 +31,7 @@ 1 2 - {{83, 491}, {471, 169}} + {{83, 472}, {471, 188}} 1886912512 @@ -49,7 +49,7 @@ 257 - {{232, 16}, {225, 32}} + {{232, 12}, {225, 32}} 1 YES @@ -76,7 +76,7 @@ 257 - {{101, 16}, {131, 32}} + {{101, 12}, {131, 32}} YES @@ -97,7 +97,7 @@ 264 - {{104, 115}, {289, 34}} + {{104, 134}, {289, 34}} YES @@ -133,13 +133,13 @@ 266 - {{104, 59}, {348, 42}} + {{104, 78}, {348, 42}} YES 67239424 272629760 - NO LOCALIZAR + Tk8gTE9DQUxJWkFSCmZvbwpiYXI LucidaGrande 11 @@ -153,7 +153,7 @@ 264 - {{104, 54}, {278, 18}} + {{104, 50}, {278, 18}} YES @@ -188,7 +188,7 @@ NeXT Encapsulated PostScript v1.2 pasteboard type NeXT TIFF v4.0 pasteboard type - {{23, 85}, {64, 64}} + {{23, 104}, {64, 64}} YES @@ -208,7 +208,7 @@ 268 - {{83, 51}, {27, 26}} + {{83, 47}, {27, 26}} YES @@ -226,7 +226,7 @@ - {471, 169} + {471, 188} {{0, 0}, {1920, 1178}} @@ -413,7 +413,7 @@ TGEgaW5mb3JtYWNpw7NuIGRlIHBlcmZpbCBkZSBzaXN0ZW1hIGFuw7NuaW1vIHNlIHVzYSBwYXJhIGF5 dWRhcm5vcyBhIHBsYW5lYXIgZWwgdHJhYmFqbyBkZSBkZXNhcnJvbGxvIGZ1dHVyby4gUG9yIGZhdm9y LCBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gbm9zb3Ryb3Mgc2kgdGllbmUgcHJlZ3VudGFzIHNvYnJl -IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Ugbm9zIGVudmlhcsOtYTo +IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Vyw61hIGVudmlhZGE6A @@ -913,9 +913,9 @@ IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Ugbm9zIGVudmlhcsOtYTo com.apple.InterfaceBuilder.CocoaPlugin - {{0, 676}, {471, 169}} + {{0, 657}, {471, 188}} com.apple.InterfaceBuilder.CocoaPlugin - {{0, 676}, {471, 169}} + {{0, 657}, {471, 188}} {213, 107} @@ -928,7 +928,7 @@ IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Ugbm9zIGVudmlhcsOtYTo - 174 + 188 @@ -1003,12 +1003,40 @@ IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Ugbm9zIGVudmlhcsOtYTo id id + + + finishPrompt: + id + + + toggleMoreInfo: + id + + id NSTextField NSButton NSView + + + delegate + id + + + descriptionTextField + NSTextField + + + moreInfoButton + NSButton + + + moreInfoView + NSView + + @@ -1613,6 +1641,13 @@ IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Ugbm9zIGVudmlhcsOtYTo showWindow: id + + showWindow: + + showWindow: + id + + IBFrameworkSource AppKit.framework/Headers/NSWindowController.h @@ -1621,6 +1656,7 @@ IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Ugbm9zIGVudmlhcsOtYTo 0 + IBCocoaFramework com.apple.InterfaceBuilder.CocoaPlugin.macosx @@ -1632,5 +1668,9 @@ IGVzdG8uCgpFc3RhIGVzIGxhIGluZm9ybWFjacOzbiBxdWUgc2Ugbm9zIGVudmlhcsOtYTo YES ../Sparkle.xcodeproj 3 + + {128, 128} + {15, 15} + diff --git a/mozilla/camino/sparkle/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/mozilla/camino/sparkle/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib index ba22e5216d2d7dec240c57a43837d61a80966e58..62f76d909e36b2a7daee17b4c295c4fd4d7ddea1 100644 GIT binary patch delta 5117 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 delta 5322 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 Siy&;B1KQO2`Pbj%9{&wEW|^M= diff --git a/mozilla/camino/sparkle/es.lproj/Sparkle.strings b/mozilla/camino/sparkle/es.lproj/Sparkle.strings index b6c9ec3f7a63876fd36cf9112f3b3437b8041555..e3e9571c09c66b3b66a07c7c492a26086421a07f 100644 GIT binary patch delta 143 zcmaFh{lkmt|G&wJ908N%40d)WhEj%NhUCcx zvZ_pK3Y#bLEa8=RVMt|20%8RQRR%)_6$S?&D+!{GA(5eI@&pmd$^VskCeM^IlFVmF nVJKpF2sA^1Api*R0aixWHfz6Ks|<& NSyaq6KarZu1ptDQAq@Zk diff --git a/mozilla/camino/sparkle/ja.lproj/Sparkle.strings b/mozilla/camino/sparkle/ja.lproj/Sparkle.strings index 3ced3759c35f8549355b252da235f9e9b626acb4..e0b1a004cb248463543eb1d52494d8065a08058c 100644 GIT binary patch delta 50 zcmZ2t(POb;fiRPw?&JqT#gk=4>^YM52LAHXRZyGUAf~x_sz@gz3!E1$c99hT$2bu1 delta 55 zcmeCNSYokZf$-#OLba1cMeO-vLZ@~cgd3z8xERzKL{1hE)85=F(#gn$5Zf#u_J + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + SUAutomaticUpdateAlert + + + FirstResponder + + + NSApplication + + + 1 + 2 + {{114, 521}, {559, 152}} + 1886912512 + + + NSWindow + + + View + + {1.79769e+308, 1.79769e+308} + {511, 152} + + + 256 + + YES + + + 268 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{23, 73}, {64, 64}} + + YES + + 130560 + 33554432 + + NSImage + NSApplicationIcon + + 0 + 0 + 0 + NO + + YES + + + + 268 + {{105, 120}, {389, 17}} + + YES + + 67239424 + 272629760 + + + LucidaGrande-Bold + 13 + 2072 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 270 + {{105, 81}, {435, 31}} + + YES + + 67239424 + 272629760 + + + LucidaGrande + 11 + 3100 + + + + + + + + + 257 + {{376, 12}, {167, 32}} + + YES + + 67239424 + 134217728 + Instalar e Reiniciar + + LucidaGrande + 13 + 1044 + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 257 + {{242, 12}, {134, 32}} + + YES + + 67239424 + 134217728 + Instalar ao Sair + + + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 256 + {{102, 12}, {116, 32}} + + YES + + 67239424 + 134217728 + Não Instalar + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 256 + {{105, 58}, {382, 18}} + + YES + + 67239424 + 131072 + No futuro, transferir e instalar as actualizações automaticamente + + + 1211912703 + 2 + + NSSwitch + + + + 200 + 25 + + + + {559, 152} + + + {{0, 0}, {1280, 778}} + {511, 174} + {1.79769e+308, 1.79769e+308} + + + YES + + + + + YES + + + value: applicationIcon + + + + + + value: applicationIcon + value + applicationIcon + 2 + + + 10 + + + + value: titleText + + + + + + value: titleText + value + titleText + 2 + + + 11 + + + + value: descriptionText + + + + + + value: descriptionText + value + descriptionText + 2 + + + 14 + + + + value: values.SUAutomaticallyUpdate + + + + + + value: values.SUAutomaticallyUpdate + value + values.SUAutomaticallyUpdate + 2 + + + 19 + + + + window + + + + 22 + + + + installNow: + + + + 33 + + + + installLater: + + + + 34 + + + + doNotInstall: + + + + 35 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + Window + + + 6 + + + YES + + + + + + + + + + + + 7 + + + YES + + + + + + 8 + + + YES + + + + + + 9 + + + YES + + + + + + 15 + + + YES + + + + + + 16 + + + YES + + + + + + 17 + + + YES + + + + + + 30 + + + YES + + + + + + 18 + + + Shared Defaults + + + 38 + + + + + 39 + + + + + 40 + + + + + 41 + + + + + 42 + + + + + 43 + + + + + 44 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 15.IBPluginDependency + 15.ImportedFromIB2 + 16.IBPluginDependency + 16.ImportedFromIB2 + 17.IBPluginDependency + 17.ImportedFromIB2 + 18.IBPluginDependency + 18.ImportedFromIB2 + 30.IBPluginDependency + 30.ImportedFromIB2 + 5.IBEditorWindowLastContentRect + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 5.ImportedFromIB2 + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + 7.IBPluginDependency + 7.ImportedFromIB2 + 8.IBPluginDependency + 8.ImportedFromIB2 + 9.IBPluginDependency + 9.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{108, 455}, {559, 152}} + com.apple.InterfaceBuilder.CocoaPlugin + {{108, 455}, {559, 152}} + + + {511, 152} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 44 + + + + YES + + FirstResponder + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + SUAutomaticUpdateAlert + SUWindowController + + YES + + YES + doNotInstall: + installLater: + installNow: + + + YES + id + id + id + + + + IBUserSource + + + + + SUWindowController + NSWindowController + + IBUserSource + + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../Sparkle.xcodeproj + 3 + + diff --git a/mozilla/camino/sparkle/pt_PT.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/mozilla/camino/sparkle/pt_PT.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..e7b0fc200e452f4477eba5abd021fd65703b3b8b GIT binary patch literal 8445 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 D*~_yA literal 0 HcmV?d00001 diff --git a/mozilla/camino/sparkle/pt_PT.lproj/SUStatus.strings b/mozilla/camino/sparkle/pt_PT.lproj/SUStatus.strings new file mode 100755 index 0000000000000000000000000000000000000000..ad32ad706739441536625ae21b96df602ad85d73 GIT binary patch literal 96 zcmezOpFy8Ni$Q_Gk0F>LoFS7Tk0FI2pP?KmqQRgEB&~qhhM@!~Q^JtLkP776f#vdn dA}K(gDOi;j&=f8PB_LE_umxfe%Ni)c1ppVi4MYF{ literal 0 HcmV?d00001 diff --git a/mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.nib/designable.nib b/mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.nib/designable.nib new file mode 100644 index 00000000000..761ba7ce729 --- /dev/null +++ b/mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.nib/designable.nib @@ -0,0 +1,974 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + YES + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + + + YES + 740 + 740 + + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + + + YES + + YES + + + YES + + + + YES + + SUUpdateAlert + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{248, 468}, {650, 370}} + -260571136 + Actualização de Software + NSWindow + + View + + {1.79769e+308, 1.79769e+308} + {586, 370} + + + 256 + + YES + + + 268 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{24, 291}, {64, 64}} + + + YES + + 130560 + 33554432 + + NSImage + NSApplicationIcon + + 0 + 0 + 0 + NO + + YES + + + + 264 + {{106, 338}, {443, 17}} + + + YES + + 67239424 + 272629760 + + + LucidaGrande-Bold + 13 + 2072 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 268 + {{106, 277}, {443, 17}} + + + YES + + 67239424 + 272629760 + Notas de Lançamento: + + LucidaGrande-Bold + 11 + 3357 + + + + + + + + + 289 + {{299, 12}, {166, 32}} + + + YES + + 67239424 + 134217728 + Lembrar Mais Tarde + + LucidaGrande + 13 + 1044 + + + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 288 + {{102, 12}, {152, 32}} + + + YES + + 67239424 + 134217728 + Saltar Esta Versão + + + -2038284033 + 1 + + + + + + 200 + 25 + + + + + 289 + {{465, 12}, {171, 32}} + + + YES + + -2080244224 + 134217728 + Instalar Actualização + + + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 274 + + YES + + + 256 + + YES + + + 274 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple URL pasteboard type + Apple Web Archive pasteboard type + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + WebURLsWithTitlesPboardType + public.png + public.url + public.url-name + + + {{-1, 0}, {521, 197}} + + + + + + + + YES + + YES + WebKitDefaultFixedFontSize + WebKitDefaultFontSize + WebKitMinimumFontSize + + + YES + + + + + + + NO + YES + + + {{1, 1}, {519, 197}} + + + + + {{109, 76}, {521, 199}} + + + {0, 0} + + 67239424 + 0 + + + LucidaGrande + 11 + 16 + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 3 + MCAwLjgwMDAwMDAxAA + + + + 1 + 3 + 0 + NO + + + + 266 + {{106, 302}, {463, 28}} + + + YES + + 67239424 + 4194304 + + + LucidaGrande + 11 + 3100 + + + + + + + + + 256 + {{106, 48}, {442, 18}} + + + YES + + 67239424 + 131072 + No futuro, transferir e instalar as actualizações automaticamente + + + 1211912703 + 2 + + NSSwitch + + + + 200 + 25 + + + + {650, 370} + + + + {{0, 0}, {1280, 778}} + {586, 392} + {1.79769e+308, 1.79769e+308} + + + + YES + + + + + YES + + + value: applicationIcon + + + + + + value: applicationIcon + value + applicationIcon + 2 + + + 9 + + + + value: titleText + + + + + + value: titleText + value + titleText + 2 + + + 11 + + + + releaseNotesView + + + + 32 + + + + skipThisVersion: + + + + 33 + + + + remindMeLater: + + + + 34 + + + + delegate + + + + 50 + + + + window + + + + 69 + + + + hidden: showsReleaseNotes + + + + + + hidden: showsReleaseNotes + hidden + showsReleaseNotes + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 72 + + + + installUpdate: + + + + 77 + + + + value: descriptionText + + + + + + value: descriptionText + value + descriptionText + 2 + + + 103 + + + + description + + + + 105 + + + + value: values.SUAutomaticallyUpdate + + + + + + value: values.SUAutomaticallyUpdate + value + values.SUAutomaticallyUpdate + 2 + + + 135 + + + + hidden: allowsAutomaticUpdates + + + + + + hidden: allowsAutomaticUpdates + hidden + allowsAutomaticUpdates + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 141 + + + + hidden: showsReleaseNotes + + + + + + hidden: showsReleaseNotes + hidden + showsReleaseNotes + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 161 + + + + hidden: showsReleaseNotes + + + + + + hidden: showsReleaseNotes + hidden + showsReleaseNotes + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 164 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + Update Alert (release notes) + + + 6 + + + YES + + + + + + + + + + + + + + 7 + + + YES + + + + + + 10 + + + YES + + + + + + 17 + + + YES + + + + + + 22 + + + YES + + + + + + 23 + + + YES + + + + + + 76 + + + YES + + + + + + 89 + + + YES + + + + + + 101 + + + YES + + + + + + 117 + + + YES + + + + + + 93 + + + Shared Defaults + + + 168 + + + + + 169 + + + + + 170 + + + + + 171 + + + + + 172 + + + + + 173 + + + + + 174 + + + + + 175 + + + + + 18 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 10.IBPluginDependency + 10.ImportedFromIB2 + 101.IBPluginDependency + 101.ImportedFromIB2 + 117.IBPluginDependency + 117.ImportedFromIB2 + 168.IBPluginDependency + 169.IBPluginDependency + 17.IBPluginDependency + 17.ImportedFromIB2 + 170.IBPluginDependency + 171.IBPluginDependency + 172.IBPluginDependency + 173.IBPluginDependency + 174.IBPluginDependency + 175.IBPluginDependency + 18.IBPluginDependency + 18.ImportedFromIB2 + 22.IBPluginDependency + 22.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 5.IBEditorWindowLastContentRect + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 5.ImportedFromIB2 + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + 7.IBPluginDependency + 7.ImportedFromIB2 + 76.IBPluginDependency + 76.ImportedFromIB2 + 89.IBPluginDependency + 89.ImportedFromIB2 + 93.IBPluginDependency + 93.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.WebKitIBPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{84, 29}, {650, 370}} + com.apple.InterfaceBuilder.CocoaPlugin + {{84, 29}, {650, 370}} + + + {586, 370} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 175 + + + + YES + + FirstResponder + NSObject + + IBUserSource + + + + + NSApplication + NSResponder + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + SUUpdateAlert + SUWindowController + + YES + + YES + installUpdate: + remindMeLater: + skipThisVersion: + + + YES + id + id + id + + + + YES + + YES + delegate + description + releaseNotesView + + + YES + id + NSTextField + WebView + + + + IBUserSource + + + + + SUWindowController + NSWindowController + + IBUserSource + + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../Sparkle.xcodeproj + 3 + + diff --git a/mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.nib/keyedobjects.nib b/mozilla/camino/sparkle/pt_PT.lproj/SUUpdateAlert.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..0920a0dfe2da07e1c0e851c1ff1370238a63dda9 GIT binary patch literal 11971 zcmd5?d3+Pqx4-w!Bx#y9ne0uQWJ1Z5y|$%LKt(7}KxtW83T3OIot8jIYLc>p7i4om z5jPZ6EQ=rrh^UB)3NEPVPXPrL!F}IFL_m1w&ZMOj^ymBQz4nuKGIQtLv!CxdGvn(* z!B{*e=ODs}AP(_JgS31OpF7e&MUKXTk?=@=Wc)AehT8I{*+t5;U2f80UfF49^(8FjGdK7I% zPoQVev*-o%GCGVtM!%xp&~fxTI)VN`C()ni6grL0puf;rbPgkoF~J?F^V7s!ibH+hx3P2M5<$pP{{`G9;#J|dr!FUXhVNAeT-nVcYJIi5@5 zES!r==Q6lVt~KZ9uH<@gy}3Tz7;Xx;l)If<#@)f)$=$`>&E3N-=kDe1<5qAhx%;^X zxCgma+(TRgx0+kSt>xBn4|9)jk8QQ+XqA z;sxH!TX-vPcsK9iy}Zc#_*Q%--Pn?ijvY2d0HIKk5aF)h3vLSI1Ir8aRY1u7YVMKxF`W85<;}xK5=U#%IFkD!tvrj zI8ZA`;hS=oN@FfYR7;kN);;%t46Aaa%>#jS|5u?CaXd;z`BBw zjUs^&1{U^-R7CC!@r6?4rRc+54WSAVQi-fD?C|pu~RZml>ks8c6nYyWgrXGU**scK-f?X%0 zFp8i$G!aGN6L0j}(%=jkv|3s}o^2DOQ|MwdI6^921fKyADl=#1=5+1o>ztD}yQ6Pr ze%H<&eR^pQhtH*bN*q zE{Ed@w~j|6p>o(9?kEGn`b0vJC@2MFuZu(>n#?7og@LL`wb4j@xLUbt;qh76w--Xx z1Uk;3X;h%rAKPDz9szzalTBx~ouPmhem{Z(i2Gv&u zs{{R`0nn%FRJWsLa2Jb}26Q_rco*FXwC_T9qkGVDbT7IOtw1YTPzK_GP^6Y^!sKO~ zvtuSNJ1(sYRLNjfL@Rr9*fJ9$5a7%kX^ZY0O;S1Rsrn>v>I+1F(DY2 zsZ-#JbF#ZO{uCgUyR~RtBh?19_G0!P0roa3`?+X3#8YCUCha!gYzuW3<|ODohPElW zg)J-!%AsmzwKeE5^f=m%3P7sfN&;eM6F#c)^CWsIVLauowdhH-13is)q5`lZGd8m@ z%dCo#n>=@PwH&L82J2YdsDz$FyD9}6SS>hyaD6-^gEJ^uFA`mio~V2t?6v@ zpxll2ARk0sPwJ!O2zmv*iuOX}y#|V9QSiDFdvBn9=uPw%`VU0mJ0SG|aM}G34~HuH zgL~C6<5dcl;W3$cTu~%CH4v>H1UP2&kf>ZEN98b7jZwWrA*c+)p*~b7@tQDy-)Nw= zYqn(pzKF!n9D`_h;wt$bef?&!#1l%-6B#X!QAtFCSN8mFN9i#OSde^bgyAIaI z8Z+LfRLAnxXXtbE1^NPdm_# zv=hyym(d)WJF2dJd?;9zT^|iq3U=`6U`P&wn6V+_BOn}OxKi+z$Ro>qWdnHN7sn>v_ueXXIFJ5DT;EzXx;o9c%CWsE{ zTh#J~Ms?MNYgrvTx z3uezAasczlf;Cu+b%>U$1$orKYDkj7nxGt|UFa3m1YwJlQ4eguDOi96kUa^Y0lj=R zPQ^xSqFreL?Y0_&$AQmvr#)y7FgWPunqa&*7!FRZpUmCex_Z8^Tob4dL99=c ztIuCd+|+n6ag%_B6eUV=I?kvRtW7nyZ&1k!f#~$raLKJCiu32xTfA5t2U|9aq6X}P zaK7-Ix;7KH9s%cBwpfGxY947k0m&>XhvYy^E{VhegTb0+IRLlC?UWp_g!ZE3m|(&k zaVMOOFT*)F7w6&5pul|G1$V^-xEt<{d*I9Q6_5dH@Kv}M?u`p^AKVxB!$r719suc1 zt*gTTc0sOJzbGyXS**JAFV2aF=LDQ{_Kejj+Ru?-O$*`md#!XOx z^`%u&Sq`(UDus(yHQo-ePvwGTCva&XJ)%r0X-)hokPMPB+gUkQ>Zf{FX?%J}E)K*d z(cZL>-VAxkKyRW&^hSCM?Jp4PIr#Z`8Whz&w69>Q6w+qS%**fA(U;$~8*|sLU2*^i z6y(gF9TC!?7pp>X=)@Sh2m%ZUKyvyF5Qa}dH$LdpB7kn<022a$I9TyjnSjiOi*X4a z49sW8l*pw0${4$<^@rkNN)2iRbjpg=cqlGaFrpgEm4bU_ZgxTUg09`=4xMv=$L8N= zkDA$~8^bKXYXSh`ku<&mSKv{2G#-P;;&G65D{z1gq{HbbT1jhZ2oi5Hr5`Z3hN~_B zY;T|{EW@W393_Y+GSG%61B~fc9aKQ4o)+tA2}52fw2UDydUYay<2tHahp&TN{Wz=FF3l6*HC!iXhiD#kdcs6K%4!#~!JQsfF!RH3_CZv+yp3Bt+4&V1#FLnFkm=(9JNLS z8#F}`h}{5+HO2EF_!fp34*+tJ;V2F(dR!>sEBIAa!bWJF>baCOuj4mBnm6%VERgi{ zS{h)|w4yaEbRheI6L;?pidPzr+^#H;^JdTf2p>RG@j)~Vzl-0)hZ3#FEPNQhk3Ya4 z;v@JYu*fm|G5!Q1{4@Cf1$F|KD=8f!M}v{-VAViKxzQ;B*02@U$K#Q3qM?Ee-a7=B zpn;PUd0B0}w66?Zwz0O&Z z!1R!It7#P-4_Qa1Rl;82agaQDd^8aC6$gSbUm2h>xtU_oE%;mfo!YZBx(;s}nxTfs zkN7939_pqFTE{=)pYbpMfY$ME_&8)^^_I2xw||P4Kk!K~)u~2PO`t($Dqk~G<>ury znW_sM{ufgbL@*(QLzHOn$3zFI7)(VB*!g$5ngqI<2>DsjRRpF$rQm`g#W|zkoc+K> znWOrkF_)px#8?qZ)EHu-{f1n^1Br!LQ4O&-iZz*rTY6xA*Dg(B6#z>6Z(?N-H}McJ zh~)!uGVwS?tSly$V*UA$J}+{EIuI=ag(o4J9flI&gg7A(iHY|&Rd#6VQPQ4tKx0Wq zwWT1PP=I8!HlJKZa-fHNljNcOBp<}=ik)D?xo9HkPI{2bq3jk$rZLzLaZm;=Z>%l= zeGNl63Fl{dl=)Ny{4lEa2jJ%l@PP^xWZfF;_84|&9tQ*m*VM%1cr1xdg-+*srb~-b z2BUO3otCJ;q$iC(g!a=`jo%B|_dV37_%Z26iXeCrMZb468koKs&hAIjJGFFwO$Atsyn4n3wYEiDVL(dvc>!&!zL2 zCC~-I3duA-QQKJD!XW1#@+yguIH@O7KtGgBCo^yWe}?9hIk;~kSS7nHIRjZTRs9YXxuqxU^-SK|%fYSY|!xMGt)Hqoo_mcq&{`;y1VHu5;x zjsuWJpxzD%#3z6Xl_^glNC8a_WF_`Gp)2VMdOy97E~k{)`YEylRVj74 zbOPkG>Va%`nAp&J^{N)0AvmOxOG63CBXu2x&aOEP1^iPXa?)H$E8g0~4^ws2L@(N=O1~_2C zmX}*h#SXX7^Iq~AX!>=~^gggofc%H0Y-Q>eqYu$lpuz{iT9h`xAZS9c8m10Cd>{eL zxS9k~g^87`mjR?*`a0_hU_wC-l6T1=y7nRR9$ozqIZW3mO>H?-mr`0b+SHiF4cylHE^S*n? zU(NRQ(alYCIK+{EO$U$W49)0_qFc|?F>*q4IxTd|SykO~4)Bsu^l?SE+dv1yA*K?# zjkBuHv|7=0)RKxjK?R<`;R^bsLgfjdGVr{G0vC3JV4)Ug6pX-0To&EAMR4F+z-txI zz2A#I^YH=!cY$odK}xu z*(fyE38-$v_g*M8(7v?TJAm#O5dK23p>VVmob5DC*@>IZ&ERHov$)yZ9PWCKa&x(P z+zs4(ZUMKDTf{BqZscy_Zsu;`mT~YRD&cWl;7~yN+&VYKE&KLKc);8J=jxVc#ME5{!rH7To;HrWmz@ ztiagtDNjQb(L3cvgklhF0uZi(HyC^%bOg3zLNc=dr#K0L6*5sN$leH|e9g3>GWais z0ZeY+kowpJp9-XWZ7=R?6?+c>d&fW(ObN{`|G%>L7*>g)Z}Bl3kA!)#asV78Hdh_) z5*&*X2O;nH}};`ggk)iWuvsV;48kJ8A!vk5VTtgNuwHmX zs8uEu@DSiHp`Y-mutt!Dt->aumEaSC!bZWOh>Z&QEE;b#8sF}`(fE$aF}(M|XY-c< zCLLI)zTeRoo{~54*$ltJAOTRmT%CAa7k!7%<2#QXSeSUL1705qPz-N!TGsdt{Yd#6?3Dx$xy)Vf;W*KnvI6r_9et|cYlHeUAH{Su?N$buJ;)nCs^5gj` zKEzMwDZh}vjlZ4W#&74J5f1Ce=|AzlVgEU0L zYqXjqO*>6z&E=XxO^IfNCa8&OVw!r*RLykFEX^DZ)y&g8sM)A_QnN#|Q}dkWdCiNO zJ(`y_$FxYBqIGHg+B|Jf?Evi zqjrb(MeSbgo7zvcKWoqE^g6T7sBspnH(zK)* zNwbpXByCB0I_a&X50bt}`YGvj(qBnu^+-?joL-~X>67&-dZS*@TlAOdbM>9|UG&}b zJ@i-Td+Ph^2kIy4L;A43P9N3B^;7iI^fUCc^mFu7KTkhjzfiwee}{gfexLrEWJhv- za#8a58x%>6cQHQl1h_nUOLpWljoBnV0fn z%3CQ%Qoc+%ld4a(rglv2o;obGIyIa+D|K<|%G3u^SEV+ju1Q^&x<2)h)J>_IQ@5sW zOMNEwxzy)VUraq>G#S&3t&AOvos4ZOdnt->tk=Yc*JHR+lxy>amK}R@T;5$=b%+ z&f3#D*gDi&Y8_*(v<9pbty8Vky2N^?^?vI*>toja)&tget%t1dTaQ?eT0gdaYCUbs zvE|tcY`tv#Z2fHmZP(a}ZG&w?ZKby1wpq3XwnetZwhgvNY@2MGZCh=R+n%sJWqaDT z->$Rk?G}56-Dl6V`|Vlww)Xb+j`nPOj(x1X(!Si@VBc!rWq-r|k^LL{Z}#K%6ZVt# zQ}#3Va}Mm_92$qtp?6puHiy&Ua%4LEjy8^Vjyy+i#{kC=N3EmIG1YOqW4YrA$4~a=h>O)bY9FPseG;UygH5>~uQ)⤅XIE!8XOVNTbGUPy^Li(B z&U4OpE_B}LyxF+^CRam=jYCEoIg5$cK+%-?mXc<={)5;<2;*oL)tBA%hT>l zTbZ^tZFAa7X|JUnO#43V50}Fwy7F8FuAZ*JuA#0{*KpSe*R`(eTrpR@YpQFyYq9Hg z*9O;C*YmEoUHe@JUGKRLyS{Usah**^=_H*`x2ET$_eifuuS%EGYtw`2lhP-rN7ARI z-<-ZA{nqq*(zm5QoqjO=lMG!(YDUM5E*ZrcWf`H2nHeiH)@7{EcqC&}#^#Kz8QU_p zXS|znB;$8Car17STklSB8{KW(-Q9)m{_bjbjeCN7qC4acyX)LHx>vZLb?FVj`>EXG;)6>(-Q|KA&8R{wXlzS>Xqdl`c zb3D{D&oke%(6iWcljk1Ky`Ghx2RsjXR(oFX?Do9mdBwBW^SWoB=a}akuhyI7P4=dE zjb6cP@pkZD=`HdO@J{tk_s;ar_FnIu>%GCdz`MwMqxWX-67Ox^+r4*q@ABT`z1O?K zd%yQV??c|z-c8=k-mTtU-dDZ*yzhDsiCQs9Ocql_qbP_L(Iz^?G%;Oti(b(uW{Q3> zOKdB)7dwjCVvd+6UM^lKhQ&HDD#pbr;xuuFI7^%(QgNO*UtB0I7H<-75pNZjip#`1 z#kEJR%+yKNdd~KNr6gzZSn0zZZWLe-?igkBcY7lj14yjCj_E ze8k85w7xdJI^Qhc{k{#pM}22n39TM&bv)CVd2Qz8%qf}oX0FS8IrBhkN9&5#lUmRA zd;M+v?fmWio&8<>UHw=2d;6FAm-+AX-|b)Szt6wY|A2p$zrnx8zs|qj|A>E+f3tt9 zf17{1|4IK2|4#q2{$2hT{JZ@x`Cswx^}p`l=YPxpwtv6>p#MGpVgCpIBmOV^UrAl1 zZc-2F3aO{mODdH5N=4ED>1t_^R3Z(LhDl{oxinH5C5@5BN!Lo_rD~~0njlS-LQ+_& zlcG{wnj%e;W=ON7ITDrTN%N(J(qic*=@#i$X{oeKx>LGaS}xrut&|>+R!I%g8fl%h zUV22@ByEj_>1F9v={4yM=}qZB(mT=t>4 ie`KL7Q_jLjJfnG@|1cX`juX$gD##Jfgu0fGjs0#JA5 zMA`;dQ(97!`p(hRL37Sq$DxQe)hm*H;soVX`Is4>e!%M(W!HW1%&2Gd_wX@6b@eBZ z585yJCPTgP3LKv@7n0$F;S>#OD6y?#ZgSq=uX$hWZdpdwiH;m+oG8moRa;+WRp=G) z|3uqOc0)M7!TcJXeALn^Z^)hL`)C!@)0-0+bz-Wem}6N+mg9kRG91e?Q;rsab$4Vi z^+6ZntH<57?nR*6WSGD4dfpVa_9hSh_fq%gCG586Wcjsox2gQRlwsfCdIE#>a6lWF ziXEB}WnInAl~=N6csAtgWAh&jvzSP~dd2=#=jB-*W?Zb!Pno*#nNUxb=M@~a@5l;g xaiu=rveu|eZ%pRW?4wm$eG|)bvJ8)M{K`&Cxox|7`fs8b^9WXs{sF4u9)|z` literal 0 HcmV?d00001 diff --git a/mozilla/camino/sparkle/pt_PT.lproj/SUUpdatePermissionPrompt.nib/designable.nib b/mozilla/camino/sparkle/pt_PT.lproj/SUUpdatePermissionPrompt.nib/designable.nib new file mode 100644 index 00000000000..a5b991b7faa --- /dev/null +++ b/mozilla/camino/sparkle/pt_PT.lproj/SUUpdatePermissionPrompt.nib/designable.nib @@ -0,0 +1,1130 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + SUUpdatePermissionPrompt + + + FirstResponder + + + NSApplication + + + 1 + 2 + {{83, 492}, {446, 168}} + 1886912512 + + + NSWindow + + + View + + {1.79769e+308, 1.79769e+308} + {213, 107} + + + 256 + + YES + + + 257 + {{223, 12}, {209, 32}} + + + 1 + YES + + -2080244224 + 134217728 + Procurar Automaticamente + + LucidaGrande + 13 + 1044 + + + 1 + -2038284033 + 1 + + + DQ + 200 + 25 + + + + + 257 + {{101, 12}, {122, 32}} + + + YES + + 67239424 + 134217728 + Não Procurar + + + -2038284033 + 1 + + + Gw + 200 + 25 + + + + + 264 + {{104, 114}, {289, 34}} + + + YES + + 67239424 + 272629760 + Procurar actualizações automaticamente? + + LucidaGrande-Bold + 13 + 2072 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 266 + {{104, 81}, {315, 42}} + + + YES + + 67239424 + 272629760 + DO NOT LOCALIZE + + LucidaGrande + 11 + 3100 + + + + + + + + + 264 + {{104, 53}, {278, 18}} + + + YES + + -2080244224 + 163840 + Incluir perfil de sistema anónimo + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + + 264 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{23, 84}, {64, 64}} + + + YES + + 130560 + 33554432 + + NSImage + NSApplicationIcon + + 0 + 1 + 0 + YES + + YES + + + + 265 + {{80, 50}, {27, 26}} + + + YES + + 67239424 + 134250496 + + + + -1194573569 + 133 + + + 200 + 25 + + + + {446, 168} + + + + {{0, 0}, {1280, 778}} + {213, 129} + {1.79769e+308, 1.79769e+308} + + + + YES + visibleKey + visibleValue + displayValue + displayKey + + + YES + YES + YES + YES + YES + + + + 266 + + YES + + + 274 + + YES + + + 2304 + + YES + + + 4352 + {353, 113} + + + YES + + + 256 + {{346, 0}, {12, 17}} + + + YES + + 128 + 40 + 1000 + + 75628096 + 2048 + + + + 3 + MC4zMzMzMzI5OQA + + + 6 + System + headerTextColor + + + + + 69336577 + 131072 + Text Cell + + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + + 3 + YES + + + + 219 + 40 + 1000 + + 75628096 + 2048 + + + + + + + 69336577 + 131072 + Text Cell + + + + + + 3 + YES + + + + 3 + 2 + + + 6 + System + gridColor + + 3 + MC41AA + + + 14 + -759169024 + + + 4 + 15 + 0 + NO + 0 + + + {{1, 1}, {353, 113}} + + + + + + 6 + System + controlBackgroundColor + + + 4 + + + + -2147483392 + {{-22, 1}, {11, 125}} + + + 256 + + _doScroller: + 0.78125 + + + + -2147483392 + {{-100, -100}, {345, 11}} + + + 257 + + _doScroller: + 0.99047619104385376 + + + {{4, 5}, {355, 115}} + + + + 530 + + + + AAAAAAAAAABBgAAAQYAAAA + + + + 266 + {{1, 128}, {358, 70}} + + + YES + + 67239424 + 272629760 + QSBpbmZvcm1hw6fDo28gYW7Ds25pbWEgZG8gcGVyZmlsIGRlIHNpc3RlbWEgw6kgdXNhZGEgcGFyYSBu +byBmdXR1cm8gbm9zIGFqdWRhciBhIHBsYW5lYXIgbyB0cmFiYWxobyBkZSBkZXNlbnZvbHZpbWVudG8u +IFBvciBmYXZvciBjb250YWN0ZS1ub3Mgc2UgdGl2ZXIgYWxndW1hIHF1ZXN0w6NvIGFjZXJjYSBkZXN0 +ZSBhc3N1bnRvLgoKRXN0YSDDqSBhIGluZm9ybWHDp8OjbyBxdWUgc2VyaWEgZW52aWFkYTo + + + + + + + + {362, 205} + + + NSView + NSResponder + + + + YES + SUIncludeProfile + SUSendProfileInfo + + YES + + + + + YES + + + contentArray: systemProfileInformationArray + + + + + + contentArray: systemProfileInformationArray + contentArray + systemProfileInformationArray + 2 + + + 25 + + + + window + + + + 126 + + + + moreInfoView + + + + 127 + + + + value: icon + + + + + + value: icon + value + icon + 2 + + + 130 + + + + toggleMoreInfo: + + + + 131 + + + + moreInfoButton + + + + 132 + + + + descriptionTextField + + + + 133 + + + + hidden: shouldAskAboutProfile + + + + + + hidden: shouldAskAboutProfile + hidden + shouldAskAboutProfile + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 139 + + + + hidden: shouldAskAboutProfile + + + + + + hidden: shouldAskAboutProfile + hidden + shouldAskAboutProfile + + NSValueTransformerName + NSNegateBoolean + + 2 + + + 143 + + + + finishPrompt: + + + + 144 + + + + finishPrompt: + + + + 145 + + + + value: shouldSendProfile + + + + + + value: shouldSendProfile + value + shouldSendProfile + + YES + + YES + NSNullPlaceholder + NSValidatesImmediately + + + YES + + + + + 2 + + + 148 + + + + value: promptDescription + + + + + + value: promptDescription + value + promptDescription + 2 + + + 161 + + + + value: arrangedObjects.displayValue + + + + + + value: arrangedObjects.displayValue + value + arrangedObjects.displayValue + 2 + + + 173 + + + + value: arrangedObjects.displayKey + + + + + + value: arrangedObjects.displayKey + value + arrangedObjects.displayKey + 2 + + + 174 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 5 + + + YES + + + + Profile Info + + + 6 + + + YES + + + + + + + + + + + + 13 + + + YES + + + + + + 14 + + + YES + + + + + + 32 + + + YES + + + + + + 33 + + + YES + + + + + + 34 + + + YES + + + + + + 37 + + + YES + + + + + + 71 + + + YES + + + + + + 24 + + + Array Controller + + + 39 + + + YES + + + + + MoreInfoView + + + 40 + + + YES + + + + + + + + 41 + + + YES + + + + + + + 42 + + + YES + + + + + + 43 + + + + + 44 + + + YES + + + + + + 45 + + + + + 46 + + + YES + + + + + + 49 + + + User Defaults Controller + + + 176 + + + + + 177 + + + + + 178 + + + + + 179 + + + + + 180 + + + + + 181 + + + + + 182 + + + + + 183 + + + + + 184 + + + + + 185 + + + + + + + YES + + YES + -3.IBPluginDependency + -3.ImportedFromIB2 + 13.IBPluginDependency + 13.ImportedFromIB2 + 14.IBPluginDependency + 14.ImportedFromIB2 + 184.IBShouldRemoveOnLegacySave + 185.IBShouldRemoveOnLegacySave + 24.IBPluginDependency + 24.ImportedFromIB2 + 32.IBPluginDependency + 32.ImportedFromIB2 + 33.IBPluginDependency + 33.ImportedFromIB2 + 34.IBPluginDependency + 34.ImportedFromIB2 + 37.IBPluginDependency + 37.ImportedFromIB2 + 39.IBEditorWindowLastContentRect + 39.IBPluginDependency + 39.ImportedFromIB2 + 40.IBPluginDependency + 40.ImportedFromIB2 + 41.IBPluginDependency + 41.ImportedFromIB2 + 42.IBPluginDependency + 42.ImportedFromIB2 + 43.IBPluginDependency + 43.ImportedFromIB2 + 44.IBPluginDependency + 44.ImportedFromIB2 + 45.IBPluginDependency + 45.ImportedFromIB2 + 46.IBPluginDependency + 46.ImportedFromIB2 + 49.IBPluginDependency + 49.ImportedFromIB2 + 5.IBEditorWindowLastContentRect + 5.IBPluginDependency + 5.IBWindowTemplateEditedContentRect + 5.ImportedFromIB2 + 5.windowTemplate.hasMinSize + 5.windowTemplate.minSize + 6.IBPluginDependency + 6.ImportedFromIB2 + 71.IBPluginDependency + 71.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{155, 294}, {362, 205}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{108, 557}, {446, 168}} + com.apple.InterfaceBuilder.CocoaPlugin + {{108, 557}, {446, 168}} + + + {213, 107} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 185 + + + + YES + + FirstResponder + + IBUserSource + + + + + NSObject + + IBUserSource + + + + + SUUpdatePermissionPrompt + SUWindowController + + YES + + YES + finishPrompt: + toggleMoreInfo: + + + YES + id + id + + + + YES + + YES + delegate + descriptionTextField + moreInfoButton + moreInfoView + + + YES + id + NSTextField + NSButton + NSView + + + + IBUserSource + + + + + SUWindowController + NSWindowController + + IBUserSource + + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../Sparkle.xcodeproj + 3 + + diff --git a/mozilla/camino/sparkle/pt_PT.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/mozilla/camino/sparkle/pt_PT.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib new file mode 100644 index 0000000000000000000000000000000000000000..e32d8a410de361dddaae73967defc44c1e0fff26 GIT binary patch literal 15665 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 literal 0 HcmV?d00001 diff --git a/mozilla/camino/sparkle/relaunch.m b/mozilla/camino/sparkle/relaunch.m index e693e37767b..415c356dcae 100644 --- a/mozilla/camino/sparkle/relaunch.m +++ b/mozilla/camino/sparkle/relaunch.m @@ -1,20 +1,28 @@ #import -#include +#import @interface TerminationListener : NSObject { +@private const char *executablePath; pid_t parentProcessId; } -- (void) relaunch; +- (void)relaunch __dead2; @end @implementation TerminationListener +- (void)watchdog:(NSTimer *)timer +{ + ProcessSerialNumber psn; + if (GetProcessForPID(parentProcessId, &psn) == procNotFound) + [self relaunch]; +} + - (id) initWithExecutablePath:(const char *)execPath parentProcessId:(pid_t)ppid { self = [super init]; @@ -29,21 +37,19 @@ return self; } -- (void)watchdog:(NSTimer *)timer -{ - ProcessSerialNumber psn; - if (GetProcessForPID(parentProcessId, &psn) == procNotFound) - [self relaunch]; -} - - (void) relaunch { [[NSWorkspace sharedWorkspace] openFile:[[NSFileManager defaultManager] stringWithFileSystemRepresentation:executablePath length:strlen(executablePath)]]; + NSString* path = NSTemporaryDirectory(); + if (path) + { + path = [path stringByAppendingPathComponent:@"relaunch"]; #if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 - [[NSFileManager defaultManager] removeFileAtPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"relaunch"] handler:nil]; + [[NSFileManager defaultManager] removeFileAtPath:path handler:nil]; #else - [[NSFileManager defaultManager] removeItemAtPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"relaunch"] error:NULL]; + [[NSFileManager defaultManager] removeItemAtPath:path error:nil]; #endif + } exit(0); } diff --git a/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib b/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib deleted file mode 100644 index 4b1ab30e5b5..00000000000 --- a/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib +++ /dev/null @@ -1,50 +0,0 @@ - - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - ACTIONS - - doNotInstall - id - installLater - id - installNow - id - - CLASS - SUAutomaticUpdateAlert - LANGUAGE - ObjC - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib b/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib deleted file mode 100644 index 2b3d4257668..00000000000 --- a/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib b/mozilla/camino/sparkle/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib index 1d4655c593e467e2972b1800808d53a152f4e56b..2b40ed6d74eef6181ece197cd1afd12292d59442 100644 GIT binary patch literal 8751 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 - - - - IBClasses - - - CLASS - SUWindowController - LANGUAGE - ObjC - SUPERCLASS - NSWindowController - - - CLASS - NSApplication - LANGUAGE - ObjC - SUPERCLASS - NSResponder - - - ACTIONS - - installUpdate - id - remindMeLater - id - skipThisVersion - id - - CLASS - SUUpdateAlert - LANGUAGE - ObjC - OUTLETS - - delegate - id - description - NSTextField - releaseNotesView - WebView - - SUPERCLASS - SUWindowController - - - CLASS - FirstResponder - LANGUAGE - ObjC - SUPERCLASS - NSObject - - - CLASS - NSObject - LANGUAGE - ObjC - - - IBVersion - 1 - - diff --git a/mozilla/camino/sparkle/ru.lproj/SUUpdateAlert.nib/info.nib b/mozilla/camino/sparkle/ru.lproj/SUUpdateAlert.nib/info.nib deleted file mode 100644 index 2b3d4257668..00000000000 --- a/mozilla/camino/sparkle/ru.lproj/SUUpdateAlert.nib/info.nib +++ /dev/null @@ -1,20 +0,0 @@ - - - - - IBFramework Version - 670 - IBLastKnownRelativeProjectPath - ../Sparkle.xcodeproj - IBOldestOS - 5 - IBOpenObjects - - 6 - - IBSystem Version - 9E17 - targetFramework - IBCocoaFramework - - diff --git a/mozilla/camino/sparkle/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib b/mozilla/camino/sparkle/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib index 103b1cf8478a00db14aafa192b05f1868c294c9f..52bed5e13418115c5b1648c24335f0b43706a21c 100644 GIT binary patch literal 12116 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 x?sE5Zx8Ggsp6Q)x)Zw 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 SGKqLr0)Ocjh TS?qxd9a*ecoHxH>UdIFg{;& 1050 - 10A432 + 10B504 732 - 1038 + 1038.2 437.00 com.apple.InterfaceBuilder.CocoaPlugin 732 - - - + com.apple.InterfaceBuilder.CocoaPlugin - - + + SUUpdatePermissionPrompt - + FirstResponder - + NSApplication - + 1 2 - {{83, 492}, {470, 168}} + {{83, 492}, {438, 168}} 1886912512 @@ -39,67 +37,70 @@ View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} - - + + 256 - - + + 257 - {{255, 12}, {201, 32}} - + {{216, 12}, {208, 32}} + + 1 YES - + -2080244224 134217728 Проверять автоматически - + LucidaGrande 13 1044 - + 1 -2038284033 1 - + DQ 200 25 - - + + 257 - {{138, 12}, {117, 32}} - + {{88, 12}, {128, 32}} + + YES - + 67239424 134217728 Не проверять - - + + -2038284033 1 - + Gw 200 25 - - + + 264 {{104, 114}, {289, 34}} - + + YES - + 67239424 272629760 Проверять обновления автоматически? @@ -108,34 +109,35 @@ 13 2072 - - + + 6 System controlColor - + 3 - MC42NjY2NjY2NjY3AA + MC42NjY2NjY2ODY1AA - + 6 System controlTextColor - + 3 MAA - - + + 266 {{104, 81}, {315, 42}} - + + YES - + 67239424 272629760 DO NOT LOCALIZE @@ -144,23 +146,24 @@ 11 3100 - - - + + + - - + + 264 {{104, 53}, {278, 18}} - + + YES - + -2080244224 163840 - Отправлять информацию о системе + Включать анонимную информацию о системе - + 1211912703 2 @@ -176,8 +179,8 @@ 25 - - + + 264 Apple PDF pasteboard type @@ -188,9 +191,10 @@ NeXT TIFF v4.0 pasteboard type {{23, 84}, {64, 64}} - + + YES - + 130560 33554432 @@ -204,18 +208,19 @@ YES - - + + 265 {{80, 50}, {27, 26}} - + + YES - + 67239424 134250496 - - + + -1194573569 133 @@ -225,13 +230,15 @@ - {470, 168} + {438, 168} + + - {{0, 0}, {1440, 878}} + {{0, 0}, {1280, 778}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} - + visibleKey visibleValue @@ -245,23 +252,24 @@ YES YES - + 266 - - + + 274 - - + + 2304 - - + + 4352 - {353, 113} - + {353, 99} + + YES @@ -269,7 +277,7 @@ {{346, 0}, {12, 17}} - + 128 40 1000 @@ -278,39 +286,39 @@ 2048 - + 3 - MC4zMzMzMzI5OQA + MC4zMzMzMzI5ODU2AA - + 6 System headerTextColor - + - + 69336577 131072 Text Cell - - + + 6 System textBackgroundColor - + 3 MQA - + 3 YES - + - + 219 40 1000 @@ -319,26 +327,26 @@ 2048 - - + + - + 69336577 131072 Text Cell - - - + + + 3 YES - + 3 2 - + 6 System @@ -359,71 +367,83 @@ 0 - {{1, 1}, {353, 113}} - - - + {{1, 1}, {353, 99}} + + + + 6 System controlBackgroundColor - + 4 - - + + -2147483392 {{-22, 1}, {11, 125}} - + + 256 - + _doScroller: 0.78125 - - + + -2147483392 {{-100, -100}, {345, 11}} - + + 257 - + _doScroller: 0.99047619104385376 - {{4, 5}, {355, 115}} - - + {{4, 5}, {355, 101}} + + + 530 - - - + + + AAAAAAAAAABBgAAAQYAAAA - - + + 266 - {{1, 128}, {358, 70}} - + {{1, 114}, {358, 84}} + + YES - + 67239424 272629760 - Информация о системе помогает нам планировать дальнейшее развитие программы. Следующая информация будет отправлена: + 0JDQvdC+0L3QuNC80L3QsNGPINC40L3RhNC+0YDQvNCw0YbQuNGPINC+INGB0LjRgdGC0LXQvNC1INC4 +0YHQv9C+0LvRjNC30YPQtdGC0YHRjywg0YfRgtC+0LHRiyDQv9C+0LzQvtGH0Ywg0L3QsNC8INC/0LvQ +sNC90LjRgNC+0LLQsNGC0Ywg0LTQsNC70YzQvdC10LnRiNC10LUg0YDQsNC30LLQuNGC0LjQtSDQv9GA +0L7Qs9GA0LDQvNC80YsuINCf0L7QttCw0LvRg9C50YHRgtCwLCDRgdCy0Y/QttC40YLQtdGB0Ywg0YEg +0L3QsNC80Lgg0LXRgdC70Lgg0YMg0JLQsNGBINC10YHRgtGMINC60LDQutC40LUt0LvQuNCx0L4g0LLQ +vtC/0YDQvtGB0Ysg0L/QviDRjdGC0L7QvNGDINC/0L7QstC+0LTRgy4KCtCh0LvQtdC00YPRjtGJ0LDR +jyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQsdGD0LTQtdGCINC+0YLQv9GA0LDQstC70LXQvdCwOg - - - + + + {362, 205} + NSView NSResponder - + SUIncludeProfile SUSendProfileInfo @@ -436,11 +456,11 @@ contentArray: systemProfileInformationArray - - + + - - + + contentArray: systemProfileInformationArray contentArray systemProfileInformationArray @@ -452,27 +472,27 @@ window - - + + 126 moreInfoView - - + + 127 value: icon - - + + - - + + value: icon value icon @@ -484,35 +504,35 @@ toggleMoreInfo: - - + + 131 moreInfoButton - - + + 132 descriptionTextField - - + + 133 hidden: shouldAskAboutProfile - - + + - - + + hidden: shouldAskAboutProfile hidden shouldAskAboutProfile @@ -528,11 +548,11 @@ hidden: shouldAskAboutProfile - - + + - - + + hidden: shouldAskAboutProfile hidden shouldAskAboutProfile @@ -548,27 +568,27 @@ finishPrompt: - - + + 144 finishPrompt: - - + + 145 value: shouldSendProfile - - + + - - + + value: shouldSendProfile value shouldSendProfile @@ -584,11 +604,11 @@ value: promptDescription - - + + - - + + value: promptDescription value promptDescription @@ -600,11 +620,11 @@ value: arrangedObjects.displayValue - - + + - - + + value: arrangedObjects.displayValue value arrangedObjects.displayValue @@ -616,11 +636,11 @@ value: arrangedObjects.displayKey - - + + - - + + value: arrangedObjects.displayKey value arrangedObjects.displayKey @@ -635,230 +655,230 @@ 0 - + -2 - + File's Owner -1 - + First Responder -3 - + Application 5 - + - + Profile Info 6 - + - - - - - - - + + + + + + + - + 13 - + - + - + 14 - + - + - + 32 - + - + - + 33 - + - + - + 34 - + - + - + 37 - + - + - + 71 - + - + - + 24 - + Array Controller 39 - + - - + + MoreInfoView 40 - + - - - + + + - + 41 - + - - + + - + 42 - + - + - + 43 - - + + 44 - + - + - + 45 - - + + 46 - + - + - + 49 - + User Defaults Controller - 163 - - + 176 + + - 164 - - + 177 + + - 165 - - + 178 + + - 166 - - + 179 + + - 167 - - + 180 + + - 168 - - + 181 + + - 169 - - + 182 + + - 170 - - + 183 + + - 171 - - + 184 + + - 172 - - + 185 + + @@ -869,8 +889,18 @@ com.apple.InterfaceBuilder.CocoaPlugin - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -881,7 +911,7 @@ com.apple.InterfaceBuilder.CocoaPlugin - {{399, 203}, {362, 205}} + {{934, 245}, {362, 205}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -900,7 +930,9 @@ com.apple.InterfaceBuilder.CocoaPlugin + {{853, 636}, {438, 168}} com.apple.InterfaceBuilder.CocoaPlugin + {{853, 636}, {438, 168}} {213, 107} @@ -913,66 +945,18 @@ - 174 + 185 FirstResponder + NSObject IBUserSource - - NSObject - - IBProjectSource - SUAppcast.h - - - - NSObject - - IBProjectSource - SUAutomaticUpdateAlert.h - - - - NSObject - - IBProjectSource - SUInstaller.h - - - - NSObject - - IBProjectSource - SUUnarchiver.h - - - - NSObject - - IBProjectSource - SUUpdateAlert.h - - - - NSObject - - IBProjectSource - SUUpdatePermissionPrompt.h - - - - NSObject - - IBProjectSource - SUUpdater.h - - NSObject @@ -993,24 +977,11 @@ NSButton NSView - - - - SUUpdatePermissionPrompt - SUWindowController IBUserSource - - SUWindowController - NSWindowController - - IBProjectSource - SUWindowController.h - - SUWindowController NSWindowController @@ -1020,599 +991,12 @@ - - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h - - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSUserInterfaceItemSearching.h - - - - NSArrayController - NSObjectController - - IBFrameworkSource - AppKit.framework/Headers/NSArrayController.h - - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h - - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h - - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h - - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSController - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSController.h - - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h - - - - NSImageCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSImageCell.h - - - - NSImageView - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSImageView.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObjectScripting.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPortCoder.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptObjectSpecifiers.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptWhoseTests.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLDownload.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebDownload.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebEditingDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebFrameLoadDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebJavaPlugIn.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebPlugin.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebPluginContainer.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebPolicyDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebResourceLoadDelegate.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebScriptObject.h - - - - NSObject - - IBFrameworkSource - WebKit.framework/Headers/WebUIDelegate.h - - - - NSObjectController - NSController - - IBFrameworkSource - AppKit.framework/Headers/NSObjectController.h - - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h - - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h - - - - NSTableColumn - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableColumn.h - - - - NSTableView - NSControl - - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h - - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h - - - - NSUserDefaultsController - NSController - - IBFrameworkSource - AppKit.framework/Headers/NSUserDefaultsController.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - - - - NSView - NSResponder - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h - - - - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h - - - - NSWindowController - NSResponder - - showWindow: - id - - - IBFrameworkSource - AppKit.framework/Headers/NSWindowController.h - - - 0 com.apple.InterfaceBuilder.CocoaPlugin.macosx - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - YES ../Sparkle.xcodeproj 3 diff --git a/mozilla/camino/sparkle/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib b/mozilla/camino/sparkle/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib index 5bff1961ae5c0d36da1db02520584e7bd2aa85fe..1f62b55875e65038b39c4fa0c455e14d9e614dcd 100644 GIT binary patch literal 15767 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 K{%!ltuJ|v{cwyfF literal 14999 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 diff --git a/mozilla/camino/sparkle/ru.lproj/Sparkle.strings b/mozilla/camino/sparkle/ru.lproj/Sparkle.strings index d9300a4c459178762d7ebaad4cbabe7aacac6c7b..2a76d394c61a118844fc2967dd566db7bcaf8d28 100644 GIT binary patch delta 38 ucmZ4ExW;iqw>+cJBsTBKyj(GpjTMX-g(k0Im!GW8rogVppu}L!zy$!{UI{$_ delta 39 ucmZ4ExW;iqxBTS)tUi-@xnd?8D;NRUT$8u5i%nK%Q()I)P-3uV-~s?8HVe1_