static int Finish_;
static bool RestartSubstrate_;
+static bool UpgradeCydia_;
static NSArray *Finishes_;
#define SpringBoard_ "/System/Library/LaunchDaemons/com.apple.SpringBoard.plist"
static time_t now_;
bool IsWildcat_;
-static CGFloat ScreenScale_;
+CGFloat ScreenScale_;
static NSString *Idiom_;
static _H<NSString> Firmware_;
static NSString *Major_;
} }
- (NSArray *) warnings {
+@synchronized (database_) {
+ if ([database_ era] != era_ || file_.end())
+ return nil;
+
NSMutableArray *warnings([NSMutableArray arrayWithCapacity:4]);
const char *name(iterator_.Name());
}
return [warnings count] == 0 ? nil : warnings;
-}
+} }
- (NSArray *) applications {
NSString *me([[NSBundle mainBundle] bundleIdentifier]);
issues_ = [NSMutableArray arrayWithCapacity:4];
+ UpgradeCydia_ = false;
+
for (Package *package in packages) {
pkgCache::PkgIterator iterator([package iterator]);
NSString *name([package id]);
[removes addObject:name];
}
+ if ([name isEqualToString:@"cydia"])
+ UpgradeCydia_ = true;
+
substrate_ |= DepSubstrate(policy->GetCandidateVer(iterator));
substrate_ |= DepSubstrate(iterator.CurrentVer());
}
if ([context isEqualToString:@"modify"]) {
if (button != [sheet cancelButtonIndex]) {
- [self performSelector:@selector(_clickButtonWithName:) withObject:buttons_[button].first afterDelay:0];
+ if (IsWildcat_)
+ [self performSelector:@selector(_clickButtonWithName:) withObject:buttons_[button].first afterDelay:0];
+ else
+ [self _clickButtonWithName:buttons_[button].first];
}
- [sheet dismissWithClickedButtonIndex:-1 animated:YES];
+ [sheet dismissWithClickedButtonIndex:button animated:YES];
}
}
if (NSData *data = [NSPropertyListSerialization dataFromPropertyList:Metadata_ format:NSPropertyListBinaryFormat_v1_0 errorDescription:&error]) {
_trace();
NSError *error(nil);
- if (!_root([data writeToFile:@"/var/lib/cydia/metadata.plist" options:NSAtomicWrite error:&error]));
+ if (!_root([data writeToFile:@"/var/lib/cydia/metadata.plist" options:NSAtomicWrite error:&error]))
NSLog(@"failure to save metadata data: %@", error);
_trace();
bool recently = false;
if (update != nil) {
NSTimeInterval interval([update timeIntervalSinceNow]);
- if (interval <= 0 && interval > -(15*60))
+ if (interval > -(15*60))
recently = true;
}
[self setApplicationIconBadgeNumber:0];
}
+ Queuing_ = false;
[self _updateData];
if (hud != nil)
- (void) _uicache {
_trace();
- system("/usr/bin/uicache");
+
+ if (UpgradeCydia_ && Finish_ > 0) {
+ setreugid(0, 0);
+ system("su -c /usr/bin/uicache mobile");
+ } else {
+ system("/usr/bin/uicache");
+ }
+
_trace();
}
}
- (void) applicationDidEnterBackground:(UIApplication *)application {
+ if (kCFCoreFoundationVersionNumber < 1000 && [self isSafeToSuspend])
+ return [self terminateWithSuccess];
[self saveState];
}
return;
NSTimeInterval interval([closed timeIntervalSinceNow]);
- // XXX: Is 10 minutes the optimal time here?
- if (interval > -(10*60))
- return;
- if (!IsReachable("cydia.saurik.com"))
- return;
+ if (interval <= -(30)) {
+ [tabbar_ setSelectedIndex:0];
+ [[[tabbar_ viewControllers] objectAtIndex:0] popToRootViewControllerAnimated:NO];
+ }
- [tabbar_ beginUpdate];
- [appcache_ reloadURLWithCache:YES];
+ if (interval <= -(15)) {
+ if (IsReachable("cydia.saurik.com")) {
+ [tabbar_ beginUpdate];
+ [appcache_ reloadURLWithCache:YES];
+ }
+ }
}
- (void) setConfigurationData:(NSString *)data {
NSDate *closed = [Metadata_ objectForKey:@"LastClosed"];
if (valid && closed != nil) {
NSTimeInterval interval([closed timeIntervalSinceNow]);
- // XXX: Is 30 minutes the optimal time here?
if (interval <= -(30*60))
valid = NO;
}
_root(CydiaWriteSources());
_trace();
- _root(MetaFile_.Open("/var/lib/cydia/metadata.cb0"));
+ mkdir("/var/mobile/Library/Cydia", 0755);
+ MetaFile_.Open("/var/mobile/Library/Cydia/metadata.cb0");
_trace();
if (Packages_ != nil) {
/*if (substrate && access("/Library/MobileSubstrate/MobileSubstrate.dylib", F_OK) == 0)
dlopen("/Library/MobileSubstrate/MobileSubstrate.dylib", RTLD_LAZY | RTLD_GLOBAL);*/
+ if (kCFCoreFoundationVersionNumber > 1000)
+ for (const char *path : (const char *[]) {"/var/lib", "/var/cache"})
+ _root(system([[NSString stringWithFormat:@"/usr/libexec/cydia/setnsfpn %s", path] UTF8String]));
+
int version([[NSString stringWithContentsOfFile:@"/var/lib/cydia/firmware.ver"] intValue]);
if (access("/User", F_OK) != 0 || version != 6) {