From d5cbc33b406118a4a45734fe23ee58b2e59bfa5f Mon Sep 17 00:00:00 2001 From: Ryan Burke Date: Mon, 10 Nov 2014 11:00:29 +0000 Subject: [PATCH] Renamed CyDelete7 to CyDelete8. Added support for iOS 8. --- .theos/last_package | 1 - .theos/packages/com.ryanburke.cydelete7-0.7 | 1 - CyDelete7.xm | 439 ------------------ CyDelete7.plist => CyDelete8.plist | 0 CyDelete8.xm | 368 +++++++++++++++ .../fakeroot => Cydelete8/.theos/obj/.stamp | 0 .../.theos/obj/Cydelete8.bundle}/CyDelete.png | Bin .../obj/Cydelete8.bundle}/CyDelete@2x.png | Bin .../.theos/obj/Cydelete8.bundle/Cydelete8 | Bin 0 -> 133104 bytes .../obj/Cydelete8.bundle/Cydelete8.plist | 36 +- .../.theos/obj/Cydelete8.bundle/Cydia.png | Bin 0 -> 3977 bytes .../.theos/obj/Cydelete8.bundle/Cydia@2x.png | Bin 0 -> 9271 bytes .../.theos/obj/Cydelete8.bundle/Cydia@3x.png | Bin 0 -> 14305 bytes .../.theos/obj/Cydelete8.bundle}/Info.plist | 8 +- .../da.lproj/Localizable.strings | 0 .../de.lproj/Localizable.strings | 0 .../en.lproj/Localizable.strings | 0 .../es.lproj/Localizable.strings | 0 .../fr.lproj/Localizable.strings | 0 .../he.lproj/Localizable.strings | 0 .../hu.lproj/Localizable.strings | 0 .../it.lproj/Localizable.strings | 0 .../nl.lproj/Localizable.strings | 0 .../ru.lproj/Localizable.strings | 0 .../tr.lproj/Localizable.strings | 0 .../zh_CN.lproj/Localizable.strings | 0 .../zh_TW.lproj/Localizable.strings | 0 .../obj/arm64/Cydelete8.bundle/Cydelete8 | Bin 0 -> 50768 bytes .../Cydelete8ListController.mm.38eaf6ac.o | Bin 0 -> 10064 bytes .../obj/armv7/Cydelete8.bundle/Cydelete8 | Bin 0 -> 50684 bytes .../Cydelete8ListController.mm.9d58d839.o | Bin 0 -> 6680 bytes .../Cydelete8ListController.mm | 33 +- Cydelete8/Makefile | 17 + Cydelete8/Resources/CyDelete.png | Bin 0 -> 469 bytes Cydelete8/Resources/CyDelete@2x.png | Bin 0 -> 902 bytes Cydelete8/Resources/Cydelete8.plist | 60 +++ Cydelete8/Resources/Cydia.png | Bin 0 -> 3977 bytes Cydelete8/Resources/Cydia@2x.png | Bin 0 -> 9271 bytes Cydelete8/Resources/Cydia@3x.png | Bin 0 -> 14305 bytes Cydelete8/Resources/Info.plist | 28 ++ .../Resources/da.lproj/Localizable.strings | 16 + .../Resources/de.lproj/Localizable.strings | 16 + .../Resources/en.lproj/Localizable.strings | 16 + .../Resources/es.lproj/Localizable.strings | 16 + .../Resources/fr.lproj/Localizable.strings | 16 + .../Resources/he.lproj/Localizable.strings | 16 + .../Resources/hu.lproj/Localizable.strings | 16 + .../Resources/it.lproj/Localizable.strings | 16 + .../Resources/nl.lproj/Localizable.strings | 16 + .../Resources/ru.lproj/Localizable.strings | 16 + .../Resources/tr.lproj/Localizable.strings | 16 + .../Resources/zh_CN.lproj/Localizable.strings | 16 + .../Resources/zh_TW.lproj/Localizable.strings | 16 + Cydelete8/entry.plist | 10 + {cydelete7settings => Cydelete8}/theos | 0 Makefile | 21 +- cydelete7settings/Makefile | 18 - cydelete7settings/Preferences/NSObject.h | 34 -- .../Preferences/PSListController.h | 226 --------- cydelete7settings/Preferences/PSSpecifier.h | 75 --- .../Preferences/PSViewController.h | 41 -- .../Preferences/Preferences-Structs.h | 34 -- cydelete7settings/Resources/Cydia.png | Bin 2509 -> 0 bytes cydelete7settings/Resources/Cydia@2x.png | Bin 8377 -> 0 bytes cydelete7settings/cydelete7settings.h | 25 - cydelete7settings/entry.plist | 10 - layout/DEBIAN/control | 12 +- .../Info.plist | 6 +- .../convert.sh | 0 .../da.lproj/Localizable.strings | 0 .../de.lproj/Localizable.strings | 0 .../en.lproj/Localizable.strings | 0 .../es.lproj/Localizable.strings | 0 .../fr.lproj/Localizable.strings | 0 .../he.lproj/Localizable.strings | 0 .../hu.lproj/Localizable.strings | 0 .../it.lproj/Localizable.strings | 0 .../nl.lproj/Localizable.strings | 0 .../ru.lproj/Localizable.strings | 0 .../tr.lproj/Localizable.strings | 0 .../zh_CN.lproj/Localizable.strings | 0 .../zh_TW.lproj/Localizable.strings | 0 setuid/Makefile | 4 +- setuid/setuid.c | 5 +- substrate.h | 298 ------------ 85 files changed, 734 insertions(+), 1284 deletions(-) delete mode 100644 .theos/last_package delete mode 100644 .theos/packages/com.ryanburke.cydelete7-0.7 delete mode 100644 CyDelete7.xm rename CyDelete7.plist => CyDelete8.plist (100%) create mode 100644 CyDelete8.xm rename .theos/fakeroot => Cydelete8/.theos/obj/.stamp (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/CyDelete.png (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/CyDelete@2x.png (100%) create mode 100755 Cydelete8/.theos/obj/Cydelete8.bundle/Cydelete8 rename cydelete7settings/Resources/cydelete7settings.plist => Cydelete8/.theos/obj/Cydelete8.bundle/Cydelete8.plist (61%) create mode 100644 Cydelete8/.theos/obj/Cydelete8.bundle/Cydia.png create mode 100644 Cydelete8/.theos/obj/Cydelete8.bundle/Cydia@2x.png create mode 100644 Cydelete8/.theos/obj/Cydelete8.bundle/Cydia@3x.png rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/Info.plist (81%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/da.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/de.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/en.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/es.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/fr.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/he.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/hu.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/it.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/nl.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/ru.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/tr.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/zh_CN.lproj/Localizable.strings (100%) rename {cydelete7settings/Resources => Cydelete8/.theos/obj/Cydelete8.bundle}/zh_TW.lproj/Localizable.strings (100%) create mode 100755 Cydelete8/.theos/obj/arm64/Cydelete8.bundle/Cydelete8 create mode 100644 Cydelete8/.theos/obj/arm64/Cydelete8ListController.mm.38eaf6ac.o create mode 100755 Cydelete8/.theos/obj/armv7/Cydelete8.bundle/Cydelete8 create mode 100644 Cydelete8/.theos/obj/armv7/Cydelete8ListController.mm.9d58d839.o rename cydelete7settings/cydelete7settings.m => Cydelete8/Cydelete8ListController.mm (66%) create mode 100644 Cydelete8/Makefile create mode 100644 Cydelete8/Resources/CyDelete.png create mode 100644 Cydelete8/Resources/CyDelete@2x.png create mode 100644 Cydelete8/Resources/Cydelete8.plist create mode 100644 Cydelete8/Resources/Cydia.png create mode 100644 Cydelete8/Resources/Cydia@2x.png create mode 100644 Cydelete8/Resources/Cydia@3x.png create mode 100644 Cydelete8/Resources/Info.plist create mode 100755 Cydelete8/Resources/da.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/de.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/en.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/es.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/fr.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/he.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/hu.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/it.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/nl.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/ru.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/tr.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/zh_CN.lproj/Localizable.strings create mode 100755 Cydelete8/Resources/zh_TW.lproj/Localizable.strings create mode 100644 Cydelete8/entry.plist rename {cydelete7settings => Cydelete8}/theos (100%) delete mode 100644 cydelete7settings/Makefile delete mode 100644 cydelete7settings/Preferences/NSObject.h delete mode 100644 cydelete7settings/Preferences/PSListController.h delete mode 100644 cydelete7settings/Preferences/PSSpecifier.h delete mode 100644 cydelete7settings/Preferences/PSViewController.h delete mode 100644 cydelete7settings/Preferences/Preferences-Structs.h delete mode 100644 cydelete7settings/Resources/Cydia.png delete mode 100644 cydelete7settings/Resources/Cydia@2x.png delete mode 100644 cydelete7settings/cydelete7settings.h delete mode 100644 cydelete7settings/entry.plist mode change 100644 => 100755 layout/DEBIAN/control rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/Info.plist (87%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/convert.sh (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/da.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/de.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/en.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/es.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/fr.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/he.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/hu.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/it.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/nl.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/ru.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/tr.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/zh_CN.lproj/Localizable.strings (100%) rename layout/Library/MobileSubstrate/DynamicLibraries/{CyDelete.bundle => CyDelete8.bundle}/zh_TW.lproj/Localizable.strings (100%) delete mode 100644 substrate.h diff --git a/.theos/last_package b/.theos/last_package deleted file mode 100644 index 8da9268..0000000 --- a/.theos/last_package +++ /dev/null @@ -1 +0,0 @@ -./com.ryanburke.cydelete7_0.7-12_iphoneos-arm.deb diff --git a/.theos/packages/com.ryanburke.cydelete7-0.7 b/.theos/packages/com.ryanburke.cydelete7-0.7 deleted file mode 100644 index 3cacc0b..0000000 --- a/.theos/packages/com.ryanburke.cydelete7-0.7 +++ /dev/null @@ -1 +0,0 @@ -12 \ No newline at end of file diff --git a/CyDelete7.xm b/CyDelete7.xm deleted file mode 100644 index dc72413..0000000 --- a/CyDelete7.xm +++ /dev/null @@ -1,439 +0,0 @@ -// -// CyDelete7.xm -// CyDelete7 -// -// Created by Ryan Burke on 02.01.2014. -// Copyright (c) 2014 Ryan Burke. All rights reserved. -// -#import -#import -#include - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import - -__attribute__((unused)) static NSMutableString *outputForShellCommand(NSString *cmd); -static void removeBundleFromMIList(NSString *bundle); -static void CDUpdatePrefs(); -static NSBundle *cyDelBundle = nil; -static NSDictionary *cyDelPrefs = nil; -static NSMutableDictionary *iconPackagesDict; -static NSOperationQueue *uninstallQueue; - -#define SBLocalizedString(key) [[NSBundle mainBundle] localizedStringForKey:key value:@"None" table:@"SpringBoard"] -#define CDLocalizedString(key) [cyDelBundle localizedStringForKey:key value:key table:nil] - -@interface CDUninstallOperation : NSOperation { - BOOL _executing; - BOOL _finished; -} -@end - -@interface CDUninstallDpkgOperation : CDUninstallOperation { - NSString *_package; -} -@property (nonatomic, retain) NSString *package; -- (id)initWithPackage:(NSString *)package; -@end - -@interface CDUninstallDeleteOperation : CDUninstallOperation { - __unsafe_unretained NSString *_path; -} -@property (nonatomic, assign) NSString *path; -- (id)initWithPath:(NSString *)path; -@end - -static void initTranslation() { - cyDelBundle = [NSBundle bundleWithPath:@"/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle"]; -} - -static bool CDGetBoolPref(id key, bool value) { - if(!cyDelPrefs) return value; - id object = [cyDelPrefs objectForKey:key]; - if(!object) return value; - else return [object boolValue]; -} - -// Thanks _BigBoss_! -__attribute__((unused)) static int getFreeMemory() { - vm_size_t pageSize; - host_page_size(mach_host_self(), &pageSize); - struct vm_statistics vmStats; - mach_msg_type_number_t infoCount = sizeof(vmStats); - host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount); - int availMem = vmStats.free_count + vmStats.inactive_count; - return (availMem * pageSize) / 1024 / 1024; -} - -#define fexists(n) access(n, F_OK) -static char *owner(const char *_bundle, const char *_title, const char *_path) { - char bundle[1024], title[1024]; - static char pkgname[256]; - int pathlen = strlen(_path); - - snprintf(bundle, 1024, "/var/lib/dpkg/info/%s.list", _bundle); - snprintf(title, 1024, "/var/lib/dpkg/info/%s.list", _title); - if(fexists(bundle) == 0) { - strcpy(pkgname, _bundle); - return pkgname; - } else if(fexists(title) == 0) { - strcpy(pkgname, _title); - return pkgname; - } - - DIR *d = opendir("/var/lib/dpkg/info"); - if(!d) return NULL; - struct dirent *ent; - while((ent = readdir(d)) != NULL) { - int namelen = strlen(ent->d_name); - if(strcmp(ent->d_name + namelen - 5, ".list") != 0) continue; - char curpath[1024]; - snprintf(curpath, 1024, "/var/lib/dpkg/info/%s", ent->d_name); - FILE *fp = fopen(curpath, "r"); - char curfn[1024]; - while(fgets(curfn, 1024, fp) != NULL) { - if(strncmp(_path, curfn, pathlen) == 0) { - strncpy(pkgname, ent->d_name, namelen - 5); - pkgname[namelen - 5] = '\0'; - fclose(fp); - closedir(d); - return pkgname; - } - } - fclose(fp); - } - closedir(d); - return NULL; -} - -static id ownerForSBApplication(SBApplication *application) { - NSString *bundle = [application bundleIdentifier]; - NSString *title = [application displayName]; - NSString *plistPath = [NSString stringWithFormat:@"%@/Info.plist", [application path]]; - char *pkgNameC = owner([bundle UTF8String], [title UTF8String], [plistPath UTF8String]); - id package = pkgNameC ? [NSString stringWithUTF8String:pkgNameC] : [NSNull null]; - return package; -} - -@implementation CDUninstallOperation -- (id)init { - if((self = [super init]) != nil) { - _executing = NO; - _finished = NO; - } - return self; -} - -- (BOOL)isConcurrent { return YES; } -- (BOOL)isExecuting { return _executing; } -- (BOOL)isFinished { return _finished; } - -- (void)start { - if([self isCancelled]) { - [self willChangeValueForKey:@"isFinished"]; - _finished = YES; - [self didChangeValueForKey:@"isFinished"]; - return; - } - [self willChangeValueForKey:@"isExecuting"]; - [NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil]; - _executing = YES; - [self didChangeValueForKey:@"isExecuting"]; -} - -- (void)completeOperation { - [self willChangeValueForKey:@"isFinished"]; - [self willChangeValueForKey:@"isExecuting"]; - _executing = NO; - _finished = YES; - [self didChangeValueForKey:@"isExecuting"]; - [self didChangeValueForKey:@"isFinished"]; -} - -- (void)main { -} -@end - -@implementation CDUninstallDeleteOperation -@synthesize path = _path; -- (id)initWithPath:(NSString *)path { - if((self = [super init]) != nil) { - self.path = path; - } - return self; -} - -- (void)main { - NSString *command = [NSString stringWithFormat:@"/usr/libexec/cydelete/setuid /usr/libexec/cydelete/uninstall_nondpkg.sh %@", _path]; - system([command UTF8String]); - [self completeOperation]; -} - -@end - -@implementation CDUninstallDpkgOperation -@synthesize package = _package; -- (id)initWithPackage:(NSString *)package { - if((self = [super init]) != nil) { - self.package = package; - } - return self; -} - -- (void)displayError { - NSString *body = [NSString stringWithFormat:CDLocalizedString(@"PACKAGE_UNINSTALL_ERROR_BODY"), _package]; - UIAlertView *delView = [[UIAlertView alloc] initWithTitle:CDLocalizedString(@"PACKAGE_UNINSTALL_ERROR_TITLE") message:body delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; - [delView show]; -} - -- (void)main { - NSString *command = [NSString stringWithFormat:@"/usr/libexec/cydelete/setuid /usr/libexec/cydelete/uninstall_dpkg.sh %@", _package]; - NSString *output = outputForShellCommand(command); - if(!output) [self performSelectorOnMainThread:@selector(displayError) withObject:nil waitUntilDone:NO]; - [self completeOperation]; -} - -@end - -static void removeBundleFromMIList(NSString *bundle) { - NSString *path = [NSString stringWithFormat:@"%@/Library/Caches/com.apple.mobile.installation.plist", NSHomeDirectory()]; - NSMutableDictionary *cache = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; - [[cache objectForKey:@"System"] removeObjectForKey:bundle]; - [cache writeToFile:path atomically:YES]; -} - -__attribute__((unused)) static NSMutableString *outputForShellCommand(NSString *cmd) { - FILE *fp; - char buf[1024]; - NSMutableString* finalRet; - - NSLog(@"CD: Calling %@", cmd); - fp = popen([cmd UTF8String], "r"); - if (fp == NULL) { - return nil; - } - - fgets(buf, 1024, fp); - NSLog(@"CD: received %s", buf); - finalRet = [NSMutableString stringWithUTF8String:buf]; - NSLog(@"CD: Turned into %@", finalRet); - - if(pclose(fp) != 0) { - return nil; - } - - return finalRet; -} - -static void CDUpdatePrefs() { - NSDictionary *prefs = [NSDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.ryanburke.cydelete7.plist"]; - if(!prefs) return; - if(!cyDelPrefs || ![cyDelPrefs isEqualToDictionary:prefs]) { - cyDelPrefs = prefs; - } -} - -%hook SBApplicationController - --(void)uninstallApplication:(SBApplication *)application { - - - if(![application isSystemApplication] || [[application path] isEqualToString:@"/Applications/Web.app"]) { - %orig; - return; - } - // If the application is running, kill it. -// [application kill]; - - id package = [iconPackagesDict objectForKey:[application displayIdentifier]]; - // We were called with an application that doesn't have an entry in the packages list. - // Probably by PogoPlank. - if(!package) { - package = ownerForSBApplication(application); - } - - // We still don't have an entry (or a NSNull). We should probably bail out. - if(!package) { - return; - } - - NSString *path = [application path]; - - - CDUninstallOperation *op; - if(package == [NSNull null]) - op = [[CDUninstallDeleteOperation alloc] initWithPath:path]; - else - op = [[CDUninstallDpkgOperation alloc] initWithPackage:package]; - [uninstallQueue addOperation:op]; - removeBundleFromMIList([application bundleIdentifier]); - if([[application bundleIdentifier] isEqualToString:@"jp.ashikase.springjumps"]) { - NSArray *allBundles = [self allApplications]; - int i = 0; - int count = [allBundles count]; - for(i = 0; i < count; i++) { - SBApplication *curApp = [allBundles objectAtIndex:i]; - NSString *bundle = [curApp bundleIdentifier]; - if(![bundle hasPrefix:@"jp.ashikase.springjumps."]) - continue; - //SBIcon *curIcon = [[objc_getClass("SBIconModel") sharedInstance] iconForDisplayIdentifier:[curApp displayIdentifier]]; - SBIcon *curIcon = [[%c(SBIconModel) sharedInstance] applicationIconForDisplayIdentifier:[curApp displayIdentifier]]; - if(!curIcon) continue; - removeBundleFromMIList(bundle); - [self removeApplicationsFromModelWithBundleIdentifier:bundle]; - // [[objc_getClass("SBIconController") sharedInstance] removeIcon:curIcon animate:YES]; - [[%c(SBIconController) sharedInstance] uninstallIcon:curIcon animate:YES]; - } - } -} -%end - -@interface SBApplicationIcon (CyDelete) --(BOOL)cydelete_allowsUninstall; --(void)cydelete_uninstallClicked; -@end - -static void uninstallClickedForIcon(SBIcon *self) { - if(![[iconPackagesDict allKeys] containsObject:[[self application] displayIdentifier]]) { - SBApplication *app = [self application]; - // NSString *bundle = [app bundleIdentifier]; - id _pkgName = ownerForSBApplication(app); - //At this point, an app store app would be pkgname null. - [iconPackagesDict setObject:_pkgName forKey:[[self application] displayIdentifier]]; - } -} - -%hook SBIconController - -- (void)iconCloseBoxTapped:(id)_i { - %log; - - SBIconView *iconView = _i; - SBIcon *icon = [iconView icon]; - SBApplication *app = [icon application]; - // NSString *bundle = [app bundleIdentifier]; - id pkgName = ownerForSBApplication(app); - if(pkgName != [NSNull null]) { - uninstallClickedForIcon(icon); - } - %orig; - return; -} -%end - -%hook SBApplicationIcon -%new(c@:) --(BOOL)cydelete_allowsUninstall { - NSString *bundle = [[self application] displayIdentifier]; - if(([bundle hasPrefix:@"com.apple."] && ![bundle hasPrefix:@"com.apple.samplecode."]) - || ([bundle isEqualToString:@"com.saurik.Cydia"] && CDGetBoolPref(@"CDProtectCydia", true)) - || [bundle hasPrefix:@"com.bigboss.categories."] - || [bundle hasPrefix:@"jp.ashikase.springjumps."] - || [bundle hasPrefix:@"com.steventroughtonsmith.stack"]) - return NO; - if(getFreeMemory() < 20) return NO; - else return YES; -} - --(BOOL)allowsCloseBox { - if([self class] != %c(SBApplicationIcon)) { - return %orig; - } - - return [self cydelete_allowsUninstall]; -} - --(BOOL)allowsUninstall { - if([self class] != %c(SBApplicationIcon)) { - return %orig; - } - - return [self cydelete_allowsUninstall]; -} - --(void)closeBoxClicked:(id)event { - if([self class] != %c(SBApplicationIcon)) { - %orig; - return; - } - - uninstallClickedForIcon(self); - - %orig; -} - --(void)uninstallClicked:(id)event { - if([self class] != %c(SBApplicationIcon)) { - %orig; - return; - } - - uninstallClickedForIcon(self); - - %orig; -} - -// This messes up uninstall... -// -(void)completeUninstall { -// if([self class] != %c(SBApplicationIcon)) { -// %orig; -// } -// SBIconModel *model = [objc_getClass("SBIconModel") sharedInstance]; -// [model removeIconForIdentifier:self]; -// } - --(NSString *)uninstallAlertTitle { - return [NSString stringWithFormat:SBLocalizedString(@"UNINSTALL_ICON_TITLE"), - [[self application] displayName]]; -} - --(NSString *)uninstallAlertBody { - id package = [iconPackagesDict objectForKey:[[self application] displayIdentifier]]; - NSString *body; - if(package == [NSNull null]) - body = [NSString stringWithFormat:SBLocalizedString(@"DELETE_WIDGET_BODY"), - [[self application] displayName]]; - else - body = [NSString stringWithFormat:CDLocalizedString(@"PACKAGE_DELETE_BODY"), - [[self application] displayName], package]; - return body; -} - --(NSString *)uninstallAlertConfirmTitle { - return SBLocalizedString(@"UNINSTALL_ICON_CONFIRM"); -} - --(NSString *)uninstallAlertCancelTitle { - return SBLocalizedString(@"UNINSTALL_ICON_CANCEL"); -} -%end - -static void reloadPrefsNotification(CFNotificationCenterRef center, - void *observer, - CFStringRef name, - const void *object, - CFDictionaryRef userInfo) { - CDUpdatePrefs(); -} - -%ctor { - %init; - initTranslation(); - CDUpdatePrefs(); - iconPackagesDict = [[NSMutableDictionary alloc] init]; - uninstallQueue = [[NSOperationQueue alloc] init]; - [uninstallQueue setMaxConcurrentOperationCount:1]; - - CFNotificationCenterRef r = CFNotificationCenterGetDarwinNotifyCenter(); - CFNotificationCenterAddObserver(r, NULL, &reloadPrefsNotification, - CFSTR("com.ryanburke.cydelete7/ReloadPrefs"), NULL, 0); -} diff --git a/CyDelete7.plist b/CyDelete8.plist similarity index 100% rename from CyDelete7.plist rename to CyDelete8.plist diff --git a/CyDelete8.xm b/CyDelete8.xm new file mode 100644 index 0000000..3773ce7 --- /dev/null +++ b/CyDelete8.xm @@ -0,0 +1,368 @@ +// +// CyDelete7.xm +// CyDelete7 +// +// Created by Ryan Burke on 02.01.2014. +// Copyright (c) 2014 Ryan Burke. All rights reserved. +// +#import +#import +#include + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +__attribute__((unused)) static NSMutableString *outputForShellCommand(NSString *cmd); +static void removeBundleFromMIList(NSString *bundle); +static NSBundle *cyDelBundle = nil; +static NSMutableDictionary *iconPackagesDict; +static NSOperationQueue *uninstallQueue; + +#define SBLocalizedString(key) [[NSBundle mainBundle] localizedStringForKey:key value:@"None" table:@"SpringBoard"] +#define CDLocalizedString(key) [cyDelBundle localizedStringForKey:key value:key table:nil] + +@interface CDUninstallOperation : NSOperation { + BOOL _executing; + BOOL _finished; +} +@end + +@interface CDUninstallDpkgOperation : CDUninstallOperation { + NSString *_package; +} + +@property (nonatomic, retain) NSString *package; +- (id)initWithPackage:(NSString *)package; +@end + +static void initTranslation() { + cyDelBundle = [NSBundle bundleWithPath:@"/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle"]; +} + +static bool getProtectCydia() { + //Sync the latest version of the preferences. + bool synced = CFPreferencesAppSynchronize(CFSTR("com.ryanburke.cydelete8")); + //If the sync failed, lets just default to protecting Cydia for safety. + if(!synced) return true; + //Create a boolean object to hold the success value from next function. + Boolean success; + //Get the value of the "CDProtectCydia" key from the preferences. + bool result = CFPreferencesGetAppBooleanValue(CFSTR("CDProtectCydia"), CFSTR("com.ryanburke.cydelete8"), &success); + //If the enabled key existed and we got the value okay. + if(success) { + //Return the value of the key. + return result; + } + //If for some reason we couldn't get the value lets just default to protecting Cydia for safety. + return true; +} + +// Thanks _BigBoss_! +__attribute__((unused)) static int getFreeMemory() { + vm_size_t pageSize; + host_page_size(mach_host_self(), &pageSize); + struct vm_statistics vmStats; + mach_msg_type_number_t infoCount = sizeof(vmStats); + host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, &infoCount); + int availMem = vmStats.free_count + vmStats.inactive_count; + return (availMem * pageSize) / 1024 / 1024; +} + +#define fexists(n) access(n, F_OK) +static char *owner(const char *_bundle, const char *_title, const char *_path) { + char bundle[1024], title[1024]; + static char pkgname[256]; + int pathlen = strlen(_path); + + snprintf(bundle, 1024, "/var/lib/dpkg/info/%s.list", _bundle); + snprintf(title, 1024, "/var/lib/dpkg/info/%s.list", _title); + if(fexists(bundle) == 0) { + strcpy(pkgname, _bundle); + return pkgname; + } else if(fexists(title) == 0) { + strcpy(pkgname, _title); + return pkgname; + } + + DIR *d = opendir("/var/lib/dpkg/info"); + if(!d) return NULL; + struct dirent *ent; + while((ent = readdir(d)) != NULL) { + int namelen = strlen(ent->d_name); + if(strcmp(ent->d_name + namelen - 5, ".list") != 0) continue; + char curpath[1024]; + snprintf(curpath, 1024, "/var/lib/dpkg/info/%s", ent->d_name); + FILE *fp = fopen(curpath, "r"); + char curfn[1024]; + while(fgets(curfn, 1024, fp) != NULL) { + if(strncmp(_path, curfn, pathlen) == 0) { + strncpy(pkgname, ent->d_name, namelen - 5); + pkgname[namelen - 5] = '\0'; + fclose(fp); + closedir(d); + return pkgname; + } + } + fclose(fp); + } + closedir(d); + return NULL; +} + +static id ownerForSBApplication(SBApplication *application) { + NSString *bundle = [application bundleIdentifier]; + NSString *title = [application displayName]; + NSString *plistPath = [NSString stringWithFormat:@"%@/Info.plist", [application path]]; + char *pkgNameC = owner([bundle UTF8String], [title UTF8String], [plistPath UTF8String]); + id package = pkgNameC ? [NSString stringWithUTF8String:pkgNameC] : [NSNull null]; + return package; +} + +@implementation CDUninstallOperation +- (id)init { + if((self = [super init]) != nil) { + _executing = NO; + _finished = NO; + } + return self; +} + +- (BOOL)isConcurrent { return YES; } +- (BOOL)isExecuting { return _executing; } +- (BOOL)isFinished { return _finished; } + +- (void)start { + if([self isCancelled]) { + [self willChangeValueForKey:@"isFinished"]; + _finished = YES; + [self didChangeValueForKey:@"isFinished"]; + return; + } + [self willChangeValueForKey:@"isExecuting"]; + [NSThread detachNewThreadSelector:@selector(main) toTarget:self withObject:nil]; + _executing = YES; + [self didChangeValueForKey:@"isExecuting"]; +} + +- (void)completeOperation { + [self willChangeValueForKey:@"isFinished"]; + [self willChangeValueForKey:@"isExecuting"]; + _executing = NO; + _finished = YES; + [self didChangeValueForKey:@"isExecuting"]; + [self didChangeValueForKey:@"isFinished"]; +} + +- (void)main { +} +@end + +@implementation CDUninstallDpkgOperation + + //String to store the package name. + @synthesize package = _package; + + - (id)initWithPackage:(NSString *)package { + if((self = [super init]) != nil) { + self.package = package; + } + return self; + } + + - (bool)runCMD + { + //Path to the setuid appliaction that gets us root permissions. + const char *setuid = "/usr/libexec/cydelete/setuid"; + //Path to our uninstall script that we want to run as root. + char commandChar[] = "/usr/libexec/cydelete/uninstall_dpkg.sh"; + + //Horrible method to convert NSString to Char array. + char packageChar [strlen([_package UTF8String]) + 1]; + strcpy(packageChar, [_package UTF8String]); + + //Char literal array containing shell script path and package name. + char *argv[] = {commandChar, packageChar, NULL}; + + //Create a pid_t object to hold reference to spawned process. + pid_t pid; + + //Spawn a new process using posix_spawn as System() is depricated on iOS 8. + int status = posix_spawn(&pid, setuid, NULL, NULL, argv, NULL); + + //Status 0 indicates successful spawn. Not that apt-get was success though. + if (status == 0) { + if (waitpid(pid, &status, 0) != -1) { + //Return a success. + return true; + } + } + //Return failure. + return false; + } + + - (void)displayError { + NSString *body = [NSString stringWithFormat:CDLocalizedString(@"PACKAGE_UNINSTALL_ERROR_BODY"), _package]; + UIAlertView *delView = [[UIAlertView alloc] initWithTitle:CDLocalizedString(@"PACKAGE_UNINSTALL_ERROR_TITLE") message:body delegate:nil cancelButtonTitle:@"Okay" otherButtonTitles:nil]; + [delView show]; + } + + - (void)main { + bool output = [self runCMD]; + if(output) { + removeBundleFromMIList(_package); + } + else { + [self performSelectorOnMainThread:@selector(displayError) withObject:nil waitUntilDone:NO]; + } + + [self completeOperation]; + } + +@end + +static void removeBundleFromMIList(NSString *bundle) { + NSString *path = [NSString stringWithFormat:@"%@/Library/Caches/com.apple.mobile.installation.plist", NSHomeDirectory()]; + NSMutableDictionary *cache = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; + [[cache objectForKey:@"System"] removeObjectForKey:bundle]; + [cache writeToFile:path atomically:YES]; +} + +%hook SBApplicationController + +-(void)uninstallApplication:(SBApplication *)application { + if(![application isSystemApplication] || [[application path] isEqualToString:@"/Applications/Web.app"]) { + %orig; + return; + } + + id package = [iconPackagesDict objectForKey:[application bundleIdentifier]]; + + // We were called with an application that doesn't have an entry in the packages list. + if(!package) package = ownerForSBApplication(application); + + // We still don't have an entry (or a NSNull). We should probably bail out. + if(!package) return; + + [uninstallQueue addOperation:[[CDUninstallDpkgOperation alloc] initWithPackage:package]]; + +} +%end + +@interface SBApplicationIcon (CyDelete) + -(BOOL)cydelete_allowsUninstall; + -(void)cydelete_uninstallClicked; +@end + +static void uninstallClickedForIcon(SBIcon *self) { + if(![[iconPackagesDict allKeys] containsObject:[[self application] bundleIdentifier]]) { + SBApplication *app = [self application]; + id _pkgName = ownerForSBApplication(app); + //At this point, an app store app would be pkgname null. + [iconPackagesDict setObject:_pkgName forKey:[[self application] bundleIdentifier]]; + } +} + +%hook SBIconController + - (void)iconCloseBoxTapped:(id)_i { + SBIconView *iconView = _i; + SBIcon *icon = [iconView icon]; + SBApplication *app = [icon application]; + id pkgName = ownerForSBApplication(app); + if(pkgName != [NSNull null]) { + uninstallClickedForIcon(icon); + } + %orig; + } +%end + +%hook SBApplicationIcon + + %new(c@:) + -(BOOL)cydelete_allowsUninstall { + + NSString *bundle = [[self application] bundleIdentifier]; + bool isApple = ([bundle hasPrefix:@"com.apple."] && ![bundle hasPrefix:@"com.apple.samplecode."]); + bool isCydia = ([bundle isEqualToString:@"com.saurik.Cydia"] && getProtectCydia()); + + if(isApple || isCydia || getFreeMemory() < 20 ) { + return NO; + } + + return YES; + } + + -(BOOL)allowsCloseBox { + if([self class] != %c(SBApplicationIcon)) { + return %orig; + } + return [self cydelete_allowsUninstall]; + } + + -(BOOL)allowsUninstall { + if([self class] != %c(SBApplicationIcon)) { + return %orig; + } + return [self cydelete_allowsUninstall]; + } + + -(void)closeBoxClicked:(id)event { + if([self class] != %c(SBApplicationIcon)) { + %orig; + return; + } + uninstallClickedForIcon(self); + %orig; + } + + -(void)uninstallClicked:(id)event { + if([self class] != %c(SBApplicationIcon)) { + %orig; + return; + } + uninstallClickedForIcon(self); + %orig; + } + + -(NSString *)uninstallAlertTitle { + return [NSString stringWithFormat:SBLocalizedString(@"UNINSTALL_ICON_TITLE"), + [[self application] displayName]]; + } + + -(NSString *)uninstallAlertBody { + id package = [iconPackagesDict objectForKey:[[self application] bundleIdentifier]]; + NSString *body; + if(package == [NSNull null]) { + body = [NSString stringWithFormat:SBLocalizedString(@"DELETE_WIDGET_BODY"), + [[self application] displayName]]; + } + else { + NSString *localString = CDLocalizedString(@"PACKAGE_DELETE_BODY"); + body = [NSString stringWithFormat:localString, [[self application] displayName], package]; + } + return body; + } + + -(NSString *)uninstallAlertConfirmTitle { + return SBLocalizedString(@"UNINSTALL_ICON_CONFIRM"); + } + + -(NSString *)uninstallAlertCancelTitle { + return SBLocalizedString(@"UNINSTALL_ICON_CANCEL"); + } +%end + +%ctor { + %init; + initTranslation(); + iconPackagesDict = [[NSMutableDictionary alloc] init]; + uninstallQueue = [[NSOperationQueue alloc] init]; + [uninstallQueue setMaxConcurrentOperationCount:1]; +} diff --git a/.theos/fakeroot b/Cydelete8/.theos/obj/.stamp similarity index 100% rename from .theos/fakeroot rename to Cydelete8/.theos/obj/.stamp diff --git a/cydelete7settings/Resources/CyDelete.png b/Cydelete8/.theos/obj/Cydelete8.bundle/CyDelete.png similarity index 100% rename from cydelete7settings/Resources/CyDelete.png rename to Cydelete8/.theos/obj/Cydelete8.bundle/CyDelete.png diff --git a/cydelete7settings/Resources/CyDelete@2x.png b/Cydelete8/.theos/obj/Cydelete8.bundle/CyDelete@2x.png similarity index 100% rename from cydelete7settings/Resources/CyDelete@2x.png rename to Cydelete8/.theos/obj/Cydelete8.bundle/CyDelete@2x.png diff --git a/Cydelete8/.theos/obj/Cydelete8.bundle/Cydelete8 b/Cydelete8/.theos/obj/Cydelete8.bundle/Cydelete8 new file mode 100755 index 0000000000000000000000000000000000000000..0c08607cd1a6b9f5aeb5d41e03b00d07160ede2f GIT binary patch literal 133104 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 literal 0 HcmV?d00001 diff --git a/cydelete7settings/Resources/cydelete7settings.plist b/Cydelete8/.theos/obj/Cydelete8.bundle/Cydelete8.plist similarity index 61% rename from cydelete7settings/Resources/cydelete7settings.plist rename to Cydelete8/.theos/obj/Cydelete8.bundle/Cydelete8.plist index 73d05a2..bdeab02 100644 --- a/cydelete7settings/Resources/cydelete7settings.plist +++ b/Cydelete8/.theos/obj/Cydelete8.bundle/Cydelete8.plist @@ -20,36 +20,22 @@ default defaults - com.ryanburke.cydelete7 + com.ryanburke.cydelete8 key CDProtectCydia label Cydia icon Cydia.png - postNotification - com.ryanburke.cydelete7/ReloadPrefs - - - cell - PSGroupCell - isStaticText - - requiredCapabilities - - - wildcat - - - cell PSGroupCell footerText - CyDelete7 © 2014 Ryan Burke -Original CyDelete © 2009-2011 Dustin L. Howett -Released under the GPLv3 Licence. + CyDelete8 © 2014 Ryan Burke + CyDelete © 2009-2011 Dustin L. Howett + Released under the GPLv3 Licence. + action @@ -57,15 +43,7 @@ Released under the GPLv3 Licence. cell PSButtonCell label - CyDelete7 Donate - - - action - dustinDonate: - cell - PSButtonCell - label - DHowett Donate + Support action @@ -77,6 +55,6 @@ Released under the GPLv3 Licence. title - CyDelete7 + CyDelete8 diff --git a/Cydelete8/.theos/obj/Cydelete8.bundle/Cydia.png b/Cydelete8/.theos/obj/Cydelete8.bundle/Cydia.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3ae500d0698a2a4a9ec938da4af46d2f5d65d7 GIT binary patch literal 3977 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

2Ofj=h59578o317|}2t7?<%Wd!E;`E&YWE3^w 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 Z26#Bj{{Sy4lLP<&002ovPDHLkV1f+tX`}!E literal 0 HcmV?d00001 diff --git a/Cydelete8/.theos/obj/Cydelete8.bundle/Cydia@3x.png b/Cydelete8/.theos/obj/Cydelete8.bundle/Cydia@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc63a594d9d364e43d8763224122f7be076c193 GIT binary patch literal 14305 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 English CFBundleExecutable - cydelete7settings + Cydelete8 CFBundleIdentifier - com.ryanburke.cydelete7settings + com.ryanburke.cydelete8 CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType @@ -21,8 +21,8 @@ DTPlatformName iphoneos MinimumOSVersion - 7.0 + 8.0 NSPrincipalClass - cydelete7settingsListController + Cydelete8ListController diff --git a/cydelete7settings/Resources/da.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/da.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/da.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/da.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/de.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/de.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/de.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/de.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/en.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/en.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/en.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/en.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/es.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/es.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/es.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/es.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/fr.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/fr.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/fr.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/fr.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/he.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/he.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/he.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/he.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/hu.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/hu.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/hu.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/hu.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/it.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/it.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/it.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/it.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/nl.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/nl.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/nl.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/nl.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/ru.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/ru.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/ru.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/ru.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/tr.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/tr.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/tr.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/tr.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/zh_CN.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/zh_CN.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/zh_CN.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/zh_CN.lproj/Localizable.strings diff --git a/cydelete7settings/Resources/zh_TW.lproj/Localizable.strings b/Cydelete8/.theos/obj/Cydelete8.bundle/zh_TW.lproj/Localizable.strings similarity index 100% rename from cydelete7settings/Resources/zh_TW.lproj/Localizable.strings rename to Cydelete8/.theos/obj/Cydelete8.bundle/zh_TW.lproj/Localizable.strings diff --git a/Cydelete8/.theos/obj/arm64/Cydelete8.bundle/Cydelete8 b/Cydelete8/.theos/obj/arm64/Cydelete8.bundle/Cydelete8 new file mode 100755 index 0000000000000000000000000000000000000000..033919f1e4e970e01b2c9aab87d4fd0fb5f94a5f GIT binary patch literal 50768 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 M>h;y@Xrqz-3*)kx#{d8T literal 0 HcmV?d00001 diff --git a/Cydelete8/.theos/obj/arm64/Cydelete8ListController.mm.38eaf6ac.o b/Cydelete8/.theos/obj/arm64/Cydelete8ListController.mm.38eaf6ac.o new file mode 100644 index 0000000000000000000000000000000000000000..fc10c0898705d8b48aa8b78ed4e6da0ab135bb38 GIT binary patch literal 10064 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

wQ2BvECq2+X+;_>m_O!8}ViI2RS4>kpUh= z%Eo~wfWyFNfc?ySf$&-5XWjtBRa3`&9dHLYz_Nc6*bbfn`hgR`F9OGb8gLZ&G;kPr z02l?f0sDbZ0gnOk+EvpFYz0z3TY!FGGjKn!3D^K^1XBO@0_%V{bEw%2`~q+ta2L=6 zgpL*8<3RFv2uObVf#l~EAo)2CtOGs?B>R3K*&`;)zK=1$@|RftGS|Nd%t5~gm<4tM zXMuIVtH9@hmw?^CX&}yWYo@sVO`r~*0eXQGz~_MDKXAX9Q7#cYO9n6pQ=u~ z-gaGbsp_2ThU+HqoHC)DS5)OzleG_=wops-HE6S}^w^yN7 zomKCus(Q_R-F*wvYwC6NzUomHl$_#GGSwHVtCai7qEe+~)C+2rvgm%`u2OD#Zh5Md z1$PejbM6~dquzq_wwlG?1vRI-l-tz{)h=bRdfcnvK3lD-3)Q*myVVNn9)OK|&v_@j zh|@deeal;=ocCtDF6Ekc4u7-W9IUQ+uR}iPz2UtHmh~=x<-B*j_kibCPpm$_8nJm7 zF)AqkK*`2smw$5b4~b*J+ULJ(vG{6KoN;0BsMHgOeB2{>JM#(VUm*@3=cQP@!SW2t z|C%}W48LPl#g-rhrs_?%=ms zznAqtAdVRCG5?K&TZo> zap>CL1I`hL|1P%wD)Z-hC}|AgZ~*6 zi}nB5!SS12BCmJY4?5&eI5^&EO6-NvbMV;?~oo9;`tFA%Fv-liOtDiEKW5Y zhppIeE&K zmNEAgqFiYu`FtyO%~vs(zSasoD>~j?d0zUEO*{r#n$hwe{9hHx5C>JZ*uB9M=CDCe z`|kGVyRhI%SQ!3NVdKg+%_~>8NMHNVdeP(gXitSFwAFZF-j+6A7@X4Tr?_*CWrAxg z6J2AO1T<2-l&!|Xc$YTVRHmV(G7U9x9?H2Z)32s7`pspUZ!Xh(bD4fN(^8{;`pP); zm2v1pf21KYg~`%dnD+Aba(NoHHbT=HdSsA)b1M!%{}7et+lLXRW(o_XAntp)7ZY|x zqn1KYrP?iJI@?mlJJ!z1{%JK^U8^^abO-v{@oQ;NQ$3x5vhN>OH?SC~H*yuWwut`* D)@;(; literal 0 HcmV?d00001 diff --git a/Cydelete8/.theos/obj/armv7/Cydelete8.bundle/Cydelete8 b/Cydelete8/.theos/obj/armv7/Cydelete8.bundle/Cydelete8 new file mode 100755 index 0000000000000000000000000000000000000000..b93caa0a37388e5e4a1c77784bc82d03183b997b GIT binary patch literal 50684 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 B-(dg% literal 0 HcmV?d00001 diff --git a/cydelete7settings/cydelete7settings.m b/Cydelete8/Cydelete8ListController.mm similarity index 66% rename from cydelete7settings/cydelete7settings.m rename to Cydelete8/Cydelete8ListController.mm index 7f12690..352af6d 100644 --- a/cydelete7settings/cydelete7settings.m +++ b/Cydelete8/Cydelete8ListController.mm @@ -5,23 +5,23 @@ // Created by Ryan Burke on 03.01.2014. // Copyright (c) 2014 Ryan Burke. All rights reserved. // +#include +#include +#include -#import "cydelete7settings.h" +@interface Cydelete8ListController : PSListController -@implementation cydelete7settingsListController +- (id)specifiers; +- (void)ryanDonate:(id)arg; +- (void)viewSource:(id)arg; --(id)init { - self = [super init]; - if(self) { - darwinNotifyCenter = CFNotificationCenterGetDarwinNotifyCenter(); - } - return self; -} +@end +@implementation Cydelete8ListController - (id)specifiers { if (_specifiers == nil) { - _specifiers = [self loadSpecifiersFromPlistName:@"cydelete7settings" target:self]; + _specifiers = [[self loadSpecifiersFromPlistName:@"Cydelete8" target:self] retain]; [self localizedSpecifiersWithSpecifiers:_specifiers]; } return _specifiers; @@ -59,22 +59,9 @@ - (void)ryanDonate:(id)arg { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4VBFWEFBUF56N"]]; } - -- (void)dustinDonate:(id)arg { - [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4275311"]]; -} - - (void)viewSource:(id)arg { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://github.com/ryanb93/CyDelete7"]]; } -- (void)setPreferenceValue:(id)value specifier:(id)specifier { - [super setPreferenceValue:value specifier:specifier]; - // Post a notification. - NSString *notification = [specifier propertyForKey:@"postNotification"]; - if(notification) - CFNotificationCenterPostNotification(darwinNotifyCenter, (__bridge CFStringRef)notification, NULL, NULL, true); -} - @end diff --git a/Cydelete8/Makefile b/Cydelete8/Makefile new file mode 100644 index 0000000..c2f2388 --- /dev/null +++ b/Cydelete8/Makefile @@ -0,0 +1,17 @@ +ARCHS = armv7 arm64 + +TARGET = iphone:8.1 + +include theos/makefiles/common.mk + +BUNDLE_NAME = Cydelete8 +Cydelete8_FILES = Cydelete8ListController.mm +Cydelete8_INSTALL_PATH = /Library/PreferenceBundles +Cydelete8_FRAMEWORKS = Foundation UIKit +Cydelete8_PRIVATE_FRAMEWORKS = Preferences + +include $(THEOS_MAKE_PATH)/bundle.mk + +internal-stage:: + $(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END) + $(ECHO_NOTHING)cp entry.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/Cydelete8.plist$(ECHO_END) diff --git a/Cydelete8/Resources/CyDelete.png b/Cydelete8/Resources/CyDelete.png new file mode 100644 index 0000000000000000000000000000000000000000..e6005edf9b800e944b8fdb374d4e7c92d7d1ba7b GIT binary patch literal 469 zcmV;`0V@89P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXH3 z1u7~8Bppit00C7=L_t(Y$L*FqYQ!)Qg711X?LApotM(<~f`zDEjBzTb-hxij*sVZAz(??Jc?y}21SSirGN~gm zaw{j1i;SsNJ{EM5#x0q=8y;`ThXj_Ro(=@Q4Nr%oo~Fk1bLSREW15n^H%XdnP>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_0009SNklG=TY4PStihK?S-A@T>LfYt@3r%GjoA~K58 z0L4(;Mc}=?y}k3D?PR^u%DVN<&OXoH?9A<2RFx3QD*`Di(EqKxuB~U02Jivs0H1-6 zKm@!89)MrK4R8$%fFbY$)rVTfqpH>y0Bl$2*xC-@<9b2iG(&NxQtv&jvy-9ov>s5qCBG>&YlD2&-Ar_q zw(Km=ToI25s?mXWwgFUby74<+c&Pymj*Jmk!aWSq#15$Sna z_10q5ZU1~UolkBRa1{y}exWB9Ln3D0=x0T9gy}WLmQJ5Z03MjUPYj)Tea%`0; zw%nNV4Ij{Grr;oLQ9G;)vWP|PK}6&OYKD6|1(mu1;_qGeJSy}G>fFf-3w<(_c8LYu z1u{vh{}lI2>71F3P3SUjzE=QS9i-i_T>5~HN;{(Ru;n4`4r$~AdSA->xnU;`$jMBQ zc5i=gejm)6`e3H6&7wEP^?J!TvSe?|?5!y~}|8?j6);k8$Ahj0O_|1`^Z^19~qk zJ1!K|r?)M3{a=m+^C~62@yKZXx`gqLIi{nmqXDbeor%DK(RzhQa|s}u7RZAv$o#_^ z!E8wcv&j_HwqZ~k!9i{92X$B@sN*+59jFTGh+I&I9{-_ZtWw*b2bSz$a($qyGxaOb c6=)UZ3IEh@dYKsQZ~y=R07*qoM6N<$f{;O{wEzGB literal 0 HcmV?d00001 diff --git a/Cydelete8/Resources/Cydelete8.plist b/Cydelete8/Resources/Cydelete8.plist new file mode 100644 index 0000000..bdeab02 --- /dev/null +++ b/Cydelete8/Resources/Cydelete8.plist @@ -0,0 +1,60 @@ + + + + + items + + + cell + PSGroupCell + label + PROTECTED_TITLE + footerText + PROTECTED_WARNING + + + alternateColors + + cell + PSSwitchCell + default + + defaults + com.ryanburke.cydelete8 + key + CDProtectCydia + label + Cydia + icon + Cydia.png + + + cell + PSGroupCell + footerText + CyDelete8 © 2014 Ryan Burke + CyDelete © 2009-2011 Dustin L. Howett + Released under the GPLv3 Licence. + + + + action + ryanDonate: + cell + PSButtonCell + label + Support + + + action + viewSource: + cell + PSButtonCell + label + Source Code + + + title + CyDelete8 + + diff --git a/Cydelete8/Resources/Cydia.png b/Cydelete8/Resources/Cydia.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3ae500d0698a2a4a9ec938da4af46d2f5d65d7 GIT binary patch literal 3977 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

2Ofj=h59578o317|}2t7?<%Wd!E;`E&YWE3^w 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 Z26#Bj{{Sy4lLP<&002ovPDHLkV1f+tX`}!E literal 0 HcmV?d00001 diff --git a/Cydelete8/Resources/Cydia@3x.png b/Cydelete8/Resources/Cydia@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc63a594d9d364e43d8763224122f7be076c193 GIT binary patch literal 14305 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 + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + Cydelete8 + CFBundleIdentifier + com.ryanburke.cydelete8 + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + VERSION + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTPlatformName + iphoneos + MinimumOSVersion + 8.0 + NSPrincipalClass + Cydelete8ListController + + diff --git a/Cydelete8/Resources/da.lproj/Localizable.strings b/Cydelete8/Resources/da.lproj/Localizable.strings new file mode 100755 index 0000000..5d7a730 --- /dev/null +++ b/Cydelete8/Resources/da.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Donere via PayPal + NON_CYDIA_DEL + Ikke-Cydia sletning + NON_CYDIA_DEL_TEXT + Tillad CyDelete at slette programmer der ikke var installeret med Cydia. Dette can være farligt og programmer afinstalleret på denne måde kan kun geninstallers manuelt. + PROTECTED_TITLE + Beskyttet program + PROTECTED_WARNING + Sletning af begge disse programmer wil efterlade dig uden et grafisk interface to at installer pakker, dette kan ikke anbefales. + + diff --git a/Cydelete8/Resources/de.lproj/Localizable.strings b/Cydelete8/Resources/de.lproj/Localizable.strings new file mode 100755 index 0000000..f672e01 --- /dev/null +++ b/Cydelete8/Resources/de.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Spenden via PayPal + NON_CYDIA_DEL + Erweiterte Optionen + NON_CYDIA_DEL_TEXT + ACHTUNG: Gefährlich! Mit dieser Option darf man Pakete deinstallieren die nicht durch Cydia installiert worden sind. Eine manuelle installation ist notwendig um die Pakete erneut zu installieren. + PROTECTED_TITLE + Gesicherte Applikationen + PROTECTED_WARNING + Das löschen aller dieser Applikationen ist NICHT empfohlen!! Danach ist es nicht mehr möglich Pakete über eine Grafische Benutzeroberfläche zu installieren. + + diff --git a/Cydelete8/Resources/en.lproj/Localizable.strings b/Cydelete8/Resources/en.lproj/Localizable.strings new file mode 100755 index 0000000..beeea13 --- /dev/null +++ b/Cydelete8/Resources/en.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Donate via PayPal + NON_CYDIA_DEL + Non-Cydia Deletion + NON_CYDIA_DEL_TEXT + Allows CyDelete to delete Applications that were not installed with Cydia. This can be dangerous, and applications uninstalled in this way can only be reinstalled manually. + PROTECTED_TITLE + Protected Applications + PROTECTED_WARNING + Deleting all of these applications will leave you without a Graphical Interface for installing packages, and is NOT recommended. + + diff --git a/Cydelete8/Resources/es.lproj/Localizable.strings b/Cydelete8/Resources/es.lproj/Localizable.strings new file mode 100755 index 0000000..34ca3aa --- /dev/null +++ b/Cydelete8/Resources/es.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Donar por PayPal + NON_CYDIA_DEL + No-Cydia Eliminación + NON_CYDIA_DEL_TEXT + CyDelete permite eliminar aplicaciones que no han sido instaladas con Cydia. Esto puede ser peligroso, y las aplicaciones desinstaladas de esta manera, solo pueden ser reinstaladas manualmente. + PROTECTED_TITLE + Aplicaciones protegidas + PROTECTED_WARNING + La eliminación de ambas aplicaciones le dejará sin Interfaz Gráfica para la instalación de paquetes, y NO se recomienda. + + diff --git a/Cydelete8/Resources/fr.lproj/Localizable.strings b/Cydelete8/Resources/fr.lproj/Localizable.strings new file mode 100755 index 0000000..cc37464 --- /dev/null +++ b/Cydelete8/Resources/fr.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Donner via Paypal + NON_CYDIA_DEL + Application non-Cydia + NON_CYDIA_DEL_TEXT + Permettre à Cydelete de supprimer les applications qui n'ont pas été installées avec Cydia. Cette option n'est pas recomandée, elle peut être dangereuse. Les application supprimées de cette manière ne pourront être réinstallées que manuellement. + PROTECTED_TITLE + Application protégée + PROTECTED_WARNING + Supprimer ce type d'applications (installeurs) vous laissera sans interface graphique pour installer vos applications. Ceci est fortement déconseillé ! + + diff --git a/Cydelete8/Resources/he.lproj/Localizable.strings b/Cydelete8/Resources/he.lproj/Localizable.strings new file mode 100755 index 0000000..af815d4 --- /dev/null +++ b/Cydelete8/Resources/he.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + תרומה באמצעות PayPal + NON_CYDIA_DEL + מחיקת תוכנה שאינה של Cydia + NON_CYDIA_DEL_TEXT + אפשר לתוכנה להסיר אפליקציה שלא הותקנה בעזרת Cydia. פעולה זו עשויה להיות מסוכנת, ואפליקציות שיסרו בצורה זו יוכלו להיות מתקנות אך ורק בצורה ידנית. + PROTECTED_TITLE + אפליקציות מוגנות + PROTECTED_WARNING + מחיקת שתי האפליקציות ישאירו אותך ללא ממשק גרפי להתקנות, פעולה זו אינה מומלצת! + + diff --git a/Cydelete8/Resources/hu.lproj/Localizable.strings b/Cydelete8/Resources/hu.lproj/Localizable.strings new file mode 100755 index 0000000..d10dabb --- /dev/null +++ b/Cydelete8/Resources/hu.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Adományozz PayPal-en keresztül + NON_CYDIA_DEL + Nem Cydia alkalmazás törlése + NON_CYDIA_DEL_TEXT + Megengedi a CyDelete számára a Cydia-n kívüli alkalmazások törlését. Ez veszélyes lehet, és az alkalmazások ilyen módú eltávolítása után az újratelepítés csak manuálisan lehetséges. + PROTECTED_TITLE + Védett alkalmazások + PROTECTED_WARNING + Ezen alkalmazások törlésénél elhagyod a telepítõ grafikus felhasználói felületét. Ez a funkció NEM ajánlott. + + diff --git a/Cydelete8/Resources/it.lproj/Localizable.strings b/Cydelete8/Resources/it.lproj/Localizable.strings new file mode 100755 index 0000000..c6295b5 --- /dev/null +++ b/Cydelete8/Resources/it.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Dona con PayPal + NON_CYDIA_DEL + Eliminazione Extra + NON_CYDIA_DEL_TEXT + Permette a CyDelete di eliminare le applicazioni che non sono state installate tramite Cydia. Questo procedimento può causare danni e le applicazioni eliminate in questo modo potranno essere reinstallate soltanto tramite SSH. + PROTECTED_TITLE + Applicazioni Protette + PROTECTED_WARNING + Cancellando queste applicazioni resterai senza interfaccia grafica durante l'installazione dei packages, quindi ti consigliamo di NON farlo. + + diff --git a/Cydelete8/Resources/nl.lproj/Localizable.strings b/Cydelete8/Resources/nl.lproj/Localizable.strings new file mode 100755 index 0000000..545070c --- /dev/null +++ b/Cydelete8/Resources/nl.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Doneer met Paypal + NON_CYDIA_DEL + Verwijdering zonder Cydia + NON_CYDIA_DEL_TEXT + Geeft CyDelete toestemming om applicaties die niet door Cydia geïnstalleerd zijn te verwijderen. Dit kan gevaarlijk zijn en applicaties op deze manier zijn gedeïnstalleerd kunnen alleen handmatig worden geherinstalleerd. + PROTECTED_TITLE + Beveiligde applicaties + PROTECTED_WARNING + Het verwijderen van allebij deze applicaties zorgt ervoor dat je geen grafische interface meer hebt om pakketten te installeren en is NIET aan te raden. + + diff --git a/Cydelete8/Resources/ru.lproj/Localizable.strings b/Cydelete8/Resources/ru.lproj/Localizable.strings new file mode 100755 index 0000000..1d9901a --- /dev/null +++ b/Cydelete8/Resources/ru.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + Взнос в PayPal + NON_CYDIA_DEL + Удаление не Cydia-приложения + NON_CYDIA_DEL_TEXT + Позволяет CyDelete удалять приложения, которые установлены не из Cydia. Это может быть опасно, и приложения, удаленные таким образом, могут быть переустановлены только вручную. + PROTECTED_TITLE + Защищенные приложения + PROTECTED_WARNING + Удаление обоих этих приложений НЕ рекомендуется, так как в результате будет удален весь графический интерфейс для установленных приложений. + + diff --git a/Cydelete8/Resources/tr.lproj/Localizable.strings b/Cydelete8/Resources/tr.lproj/Localizable.strings new file mode 100755 index 0000000..9cf6d0e --- /dev/null +++ b/Cydelete8/Resources/tr.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + PayPal ile Bağış Yap + NON_CYDIA_DEL + Cydia'dan Olmayan Silme + NON_CYDIA_DEL_TEXT + Bu CyDelete'in Cydia'dan yüklenmemiş öğelerin silmesine izin verir. Bu şeklide silmek tehlikeli olabilir ve silinen öğenin sadece manuel olarak yüklenebilmesine yol açabilir. + PROTECTED_TITLE + Korunan Öğe + PROTECTED_WARNING + Bu iki öğenin silinmesi sizi uygulama yüklemek için grafik arayüzünden mahrum bırakır, ve kesinlikle ÖNERİLMEZ. + + diff --git a/Cydelete8/Resources/zh_CN.lproj/Localizable.strings b/Cydelete8/Resources/zh_CN.lproj/Localizable.strings new file mode 100755 index 0000000..0cbdc34 --- /dev/null +++ b/Cydelete8/Resources/zh_CN.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + 通过PayPal捐助 + NON_CYDIA_DEL + 非Cydia卸载 + NON_CYDIA_DEL_TEXT + 允许CyDelete卸载不是在Cydia中安装的应用程序。此操作有一定的危险性,并且以这种方式卸载的应用程序只能手动重新安装。 + PROTECTED_TITLE + 受保护的程序 + PROTECTED_WARNING + 卸载这两个应用程序将会导致安装软件包时无图形界面,因此不推荐这样做。 + + diff --git a/Cydelete8/Resources/zh_TW.lproj/Localizable.strings b/Cydelete8/Resources/zh_TW.lproj/Localizable.strings new file mode 100755 index 0000000..e6fac81 --- /dev/null +++ b/Cydelete8/Resources/zh_TW.lproj/Localizable.strings @@ -0,0 +1,16 @@ + + + + + DONATE + 通過PayPal捐助 + NON_CYDIA_DEL + 非Cydia卸載 + NON_CYDIA_DEL_TEXT + 允許CyDelete卸載不是在Cydia中安裝的應用程式。此操作有一定的危險性,并且以這種方式卸載的應用程式只能手動重新安裝。 + PROTECTED_TITLE + 受保護的程式 + PROTECTED_WARNING + 卸載這兩個應用程式會導致安裝軟體時無圖形界面,因此不推薦這樣做。 + + diff --git a/Cydelete8/entry.plist b/Cydelete8/entry.plist new file mode 100644 index 0000000..09cc039 --- /dev/null +++ b/Cydelete8/entry.plist @@ -0,0 +1,10 @@ +{ + entry = { + bundle = Cydelete8; + cell = PSLinkCell; + detail = "Cydelete8ListController"; + icon = "CyDelete.png"; + isController = 1; + label = CyDelete8; + }; +} \ No newline at end of file diff --git a/cydelete7settings/theos b/Cydelete8/theos similarity index 100% rename from cydelete7settings/theos rename to Cydelete8/theos diff --git a/Makefile b/Makefile index 161439e..e6f24ea 100644 --- a/Makefile +++ b/Makefile @@ -1,22 +1,15 @@ -TWEAK_NAME = CyDelete7 -CyDelete7_CFLAGS = -fobjc-arc -CyDelete7_FILES = CyDelete7.xm -CyDelete7_FRAMEWORKS = Foundation, UIKit -CyDelete7_LIBRARIES = substrate -CyDelete7_CFLAGS = -fobjc-arc - -ARCHS = armv7 armv7s arm64 -TARGET = iphone:clang:latest:5.1.1 - -SUBPROJECTS += setuid cydelete7settings +ARCHS = armv7 arm64 +TARGET = iphone:8.1 include theos/makefiles/common.mk +TWEAK_NAME = CyDelete8 +CyDelete8_FILES = CyDelete8.xm +CyDelete8_FRAMEWORKS = Foundation, UIKit + include $(THEOS_MAKE_PATH)/tweak.mk +SUBPROJECTS += setuid Cydelete8 include $(THEOS_MAKE_PATH)/aggregate.mk -after-stage:: - find $(FW_STAGING_DIR) -iname '*.plist' -or -iname '*.strings' -exec plutil -convert binary1 {} \; - find $(FW_STAGING_DIR) -iname '*.png' -exec pincrush -i {} \; after-install:: install.exec "killall -9 SpringBoard" diff --git a/cydelete7settings/Makefile b/cydelete7settings/Makefile deleted file mode 100644 index 1568516..0000000 --- a/cydelete7settings/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -ARCHS = armv7 armv7s arm64 - -TARGET = iphone:clang:latest:5.1.1 - -include theos/makefiles/common.mk - -BUNDLE_NAME = cydelete7settings -cydelete7settings_CFLAGS = -fobjc-arc -cydelete7settings_FILES = cydelete7settings.m -cydelete7settings_INSTALL_PATH = /Library/PreferenceBundles -cydelete7settings_FRAMEWORKS = Foundation UIKit -cydelete7settings_PRIVATE_FRAMEWORKS = Preferences - -include $(THEOS_MAKE_PATH)/bundle.mk - -internal-stage:: - $(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END) - $(ECHO_NOTHING)cp entry.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/cydelete7settings.plist$(ECHO_END) diff --git a/cydelete7settings/Preferences/NSObject.h b/cydelete7settings/Preferences/NSObject.h deleted file mode 100644 index 86cb09c..0000000 --- a/cydelete7settings/Preferences/NSObject.h +++ /dev/null @@ -1,34 +0,0 @@ -/** - * This header is generated by class-dump-z 0.2a. - * class-dump-z is Copyright (C) 2009 by KennyTM~, licensed under GPLv3. - * - * Source: (null) - */ - -#import "Preferences-Structs.h" - - -@protocol NSObject --(id)description; --(unsigned)retainCount; --(id)autorelease; --(oneway void)release; --(id)retain; --(BOOL)respondsToSelector:(SEL)selector; --(BOOL)conformsToProtocol:(id)protocol; --(BOOL)isMemberOfClass:(Class)aClass; --(BOOL)isKindOfClass:(Class)aClass; --(BOOL)isProxy; --(id)performSelector:(SEL)selector withObject:(id)object withObject:(id)object3; --(id)performSelector:(SEL)selector withObject:(id)object; --(id)performSelector:(SEL)selector; --(NSZone*)zone; --(id)self; --(Class)class; --(Class)superclass; --(unsigned)hash; --(BOOL)isEqual:(id)equal; -@optional --(id)debugDescription; -@end - diff --git a/cydelete7settings/Preferences/PSListController.h b/cydelete7settings/Preferences/PSListController.h deleted file mode 100644 index 600531e..0000000 --- a/cydelete7settings/Preferences/PSListController.h +++ /dev/null @@ -1,226 +0,0 @@ -/* Generated by RuntimeBrowser - Image: /System/Library/PrivateFrameworks/Preferences.framework/Preferences - */ - -#import "PSViewController.h" - -#import -#import - -@class NSArray, NSMutableArray, NSMutableDictionary, NSString, UIActionSheet, UIAlertView, UIKeyboard, UIPopoverController, UITableView, UIView; - -@interface PSListController : PSViewController { - - /* - struct CGPoint { - float x; - float y; - UIActionSheet *_actionSheet; - UIAlertView *_alertView; - NSMutableArray *_bundleControllers; - BOOL _bundlesLoaded; - BOOL _cachesCells; - NSMutableDictionary *_cells; - UIView *_containerView; - } _contentOffsetWithKeyboard; - */ - - BOOL _edgeToEdgeCells; - BOOL _forceSynchronousIconLoadForCreatedCells; - NSMutableArray *_groups; - BOOL _hasAppeared; - //UIKeyboard *_keyboard; - BOOL _keyboardWasVisible; - NSString *_offsetItemName; - BOOL _popupIsDismissing; - BOOL _popupIsModal; - UIPopoverController *_popupStylePopoverController; - BOOL _popupStylePopoverShouldRePresent; - NSMutableArray *_prequeuedReusablePSTableCells; - BOOL _reusesCells; - BOOL _showingSetupController; - NSString *_specifierID; - NSArray *_specifiers; - NSMutableDictionary *_specifiersByID; - BOOL _swapAlertButtons; - UITableView *_table; - float _verticalContentOffset; -} - -@property BOOL edgeToEdgeCells; -@property BOOL forceSynchronousIconLoadForCreatedCells; - -+ (BOOL)displaysButtonBar; - -- (void)_addIdentifierForSpecifier:(id)arg1; -- (id)_createGroupIndices:(id)arg1; -- (id)_customViewForSpecifier:(id)arg1 class:(Class)arg2 isHeader:(BOOL)arg3; -- (BOOL)_getGroup:(int*)arg1 row:(int*)arg2 ofSpecifierAtIndex:(int)arg3 groups:(id)arg4; -- (float)_getKeyboardIntersectionHeight; -- (void)_handleActionSheet:(id)arg1 clickedButtonAtIndex:(int)arg2; -- (void)_insertContiguousSpecifiers:(id)arg1 atIndex:(int)arg2 animated:(BOOL)arg3; -- (void)_keyboardDidHide:(id)arg1; -- (void)_keyboardWillHide:(id)arg1; -- (void)_keyboardWillShow:(id)arg1; -- (void)_loadBundleControllers; -- (int)_nextGroupInSpecifiersAfterIndex:(int)arg1 inArray:(id)arg2; -- (void)_removeContiguousSpecifiers:(id)arg1 animated:(BOOL)arg2; -- (void)_removeIdentifierForSpecifier:(id)arg1; -- (void)_returnKeyPressed:(id)arg1; -- (void)_scrollToSpecifierNamed:(id)arg1; -- (void)_setContentInset:(float)arg1; -- (void)_setNotShowingSetupController; -- (float)_tableView:(id)arg1 heightForCustomInSection:(int)arg2 isHeader:(BOOL)arg3; -- (id)_tableView:(id)arg1 viewForCustomInSection:(int)arg2 isHeader:(BOOL)arg3; -- (void)_unloadBundleControllers; -- (void)actionSheet:(id)arg1 clickedButtonAtIndex:(int)arg2; -- (void)actionSheet:(id)arg1 didDismissWithButtonIndex:(int)arg2; -- (void)addSpecifier:(id)arg1 animated:(BOOL)arg2; -- (void)addSpecifier:(id)arg1; -- (void)addSpecifiersFromArray:(id)arg1 animated:(BOOL)arg2; -- (void)addSpecifiersFromArray:(id)arg1; -- (void)alertView:(id)arg1 clickedButtonAtIndex:(int)arg2; -- (void)beginUpdates; -- (id)bundle; -- (id)cachedCellForSpecifier:(id)arg1; -- (id)cachedCellForSpecifierID:(id)arg1; -- (void)clearCache; -- (void)confirmationViewAcceptedForSpecifier:(id)arg1; -- (void)confirmationViewCancelledForSpecifier:(id)arg1; -- (BOOL)containsSpecifier:(id)arg1; -- (id)controllerForRowAtIndexPath:(id)arg1; -- (id)controllerForSpecifier:(id)arg1; -- (void)createGroupIndices; -- (void)createPrequeuedPSTableCells:(unsigned int)arg1; -- (void)dealloc; -- (id)description; -- (void)didRotateFromInterfaceOrientation:(int)arg1; -- (void)dismissConfirmationViewForSpecifier:(id)arg1 animated:(BOOL)arg2; -- (void)dismissPopover; -- (void)dismissPopoverAnimated:(BOOL)arg1; -- (BOOL)edgeToEdgeCells; -- (void)endUpdates; -- (id)findFirstVisibleResponder; -- (BOOL)forceSynchronousIconLoadForCreatedCells; -- (void)formSheetViewWillDisappear; -- (BOOL)getGroup:(int*)arg1 row:(int*)arg2 ofSpecifier:(id)arg3; -- (BOOL)getGroup:(int*)arg1 row:(int*)arg2 ofSpecifierAtIndex:(int)arg3; -- (BOOL)getGroup:(int*)arg1 row:(int*)arg2 ofSpecifierID:(id)arg3; -- (void)handleURL:(id)arg1; -- (int)indexForIndexPath:(id)arg1; -- (int)indexForRow:(int)arg1 inGroup:(int)arg2; -- (int)indexOfGroup:(int)arg1; -- (int)indexOfSpecifier:(id)arg1; -- (int)indexOfSpecifierID:(id)arg1; -- (id)indexPathForIndex:(int)arg1; -- (id)indexPathForSpecifier:(id)arg1; -- (id)init; -- (id)initForContentSize:(CGSize)arg1; -- (void)insertContiguousSpecifiers:(id)arg1 afterSpecifier:(id)arg2 animated:(BOOL)arg3; -- (void)insertContiguousSpecifiers:(id)arg1 afterSpecifier:(id)arg2; -- (void)insertContiguousSpecifiers:(id)arg1 afterSpecifierID:(id)arg2 animated:(BOOL)arg3; -- (void)insertContiguousSpecifiers:(id)arg1 afterSpecifierID:(id)arg2; -- (void)insertContiguousSpecifiers:(id)arg1 atEndOfGroup:(int)arg2 animated:(BOOL)arg3; -- (void)insertContiguousSpecifiers:(id)arg1 atEndOfGroup:(int)arg2; -- (void)insertContiguousSpecifiers:(id)arg1 atIndex:(int)arg2 animated:(BOOL)arg3; -- (void)insertContiguousSpecifiers:(id)arg1 atIndex:(int)arg2; -- (void)insertSpecifier:(id)arg1 afterSpecifier:(id)arg2 animated:(BOOL)arg3; -- (void)insertSpecifier:(id)arg1 afterSpecifier:(id)arg2; -- (void)insertSpecifier:(id)arg1 afterSpecifierID:(id)arg2 animated:(BOOL)arg3; -- (void)insertSpecifier:(id)arg1 afterSpecifierID:(id)arg2; -- (void)insertSpecifier:(id)arg1 atEndOfGroup:(int)arg2 animated:(BOOL)arg3; -- (void)insertSpecifier:(id)arg1 atEndOfGroup:(int)arg2; -- (void)insertSpecifier:(id)arg1 atIndex:(int)arg2 animated:(BOOL)arg3; -- (void)insertSpecifier:(id)arg1 atIndex:(int)arg2; -- (void)lazyLoadBundle:(id)arg1; -- (id)loadSpecifiersFromPlistName:(id)arg1 target:(id)arg2; -- (void)loadView; -- (void)loseFocus; -- (void)migrateSpecifierMetadataFrom:(id)arg1 to:(id)arg2; -- (int)numberOfGroups; -- (int)numberOfSectionsInTableView:(id)arg1; -- (BOOL)performActionForSpecifier:(id)arg1; -- (BOOL)performButtonActionForSpecifier:(id)arg1; -- (BOOL)performConfirmationActionForSpecifier:(id)arg1; -- (BOOL)performConfirmationCancelActionForSpecifier:(id)arg1; -- (BOOL)performLoadActionForSpecifier:(id)arg1; -- (void)popoverController:(id)arg1 animationCompleted:(int)arg2; -- (BOOL)popoverControllerShouldDismissPopover:(id)arg1; -- (id)popupStylePopoverController; -- (void)popupViewWillDisappear; -- (void)prepareSpecifiersMetadata; -- (void)pushController:(id)arg1 animate:(BOOL)arg2; -- (void)pushController:(id)arg1; -- (void)reload; -- (void)reloadIconForSpecifierForBundle:(id)arg1; -- (void)reloadSpecifier:(id)arg1 animated:(BOOL)arg2; -- (void)reloadSpecifier:(id)arg1; -- (void)reloadSpecifierAtIndex:(int)arg1 animated:(BOOL)arg2; -- (void)reloadSpecifierAtIndex:(int)arg1; -- (void)reloadSpecifierID:(id)arg1 animated:(BOOL)arg2; -- (void)reloadSpecifierID:(id)arg1; -- (void)reloadSpecifiers; -- (void)removeContiguousSpecifiers:(id)arg1 animated:(BOOL)arg2; -- (void)removeContiguousSpecifiers:(id)arg1; -- (void)removeLastSpecifier; -- (void)removeLastSpecifierAnimated:(BOOL)arg1; -- (void)removeSpecifier:(id)arg1 animated:(BOOL)arg2; -- (void)removeSpecifier:(id)arg1; -- (void)removeSpecifierAtIndex:(int)arg1 animated:(BOOL)arg2; -- (void)removeSpecifierAtIndex:(int)arg1; -- (void)removeSpecifierID:(id)arg1 animated:(BOOL)arg2; -- (void)removeSpecifierID:(id)arg1; -- (void)replaceContiguousSpecifiers:(id)arg1 withSpecifiers:(id)arg2 animated:(BOOL)arg3; -- (void)replaceContiguousSpecifiers:(id)arg1 withSpecifiers:(id)arg2; -- (void)returnPressedAtEnd; -- (int)rowsForGroup:(int)arg1; -- (void)selectRowForSpecifier:(id)arg1; -- (void)setCachesCells:(BOOL)arg1; -- (void)setDesiredVerticalContentOffset:(float)arg1; -- (void)setDesiredVerticalContentOffsetItemNamed:(id)arg1; -- (void)setEdgeToEdgeCells:(BOOL)arg1; -- (void)setForceSynchronousIconLoadForCreatedCells:(BOOL)arg1; -- (void)setReusesCells:(BOOL)arg1; -- (void)setSpecifier:(id)arg1; -- (void)setSpecifierID:(id)arg1; -- (void)setSpecifiers:(id)arg1; -- (void)setTitle:(id)arg1; -- (BOOL)shouldReloadSpecifiersOnResume; -- (BOOL)shouldSelectResponderOnAppearance; -- (void)showConfirmationViewForSpecifier:(id)arg1 useAlert:(BOOL)arg2 swapAlertButtons:(BOOL)arg3; -- (void)showConfirmationViewForSpecifier:(id)arg1; -- (void)showPINSheet:(id)arg1; -- (id)specifier; -- (id)specifierAtIndex:(int)arg1; -- (id)specifierForID:(id)arg1; -- (id)specifierID; -- (id)specifiers; -- (id)specifiersInGroup:(int)arg1; -- (id)table; -- (id)tableView:(id)arg1 cellForRowAtIndexPath:(id)arg2; -- (id)tableView:(id)arg1 detailTextForHeaderInSection:(int)arg2; -- (void)tableView:(id)arg1 didEndDisplayingCell:(id)arg2 forRowAtIndexPath:(id)arg3; -- (void)tableView:(id)arg1 didSelectRowAtIndexPath:(id)arg2; -- (float)tableView:(id)arg1 heightForFooterInSection:(int)arg2; -- (float)tableView:(id)arg1 heightForHeaderInSection:(int)arg2; -- (float)tableView:(id)arg1 heightForRowAtIndexPath:(id)arg2; -- (int)tableView:(id)arg1 numberOfRowsInSection:(int)arg2; -- (int)tableView:(id)arg1 titleAlignmentForFooterInSection:(int)arg2; -- (int)tableView:(id)arg1 titleAlignmentForHeaderInSection:(int)arg2; -- (id)tableView:(id)arg1 titleForFooterInSection:(int)arg2; -- (id)tableView:(id)arg1 titleForHeaderInSection:(int)arg2; -- (id)tableView:(id)arg1 viewForFooterInSection:(int)arg2; -- (id)tableView:(id)arg1 viewForHeaderInSection:(int)arg2; -- (Class)tableViewClass; -- (void)updateSpecifiers:(id)arg1 withSpecifiers:(id)arg2; -- (void)updateSpecifiersInRange:(NSRange)arg1 withSpecifiers:(id)arg2; -- (float)verticalContentOffset; -- (void)viewDidAppear:(BOOL)arg1; -- (void)viewDidLayoutSubviews; -- (void)viewDidLoad; -- (void)viewDidUnload; -- (void)viewWillAppear:(BOOL)arg1; -- (void)viewWillDisappear:(BOOL)arg1; -- (void)willAnimateRotationToInterfaceOrientation:(int)arg1 duration:(double)arg2; - -@end \ No newline at end of file diff --git a/cydelete7settings/Preferences/PSSpecifier.h b/cydelete7settings/Preferences/PSSpecifier.h deleted file mode 100644 index 8687af1..0000000 --- a/cydelete7settings/Preferences/PSSpecifier.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Generated by class-dump 3.4 (64 bit). - * - * class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2012 by Steve Nygard. - */ - -@class NSArray, NSDictionary, NSMutableDictionary, NSString; - -@interface PSSpecifier : NSObject -{ - id target; - SEL getter; - SEL setter; - SEL action; - SEL cancel; - Class detailControllerClass; - int cellType; - Class editPaneClass; - int keyboardType; - int autoCapsType; - int autoCorrectionType; - unsigned int textFieldType; - NSString *_name; - NSArray *_values; - NSDictionary *_titleDict; - NSDictionary *_shortTitleDict; - id _userInfo; - NSMutableDictionary *_properties; - SEL _confirmationAction; - SEL _confirmationCancelAction; - SEL _buttonAction; - SEL _controllerLoadAction; - BOOL _showContentString; -} - -+ (int)keyboardTypeForString:(id)arg1; -+ (int)autoCapsTypeForString:(id)arg1; -+ (int)autoCorrectionTypeForNumber:(id)arg1; -+ (id)emptyGroupSpecifier; -+ (id)groupSpecifierWithName:(id)arg1; -+ (id)preferenceSpecifierNamed:(id)arg1 target:(id)arg2 set:(SEL)arg3 get:(SEL)arg4 detail:(Class)arg5 cell:(int)arg6 edit:(Class)arg7; -+ (id)deleteButtonSpecifierWithName:(id)arg1 target:(id)arg2 action:(SEL)arg3; -@property(nonatomic) BOOL showContentString; // @synthesize showContentString=_showContentString; -@property(nonatomic) SEL controllerLoadAction; // @synthesize controllerLoadAction=_controllerLoadAction; -@property(nonatomic) SEL buttonAction; // @synthesize buttonAction=_buttonAction; -@property(nonatomic) SEL confirmationCancelAction; // @synthesize confirmationCancelAction=_confirmationCancelAction; -@property(nonatomic) SEL confirmationAction; // @synthesize confirmationAction=_confirmationAction; -@property(retain, nonatomic) NSString *name; // @synthesize name=_name; -@property(retain, nonatomic) NSArray *values; // @synthesize values=_values; -@property(retain, nonatomic) NSDictionary *shortTitleDictionary; // @synthesize shortTitleDictionary=_shortTitleDict; -@property(retain, nonatomic) NSDictionary *titleDictionary; // @synthesize titleDictionary=_titleDict; -@property(retain, nonatomic) id userInfo; // @synthesize userInfo=_userInfo; -@property(nonatomic) Class editPaneClass; // @synthesize editPaneClass; -@property(nonatomic) int cellType; // @synthesize cellType; -@property(nonatomic) Class detailControllerClass; // @synthesize detailControllerClass; -@property(nonatomic) id target; // @synthesize target; -- (int)titleCompare:(id)arg1; -- (void)setKeyboardType:(int)arg1 autoCaps:(int)arg2 autoCorrection:(int)arg3; -@property(retain, nonatomic) NSString *identifier; -- (id)description; -- (void)dealloc; -- (void)setupIconImageWithPath:(id)arg1; -- (void)setupIconImageWithBundle:(id)arg1; -- (void)setValues:(id)arg1 titles:(id)arg2 shortTitles:(id)arg3 usingLocalizedTitleSorting:(BOOL)arg4; -- (void)setValues:(id)arg1 titles:(id)arg2 shortTitles:(id)arg3; -- (void)setValues:(id)arg1 titles:(id)arg2; -- (void)loadValuesAndTitlesFromDataSource; -- (id)properties; -- (void)setProperties:(id)arg1; -- (void)removePropertyForKey:(id)arg1; -- (void)setProperty:(id)arg1 forKey:(id)arg2; -- (id)propertyForKey:(id)arg1; -- (id)init; - -@end \ No newline at end of file diff --git a/cydelete7settings/Preferences/PSViewController.h b/cydelete7settings/Preferences/PSViewController.h deleted file mode 100644 index b5f0b60..0000000 --- a/cydelete7settings/Preferences/PSViewController.h +++ /dev/null @@ -1,41 +0,0 @@ -/* Generated by RuntimeBrowser - Image: /System/Library/PrivateFrameworks/Preferences.framework/Preferences - */ - -#import -#import - -//@class PSRootController, PSSpecifier, UIViewController; - -@interface PSViewController : UIViewController /**/ { - /*UIViewController *_parentController; - PSRootController *_rootController; - PSSpecifier *_specifier;*/ -} - -- (BOOL)canBeShownFromSuspendedState; -- (void)dealloc; -- (void)didLock; -- (void)didUnlock; -- (void)didWake; -- (void)formSheetViewDidDisappear; -- (void)formSheetViewWillDisappear; -- (void)handleURL:(id)arg1; -- (id)parentController; -- (void)popupViewDidDisappear; -- (void)popupViewWillDisappear; -- (void)pushController:(id)arg1; -- (id)readPreferenceValue:(id)arg1; -- (id)rootController; -- (void)setParentController:(id)arg1; -- (void)setPreferenceValue:(id)arg1 specifier:(id)arg2; -- (void)setRootController:(id)arg1; -- (void)setSpecifier:(id)arg1; -- (id)specifier; -- (void)statusBarWillAnimateByHeight:(float)arg1; -- (void)suspend; -- (void)willBecomeActive; -- (void)willResignActive; -- (void)willUnlock; - -@end \ No newline at end of file diff --git a/cydelete7settings/Preferences/Preferences-Structs.h b/cydelete7settings/Preferences/Preferences-Structs.h deleted file mode 100644 index ff51d32..0000000 --- a/cydelete7settings/Preferences/Preferences-Structs.h +++ /dev/null @@ -1,34 +0,0 @@ -/** - * This header is generated by class-dump-z 0.2a. - * class-dump-z is Copyright (C) 2009 by KennyTM~, licensed under GPLv3. - * - * Source: (null) - */ - -typedef struct _NSZone NSZone; - -typedef struct CGPoint { - float _field1; - float _field2; -} CGPoint; - -typedef struct CGSize { - float _field1; - float _field2; -} CGSize; - -typedef struct CGRect { - CGPoint _field1; - CGSize _field2; -} CGRect; - -typedef struct _NSRange { - unsigned _field1; - unsigned _field2; -} NSRange; - -typedef struct __CFString* CFStringRef; - -typedef struct __CFDateFormatter* CFDateFormatterRef; - - diff --git a/cydelete7settings/Resources/Cydia.png b/cydelete7settings/Resources/Cydia.png deleted file mode 100644 index af15d71e2be28dfcef09df19adcce3830ee87470..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2509 zcmV;;2{QJHP)?%Q7=8wLUd5~4_uKnMsJKyU!D2o-UxrMBZTv?C)r9jD4T9ostU=(L4a zYN?7-XVu%O`n2iV_BrkdUyGy_GqvIc)-p9+m+zw@2*G|%%O z$B&mUoo&1J!|>cG(DdQDu4%43qJW4PhOUX6>$-CC48zbI+lFD9>Ym)!bsZX|u3j7P z_|Y}v0>zs(&sqP+cen1Bmo?G&&|P;te&dvyXU9#dgWu<)BEBpiYLMrm*zj4f0zsaA z@L3jg!=!(%GLX-tk_(?WaW%$ z`goU-(fRO@LL54J%xUlLnqy3=8uQwXb(6>1^fr@9KvL>5I>*kdvo3}mhi~#9uSKcN zXPUulMke{pWwS6%anOY$U)xcscKBYNjyaC4G8T(Q^sn15j56)KJ;5|I!bv$?F7OA~p#DJe}34iY2*<=Mh}AH>+2TAcm78IAw=D*={6Fcds|F#(pvCu_8ZQuMS_?eA5V&G`wUUZ*310U-uNM~wQKO2>0rB7Cj zxW-H+5(JQgG#yxW|3d^r6n}Z{=R|c1GncNQBNI_sI}OFdN6@f_wj&3qAV-CkbPdMe zG!Ipir?Kw)aN_X4F^x`_Q1-~aoeDEKqT3>=oN4Q_b=H&_OR0iO|AnGMP+2nxhj)I2 zfh$+o7B+f1zD9BRXjIfrMfI%tpxbCWv=7;MA4;pPL;cdbNs}hpzG%Vf-)=nCwLiGYTL}Waaw$kRWr& z(Z)6?ip8+*XKN5ED#ipFD}U-Y*t2Op(L0EAe=klR*bQH7D5f&KKJv00Z*2TME|4ht z29oOk@&11F@yjGAs?mRx6g`fa zHWyDVUxecaKE~|(9!A6WANYd)SiGCiR|&!qtl7Lqt{ z`osw(J!!^GID51S7CqBk4U1RahflU{!Hu^qL*0T!sGMAXRV)8C@7|8?&Nejd-Gy__ zO=K${#!s8Bo_CPJLYB;2PobAVX{OK8HN`TyJPjDQ(EgPYzKP_}(Q*`FdMeXZ(kBMx zkP%jX?e%zX-7_%d{*o1#GJhdtyq`XL2o5LJj9YG1vR}0_2vVZ1d;d)@_4!OodFCf| zG27_x>O?F1Z2ld0BV14jm#q*DhwwoCIP`RNC`B^R<@oL+Yq8`fKSfFTC^YZgfsfzW zj8MRjXskfJ-*Wg6;_M7RBj=_;!=?n_GQ;ppvXDd>B6GyTVZ8tH2KH+VtA6nUEZz%8 zBZ#ryPcEB_FPjb`5Q!6P7a> zT+j+iw3;!xFuJy?ti;MHc44$^wu_zZh!D9Ax8I49vT}UZxC=qQrB<1iU0ZRntqtc} zj^VW@A4SjU69|&X2@vwOiF+P@8ucvA&bMDj)3z-Nm{+$eO=YaJw?A)MhN($knF2RX z8XvtXEEu*TZx}kfr52+NB8v~rDvJXX>&bOcc6;kmy=B!wW zac|Y*_|6Y;;@}>%pKRg6#g!)KqM~jxs_SQ>cHt5P!cmUEH}SzM>k%m^fWrZzLE9fm!}T9anb@(qN8p>Q^kgv`?bf#Z6lC=z{? zY0dN8efkT$^~=XlFtiwjqbpH9ZX8!xuBR-=rM7eE;~>9s@d6bSjG=&Cw!I6ziR2S+G&Vn{jEa9hm|NGN>Ap2oR!{k11c889 zyysrcC^@)A2Y+&Cve{{3fq%%U{9U7@C@jmG*iyfDctIge`-W}uDHrzNZQj?^C_4WG XgteN%yJqUk00000NkvXXu0mjfit)zk diff --git a/cydelete7settings/Resources/Cydia@2x.png b/cydelete7settings/Resources/Cydia@2x.png deleted file mode 100644 index 1a73ddb8a6c2c445e3112fc93d5a4d5831f65b59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8377 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.0), mobilesubstrate, preferenceloader, apt, bash, grep, coreutils -Version: 0.7 +Package: com.ryanburke.cydelete8 +Name: CyDelete8 +Depends: firmware (>=8.0), mobilesubstrate, preferenceloader, apt, bash, grep, coreutils +Version: 0.8 Architecture: iphoneos-arm -Description: Allows you to uninstall applications installed via Cydia from the Springboard just like AppStore applications. This application is a new branch of the original CyDelete, created by @DHowett, bringing new support for iOS 7. Supports ARM7(S) and ARM64 devices. Must be on iOS 7. Source code available in Settings. +Description: Allows you to uninstall applications installed via Cydia from the Springboard just like AppStore applications. This application is a new branch of the original CyDelete, created by @DHowett, bringing new support for iOS 8. Maintainer: Ryan Burke Author: Ryan Burke Section: Tweaks -Tag: purpose::extension, role::enduser \ No newline at end of file +Tag: purpose::extension, role::enduser diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/Info.plist b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/Info.plist similarity index 87% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/Info.plist rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/Info.plist index 547210c..a0ffb9e 100755 --- a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/Info.plist +++ b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/Info.plist @@ -5,9 +5,9 @@ CFBundleDevelopmentRegion English CFBundleExecutable - CyDelete7.dylib + CyDelete8.dylib CFBundleIdentifier - com.ryanburke.cydelete7 + com.ryanburke.cydelete8 CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType @@ -21,6 +21,6 @@ DTPlatformName iphoneos MinimumOSVersion - 7.0 + 8.0 diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/convert.sh b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/convert.sh similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/convert.sh rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/convert.sh diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/da.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/da.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/da.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/da.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/de.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/de.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/de.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/de.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/en.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/en.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/en.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/en.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/es.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/es.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/es.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/es.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/fr.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/fr.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/fr.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/fr.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/he.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/he.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/he.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/he.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/hu.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/hu.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/hu.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/hu.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/it.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/it.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/it.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/it.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/nl.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/nl.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/nl.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/nl.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/ru.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/ru.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/ru.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/ru.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/tr.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/tr.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/tr.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/tr.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/zh_CN.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/zh_CN.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/zh_CN.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/zh_CN.lproj/Localizable.strings diff --git a/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/zh_TW.lproj/Localizable.strings b/layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/zh_TW.lproj/Localizable.strings similarity index 100% rename from layout/Library/MobileSubstrate/DynamicLibraries/CyDelete.bundle/zh_TW.lproj/Localizable.strings rename to layout/Library/MobileSubstrate/DynamicLibraries/CyDelete8.bundle/zh_TW.lproj/Localizable.strings diff --git a/setuid/Makefile b/setuid/Makefile index 6a55079..2035300 100644 --- a/setuid/Makefile +++ b/setuid/Makefile @@ -2,11 +2,11 @@ TOOL_NAME := setuid setuid_C_FILES = setuid.c setuid_PACKAGE_TARGET_DIR = /usr/libexec/cydelete -ARCHS = armv7 armv7s arm64 +ARCHS = armv7 arm64 include ../theos/makefiles/common.mk include ../theos/makefiles/tool.mk after-setuid-stage:: sudo chmod 4755 $(FW_STAGING_DIR)/usr/libexec/cydelete/setuid - sudo chown root $(FW_STAGING_DIR)/usr/libexec/cydelete/setuid + sudo chown root:wheel $(FW_STAGING_DIR)/usr/libexec/cydelete/setuid diff --git a/setuid/setuid.c b/setuid/setuid.c index 35a0ffd..2f40773 100644 --- a/setuid/setuid.c +++ b/setuid/setuid.c @@ -1,7 +1,10 @@ #include #include + int main(int argc, char **argv) { setuid(0); - execve(argv[1], (argc > 1) ? argv+1 : 0, 0); + char *params[] = {argv[0], argv[1], NULL}; + char *env[] = {NULL}; + execve(argv[0], params, env); return 0; } diff --git a/substrate.h b/substrate.h deleted file mode 100644 index 092001d..0000000 --- a/substrate.h +++ /dev/null @@ -1,298 +0,0 @@ -#ifndef SUBSTRATE_H_ -#define SUBSTRATE_H_ - -#ifdef __APPLE__ -#ifdef __cplusplus -extern "C" { -#endif -#include -#ifdef __cplusplus -} -#endif - -#include -#include -#endif - -#include - -#ifdef __APPLE__ -#include -#endif - -#define _finline \ -inline __attribute__((__always_inline__)) -#define _disused \ -__attribute__((__unused__)) - -#ifdef __cplusplus -#define _default(value) = value -#else -#define _default(value) -#endif - -#ifdef __cplusplus -extern "C" { -#endif - - void MSHookFunction(void *symbol, void *replace, void **result); - -#ifdef __APPLE__ - IMP MSHookMessage(Class _class, SEL sel, IMP imp, const char *prefix _default(NULL)); - void MSHookMessageEx(Class _class, SEL sel, IMP imp, IMP *result); -#endif - -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus - -#ifdef __APPLE__ - -namespace etl { - - template - struct Case { - static char value[Case_ + 1]; - }; - - typedef Case Yes; - typedef Case No; - - namespace be { - template - static Yes CheckClass_(void (Checked_::*)()); - - template - static No CheckClass_(...); - } - - template - struct IsClass { - void gcc32(); - - static const bool value = (sizeof(be::CheckClass_(0).value) == sizeof(Yes::value)); - }; - -} - -template -static inline Type_ *MSHookMessage(Class _class, SEL sel, Type_ *imp, const char *prefix = NULL) { - return reinterpret_cast(MSHookMessage(_class, sel, reinterpret_cast(imp), prefix)); -} - -template -static inline void MSHookMessage(Class _class, SEL sel, Type_ *imp, Type_ **result) { - return MSHookMessageEx(_class, sel, reinterpret_cast(imp), reinterpret_cast(result)); -} - -template -static inline Type_ &MSHookIvar(id self, const char *name) { - Ivar ivar(class_getInstanceVariable(object_getClass(self), name)); -#if __has_feature(objc_arc) - void *pointer(ivar == NULL ? NULL : reinterpret_cast((__bridge void *)self) + ivar_getOffset(ivar)); -#else - void *pointer(ivar == NULL ? NULL : reinterpret_cast(self) + ivar_getOffset(ivar)); -#endif - return *reinterpret_cast(pointer); -} - -#define MSAddMessage0(_class, type, arg0) \ -class_addMethod($ ## _class, @selector(arg0), (IMP) &$ ## _class ## $ ## arg0, type); -#define MSAddMessage1(_class, type, arg0) \ -class_addMethod($ ## _class, @selector(arg0:), (IMP) &$ ## _class ## $ ## arg0 ## $, type); -#define MSAddMessage2(_class, type, arg0, arg1) \ -class_addMethod($ ## _class, @selector(arg0:arg1:), (IMP) &$ ## _class ## $ ## arg0 ## $ ## arg1 ## $, type); - - -#define MSHookMessage0(_class, arg0) \ -MSHookMessage($ ## _class, @selector(arg0), MSHake(_class ## $ ## arg0)) -#define MSHookMessage1(_class, arg0) \ -MSHookMessage($ ## _class, @selector(arg0:), MSHake(_class ## $ ## arg0 ## $)) -#define MSHookMessage2(_class, arg0, arg1) \ -MSHookMessage($ ## _class, @selector(arg0:arg1:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $)) -#define MSHookMessage3(_class, arg0, arg1, arg2) \ -MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $)) -#define MSHookMessage4(_class, arg0, arg1, arg2, arg3) \ -MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:arg3:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $)) -#define MSHookMessage5(_class, arg0, arg1, arg2, arg3, arg4) \ -MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:arg3:arg4:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $ ## arg4 ## $)) -#define MSHookMessage6(_class, arg0, arg1, arg2, arg3, arg4, arg5) \ -MSHookMessage($ ## _class, @selector(arg0:arg1:arg2:arg3:arg4:arg5:), MSHake(_class ## $ ## arg0 ## $ ## arg1 ## $ ## arg2 ## $ ## arg3 ## $ ## arg4 ## $ ## arg5 ## $)) - -#define MSRegister_(name, dollar, colon) \ -static class C_$ ## name ## $ ## dollar { public: _finline C_$ ## name ## $ ##dollar() { \ -MSHookMessage($ ## name, @selector(colon), MSHake(name ## $ ## dollar)); \ -} } V_$ ## name ## $ ## dollar; \ - -#define MSIgnore_(name, dollar, colon) - -#define MSMessage_(extra, type, _class, name, dollar, colon, call, args...) \ -static type _$ ## name ## $ ## dollar(Class _cls, type (*_old)(_class, SEL, ## args), type (*_spr)(struct objc_super *, SEL, ## args), _class self, SEL _cmd, ## args); \ -MSHook(type, name ## $ ## dollar, _class self, SEL _cmd, ## args) { \ -Class const _cls($ ## name); \ -type (* const _old)(_class, SEL, ## args) = _ ## name ## $ ## dollar; \ -typedef type (*msgSendSuper_t)(struct objc_super *, SEL, ## args); \ -msgSendSuper_t const _spr(::etl::IsClass::value ? reinterpret_cast(&objc_msgSendSuper_stret) : reinterpret_cast(&objc_msgSendSuper)); \ -return _$ ## name ## $ ## dollar call; \ -} \ -extra(name, dollar, colon) \ -static _finline type _$ ## name ## $ ## dollar(Class _cls, type (*_old)(_class, SEL, ## args), type (*_spr)(struct objc_super *, SEL, ## args), _class self, SEL _cmd, ## args) - -/* for((x=1;x!=7;++x)){ echo -n "#define MSMessage${x}_(extra, type, _class, name";for((y=0;y!=x;++y));do echo -n ", sel$y";done;for((y=0;y!=x;++y));do echo -n ", type$y, arg$y";done;echo ") \\";echo -n " MSMessage_(extra, type, _class, name,";for((y=0;y!=x;++y));do if [[ $y -ne 0 ]];then echo -n " ##";fi;echo -n " sel$y ## $";done;echo -n ", ";for((y=0;y!=x;++y));do echo -n "sel$y:";done;echo -n ", (_cls, _old, _spr, self, _cmd";for((y=0;y!=x;++y));do echo -n ", arg$y";done;echo -n ")";for((y=0;y!=x;++y));do echo -n ", type$y arg$y";done;echo ")";} */ - -#define MSMessage0_(extra, type, _class, name, sel0) \ -MSMessage_(extra, type, _class, name, sel0, sel0, (_cls, _old, _spr, self, _cmd)) -#define MSMessage1_(extra, type, _class, name, sel0, type0, arg0) \ -MSMessage_(extra, type, _class, name, sel0 ## $, sel0:, (_cls, _old, _spr, self, _cmd, arg0), type0 arg0) -#define MSMessage2_(extra, type, _class, name, sel0, sel1, type0, arg0, type1, arg1) \ -MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $, sel0:sel1:, (_cls, _old, _spr, self, _cmd, arg0, arg1), type0 arg0, type1 arg1) -#define MSMessage3_(extra, type, _class, name, sel0, sel1, sel2, type0, arg0, type1, arg1, type2, arg2) \ -MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $, sel0:sel1:sel2:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2), type0 arg0, type1 arg1, type2 arg2) -#define MSMessage4_(extra, type, _class, name, sel0, sel1, sel2, sel3, type0, arg0, type1, arg1, type2, arg2, type3, arg3) \ -MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $ ## sel3 ## $, sel0:sel1:sel2:sel3:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2, arg3), type0 arg0, type1 arg1, type2 arg2, type3 arg3) -#define MSMessage5_(extra, type, _class, name, sel0, sel1, sel2, sel3, sel4, type0, arg0, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ -MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $ ## sel3 ## $ ## sel4 ## $, sel0:sel1:sel2:sel3:sel4:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2, arg3, arg4), type0 arg0, type1 arg1, type2 arg2, type3 arg3, type4 arg4) -#define MSMessage6_(extra, type, _class, name, sel0, sel1, sel2, sel3, sel4, sel5, type0, arg0, type1, arg1, type2, arg2, type3, arg3, type4, arg4, type5, arg5) \ -MSMessage_(extra, type, _class, name, sel0 ## $ ## sel1 ## $ ## sel2 ## $ ## sel3 ## $ ## sel4 ## $ ## sel5 ## $, sel0:sel1:sel2:sel3:sel4:sel5:, (_cls, _old, _spr, self, _cmd, arg0, arg1, arg2, arg3, arg4, arg5), type0 arg0, type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) - -#define MSInstanceMessage0(type, _class, args...) MSMessage0_(MSIgnore_, type, _class *, _class, ## args) -#define MSInstanceMessage1(type, _class, args...) MSMessage1_(MSIgnore_, type, _class *, _class, ## args) -#define MSInstanceMessage2(type, _class, args...) MSMessage2_(MSIgnore_, type, _class *, _class, ## args) -#define MSInstanceMessage3(type, _class, args...) MSMessage3_(MSIgnore_, type, _class *, _class, ## args) -#define MSInstanceMessage4(type, _class, args...) MSMessage4_(MSIgnore_, type, _class *, _class, ## args) -#define MSInstanceMessage5(type, _class, args...) MSMessage5_(MSIgnore_, type, _class *, _class, ## args) -#define MSInstanceMessage6(type, _class, args...) MSMessage6_(MSIgnore_, type, _class *, _class, ## args) - -#define MSClassMessage0(type, _class, args...) MSMessage0_(MSIgnore_, type, Class, $ ## _class, ## args) -#define MSClassMessage1(type, _class, args...) MSMessage1_(MSIgnore_, type, Class, $ ## _class, ## args) -#define MSClassMessage2(type, _class, args...) MSMessage2_(MSIgnore_, type, Class, $ ## _class, ## args) -#define MSClassMessage3(type, _class, args...) MSMessage3_(MSIgnore_, type, Class, $ ## _class, ## args) -#define MSClassMessage4(type, _class, args...) MSMessage4_(MSIgnore_, type, Class, $ ## _class, ## args) -#define MSClassMessage5(type, _class, args...) MSMessage5_(MSIgnore_, type, Class, $ ## _class, ## args) -#define MSClassMessage6(type, _class, args...) MSMessage6_(MSIgnore_, type, Class, $ ## _class, ## args) - -#define MSInstanceMessageHook0(type, _class, args...) MSMessage0_(MSRegister_, type, _class *, _class, ## args) -#define MSInstanceMessageHook1(type, _class, args...) MSMessage1_(MSRegister_, type, _class *, _class, ## args) -#define MSInstanceMessageHook2(type, _class, args...) MSMessage2_(MSRegister_, type, _class *, _class, ## args) -#define MSInstanceMessageHook3(type, _class, args...) MSMessage3_(MSRegister_, type, _class *, _class, ## args) -#define MSInstanceMessageHook4(type, _class, args...) MSMessage4_(MSRegister_, type, _class *, _class, ## args) -#define MSInstanceMessageHook5(type, _class, args...) MSMessage5_(MSRegister_, type, _class *, _class, ## args) -#define MSInstanceMessageHook6(type, _class, args...) MSMessage6_(MSRegister_, type, _class *, _class, ## args) - -#define MSClassMessageHook0(type, _class, args...) MSMessage0_(MSRegister_, type, Class, $ ## _class, ## args) -#define MSClassMessageHook1(type, _class, args...) MSMessage1_(MSRegister_, type, Class, $ ## _class, ## args) -#define MSClassMessageHook2(type, _class, args...) MSMessage2_(MSRegister_, type, Class, $ ## _class, ## args) -#define MSClassMessageHook3(type, _class, args...) MSMessage3_(MSRegister_, type, Class, $ ## _class, ## args) -#define MSClassMessageHook4(type, _class, args...) MSMessage4_(MSRegister_, type, Class, $ ## _class, ## args) -#define MSClassMessageHook5(type, _class, args...) MSMessage5_(MSRegister_, type, Class, $ ## _class, ## args) -#define MSClassMessageHook6(type, _class, args...) MSMessage6_(MSRegister_, type, Class, $ ## _class, ## args) - -#define MSOldCall(args...) \ -_old(self, _cmd, ## args) -#define MSSuperCall(args...) \ -_spr(& (struct objc_super) {self, class_getSuperclass(_cls)}, _cmd, ## args) - -#define MSIvarHook(type, name) \ -type &name(MSHookIvar(self, #name)) - -#define MSClassHook(name) \ -@class name; \ -static Class $ ## name = objc_getClass(#name); -#define MSMetaClassHook(name) \ -@class name; \ -static Class $$ ## name = object_getClass($ ## name); - -#endif/*__APPLE__*/ - -template -static inline void MSHookFunction(Type_ *symbol, Type_ *replace, Type_ **result) { - return MSHookFunction( - reinterpret_cast(symbol), - reinterpret_cast(replace), - reinterpret_cast(result) - ); -} - -template -static inline void MSHookFunction(Type_ *symbol, Type_ *replace) { - return MSHookFunction(symbol, replace, reinterpret_cast(NULL)); -} - -template -static inline void MSHookSymbol(Type_ *&value, const char *name, void *handle = RTLD_DEFAULT) { - value = reinterpret_cast(dlsym(handle, name)); -} - -/* Objective-C Handle<> {{{ */ -template -class _H { - typedef _H This_; - -private: - Type_ *value_; - - _finline void Retain_() { - if (value_ != nil) - CFRetain((CFTypeRef) value_); - } - - _finline void Clear_() { - if (value_ != nil) - CFRelease((CFTypeRef) value_); - } - -public: - _finline _H(const This_ &rhs) : - value_(rhs.value_ == nil ? nil : (Type_ *) CFRetain((CFTypeRef) rhs.value_)) - { - } - - _finline _H(Type_ *value = NULL, bool mended = false) : - value_(value) - { - if (!mended) - Retain_(); - } - - _finline ~_H() { - Clear_(); - } - - _finline operator Type_ *() const { - return value_; - } - - _finline This_ &operator =(Type_ *value) { - if (value_ != value) { - Type_ *old(value_); - value_ = value; - Retain_(); - if (old != nil) - CFRelease((CFTypeRef) old); - } return *this; - } -}; -/* }}} */ - -#define _pooled _H _pool([[NSAutoreleasePool alloc] init], true); - -#endif - -#define MSHook(type, name, args...) \ -_disused static type (*_ ## name)(args); \ -static type $ ## name(args) - -#define MSHake(name) \ -&$ ## name, &_ ## name - -#define MSInitialize \ -__attribute__((__constructor__)) static void _MSInitialize(void) - -#define Foundation_f "/System/Library/Frameworks/Foundation.framework/Foundation" -#define UIKit_f "/System/Library/Frameworks/UIKit.framework/UIKit" -#define JavaScriptCore_f "/System/Library/PrivateFrameworks/JavaScriptCore.framework/JavaScriptCore" -#define IOKit_f "/System/Library/Frameworks/IOKit.framework/IOKit" - -#endif//SUBSTRATE_H_ \ No newline at end of file