]> git.saurik.com Git - cydia.git/commitdiff
Expose sysctl read access to JavaScript.
authorJay Freeman (saurik) <saurik@saurik.com>
Sat, 19 Feb 2011 14:40:05 +0000 (06:40 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Sat, 19 Feb 2011 14:40:05 +0000 (06:40 -0800)
MobileCydia.mm

index 1e96e7bc3421f6689307230ce9c9a6e7ba4df056..3180efb6b0b4bb1f46cdc592e5bf783a80d737c4 100644 (file)
@@ -3913,6 +3913,10 @@ static NSString *Warning_;
         return @"format";
     else if (selector == @selector(getAllSources))
         return @"getAllSourcs";
+    else if (selector == @selector(getKernelNumber:))
+        return @"getKernelNumber";
+    else if (selector == @selector(getKernelString:))
+        return @"getKernelString";
     else if (selector == @selector(getInstalledPackages))
         return @"getInstalledPackages";
     else if (selector == @selector(getPackageById:))
@@ -3951,6 +3955,40 @@ static NSString *Warning_;
     return [feature isEqualToString:@"window.open"];
 }
 
+- (NSNumber *) getKernelNumber:(NSString *)name {
+    const char *string([name UTF8String]);
+
+    size_t size;
+    if (sysctlbyname(string, NULL, &size, NULL, 0) == -1)
+        return (id) [NSNull null];
+
+    if (size != sizeof(int))
+        return (id) [NSNull null];
+
+    int value;
+    if (sysctlbyname(string, &value, &size, NULL, 0) == -1)
+        return (id) [NSNull null];
+
+    return [NSNumber numberWithInt:value];
+}
+
+- (NSString *) getKernelString:(NSString *)name {
+    const char *string([name UTF8String]);
+
+    size_t size;
+    if (sysctlbyname(string, NULL, &size, NULL, 0) == -1)
+        return (id) [NSNull null];
+
+    char value[size + 1];
+    if (sysctlbyname(string, value, &size, NULL, 0) == -1)
+        return (id) [NSNull null];
+
+    // XXX: just in case you request something ludicrous
+    value[size] = '\0';
+
+    return [NSString stringWithCString:value];
+}
+
 - (void) addTrivialSource:(NSString *)href {
     [delegate_ performSelectorOnMainThread:@selector(addTrivialSource:) withObject:href waitUntilDone:NO];
 }