summaryrefslogtreecommitdiff
path: root/MobileCydia.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2016-12-26 19:57:55 -0800
committerJay Freeman (saurik) <saurik@saurik.com>2016-12-26 19:57:55 -0800
commit019bd407df21b38dc22972771fc8557e45a844d3 (patch)
treeff6546a0f87fe59ec0719512b3eb44b405d9c302 /MobileCydia.mm
parentb23b24db6ecef37ed83ad7167a30a0534cd3fbbf (diff)
Move to CoreTelephony's _CTServerConnectionCreate.
Diffstat (limited to 'MobileCydia.mm')
-rw-r--r--MobileCydia.mm34
1 files changed, 34 insertions, 0 deletions
diff --git a/MobileCydia.mm b/MobileCydia.mm
index 53df43e..ed88ae2 100644
--- a/MobileCydia.mm
+++ b/MobileCydia.mm
@@ -238,6 +238,16 @@ union SplitHash {
};
// }}}
+@implementation NSDictionary (Cydia)
+- (id) invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)arguments {
+ if (false);
+ else if ([name isEqualToString:@"get"])
+ return [self objectForKey:[arguments objectAtIndex:0]];
+ else if ([name isEqualToString:@"keys"])
+ return [self allKeys];
+ return nil;
+} @end
+
static NSString *Colon_;
NSString *Elision_;
static NSString *Error_;
@@ -4364,6 +4374,7 @@ static _H<NSMutableSet> Diversions_;
return [NSArray arrayWithObjects:
@"bbsnum",
@"build",
+ @"cells",
@"coreFoundationVersionNumber",
@"device",
@"ecid",
@@ -4416,6 +4427,29 @@ static _H<NSMutableSet> Diversions_;
return (id) Idiom_ ?: [NSNull null];
}
+- (NSArray *) cells {
+ auto *$_CTServerConnectionCreate(reinterpret_cast<id (*)(void *, void *, void *)>(dlsym(RTLD_DEFAULT, "_CTServerConnectionCreate")));
+ if ($_CTServerConnectionCreate == NULL)
+ return nil;
+
+ struct CTResult { int flag; int error; };
+ auto *$_CTServerConnectionCellMonitorCopyCellInfo(reinterpret_cast<CTResult (*)(CFTypeRef, void *, CFArrayRef *)>(dlsym(RTLD_DEFAULT, "_CTServerConnectionCellMonitorCopyCellInfo")));
+ if ($_CTServerConnectionCellMonitorCopyCellInfo == NULL)
+ return nil;
+
+ _H<const void> connection($_CTServerConnectionCreate(NULL, NULL, NULL), true);
+ if (connection == nil)
+ return nil;
+
+ int count(0);
+ CFArrayRef cells(NULL);
+ auto result($_CTServerConnectionCellMonitorCopyCellInfo(connection, &count, &cells));
+ if (result.flag != 0)
+ return nil;
+
+ return [(NSArray *) cells autorelease];
+}
+
- (NSString *) mcc {
if (CFStringRef (*$CTSIMSupportCopyMobileSubscriberCountryCode)(CFAllocatorRef) = reinterpret_cast<CFStringRef (*)(CFAllocatorRef)>(dlsym(RTLD_DEFAULT, "CTSIMSupportCopyMobileSubscriberCountryCode")))
return [(NSString *) (*$CTSIMSupportCopyMobileSubscriberCountryCode)(kCFAllocatorDefault) autorelease];