- changed some #include to #import - fixed some NULL -> nil Cocoa coding conventions - added new compiler warnings and fixed some warnings they generated - check for nil from NSTemporaryDirectory - added missing files to unit test and test app targets - added xcconfig files for unit test target - added @private to some ivars - changes some variables from signed to unsigned as appropriate - changed from base 2 to base 10 measurements of file size, consistent with both the actual meaning of metric prefixes and Apple's new policy as of 10.6 - reduced some unneeded copy-paste of code - fixed failure to check for null from malloc and unneeded check against null before calling free - OSErr was incorrectly used instead of OSStatus - added some consts & statics to global strings - fixed some issues discovered by static analysis - fixed some 64bit issues, mostly related to casting and the use of slightly incorrect types/sizes - some dealloc methods were using accessors, changed to access ivars directly, as per Apple guidelines - removed old NS_DURING, NS_HANDLER, NS_ENDHANDLER macros - fixed a bug where immutable data was being mutated - removed all instance of "== YES" as they are dangerous - removed some redundant nil checks - fixed some leaks - conditionally replaced deprecated method usage - cleanup CF/NSMakeCollectable usage - fixed bug in GC where memory could be collected too early due to lack of strong references when using UTF8String - prevent passing null to CFRelease
…nsmitted over SSL but is from a malicious server. Now the download has to be transmitted over SSL *and* the download's host has to be the same as the appcast's.
…ter's delegate from within the update driver. Update drivers now have an initWithUpdater: method which I use instead.
Fixes from Matt Stevens: "For background applications (menu bar, completely UI-less, etc) there are a couple of issues with Sparkle notifications: - When prompts such as the initial prompt to enable update checking are displayed they can be hidden behind other windows since the background app is not in focus. This can cause problems, as these prompts run modally and can stop the application from functioning without the user knowing why. - If the update notification window is displayed and the user clicks away to another application, the window disappears and there is no way to get it back since there is no other UI to cause the app to activate. In this case the update should probably operate as a standard window since it is effectively operating as the application's UI."
Made a first crack at redifining the SUUpdater delegate protocol. Still not sure about a couple things, so please don't change your delegate methods to conform until this gets merged into trunk. Also made the SUUpdateDrivers not have the updater's delegate as their delegate (that was really icky). Now they're just coupled with the SUUpdater, which is icky as well, but less icky, at least.
…Sparkle. More super-unstable refactorings to come...
… know it's done.
…actoring. Please read: - Broke out SUUpdater functionality into update drivers. There's a basic one from which everything else inherits, then a user-initiated one, an automatic one, and a scheduled one. It's super-clean-and-shiny. - Destroyed the abomination that was SUStatusChecker. In its place is SUProbingUpdateDriver, which is like 10 lines long. - Made automatic installation less stupid. It used to install, THEN offer to relaunch. That's dumb, beacuse if the user says no, the app is running from the trash. Now it offers to install and relaunch or to install on quit. - Renamed like every method and symbol. I hope you didn't branch anything. - Reorganized the project hierarchy to be much clearer and easier to navigate. - Reworked the error system to no use NSError instead of exceptions; extra technical information is now logged to the console so that we can find problems. - A bunch of other small bugfixes in things I noticed along the way but no longer remember. - Probably a ton of other stuff. Read over the code and see what I've done. Then PLEASE test this with your app internally and let me know how it goes. This revision is hereby NOT YET DECLARED SAFE FOR PUBLIC RELEASE. But because I'm still using SVN, this is how things have to be.