From 5bc1277a7e4b3002f82031b4095fad5e901b806d Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Sat, 19 Feb 2011 06:40:05 -0800 Subject: Expose sysctl read access to JavaScript. --- MobileCydia.mm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/MobileCydia.mm b/MobileCydia.mm index 1e96e7b..3180efb 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -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]; } -- cgit v1.2.3