]> git.saurik.com Git - cydia.git/commitdiff
Expose CYIOGetValue() to JavaScript.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 5 Mar 2011 19:55:25 +0000 (11:55 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 10:41:39 +0000 (02:41 -0800)
MobileCydia.mm

index ce12ef64938d12562a3fcb4f4c7974bbf0e51156..79caf4fcb06ac47c5d337d11b108cd4744b9600f 100644 (file)
@@ -928,7 +928,7 @@ bool isSectionVisible(NSString *section) {
     return hidden == nil || ![hidden boolValue];
 }
 
-static id CYIOGetValue(const char *path, NSString *property) {
+static NSObject *CYIOGetValue(const char *path, NSString *property) {
     io_registry_entry_t entry(IORegistryEntryFromPath(kIOMasterPortDefault, path));
     if (entry == MACH_PORT_NULL)
         return nil;
@@ -941,7 +941,7 @@ static id CYIOGetValue(const char *path, NSString *property) {
     return [(id) value autorelease];
 }
 
-static NSString *CYHex(NSData *data, bool reverse) {
+static NSString *CYHex(NSData *data, bool reverse = false) {
     if (data == nil)
         return nil;
 
@@ -3955,6 +3955,8 @@ static _H<NSMutableSet> Diversions_;
         return @"getKernelString";
     else if (selector == @selector(getInstalledPackages))
         return @"getInstalledPackages";
+    else if (selector == @selector(getIORegistryEntry::))
+        return @"getIORegistryEntry";
     else if (selector == @selector(getLocaleIdentifier))
         return @"getLocaleIdentifier";
     else if (selector == @selector(getPreferredLanguages))
@@ -4057,6 +4059,16 @@ static _H<NSMutableSet> Diversions_;
     return [NSString stringWithCString:value];
 }
 
+- (NSObject *) getIORegistryEntry:(NSString *)path :(NSString *)entry {
+    NSObject *value(CYIOGetValue([path UTF8String], entry));
+
+    if (value != nil)
+        if ([value isKindOfClass:[NSData class]])
+            value = CYHex((NSData *) value);
+
+    return value;
+}
+
 - (id) getSessionValue:(NSString *)key {
 @synchronized (SessionData_) {
     return [SessionData_ objectForKey:key];
@@ -9824,9 +9836,9 @@ int main(int argc, char *argv[]) { _pooled
     else
         Machine_ = machine;
 
-    SerialNumber_ = CYIOGetValue("IOService:/", @"IOPlatformSerialNumber");
-    ChipID_ = [CYHex(CYIOGetValue("IODeviceTree:/chosen", @"unique-chip-id"), true) uppercaseString];
-    BBSNum_ = CYHex(CYIOGetValue("IOService:/AppleARMPE/baseband", @"snum"), false);
+    SerialNumber_ = (NSString *) CYIOGetValue("IOService:/", @"IOPlatformSerialNumber");
+    ChipID_ = [CYHex((NSData *) CYIOGetValue("IODeviceTree:/chosen", @"unique-chip-id"), true) uppercaseString];
+    BBSNum_ = CYHex((NSData *) CYIOGetValue("IOService:/AppleARMPE/baseband", @"snum"), false);
 
     UniqueID_ = [[UIDevice currentDevice] uniqueIdentifier];