summaryrefslogtreecommitdiff
path: root/gssc.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2010-04-06 11:16:28 +0000
committerJay Freeman (saurik) <saurik@saurik.com>2010-04-06 11:16:28 +0000
commit020dfc54dc819f7c10e8eb43d4ddaaef834dca70 (patch)
treefa789fd7d492f40fb987fa919accce3b2926f368 /gssc.mm
parent2a72f832e35d56a748537c894b00a236bae8f16a (diff)
Adding gssc and updating uicache.
Diffstat (limited to 'gssc.mm')
-rw-r--r--gssc.mm42
1 files changed, 42 insertions, 0 deletions
diff --git a/gssc.mm b/gssc.mm
new file mode 100644
index 0000000..0c40ed5
--- /dev/null
+++ b/gssc.mm
@@ -0,0 +1,42 @@
+#import <GraphicsServices/GraphicsServices.h>
+#import <UIKit/UIKit.h>
+#include <stdio.h>
+#include <dlfcn.h>
+
+static CFArrayRef (*$GSSystemCopyCapability)(CFStringRef);
+static CFArrayRef (*$GSSystemGetCapability)(CFStringRef);
+
+int main(int argc, char *argv[]) {
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+ NSString *name = nil;
+
+ if (argc == 2)
+ name = [NSString stringWithUTF8String:argv[0]];
+ else if (argc > 2) {
+ fprintf(stderr, "usage: %s [capability]\n", argv[0]);
+ exit(1);
+ }
+
+ $GSSystemCopyCapability = reinterpret_cast<CFArrayRef (*)(CFStringRef)>(dlsym(RTLD_DEFAULT, "GSSystemCopyCapability"));
+ $GSSystemGetCapability = reinterpret_cast<CFArrayRef (*)(CFStringRef)>(dlsym(RTLD_DEFAULT, "GSSystemGetCapability"));
+
+ const NSArray *capability;
+
+ if ($GSSystemCopyCapability != NULL) {
+ capability = reinterpret_cast<const NSArray *>((*$GSSystemCopyCapability)(reinterpret_cast<CFStringRef>(name)));
+ capability = [capability autorelease];
+ } else if ($GSSystemGetCapability != NULL) {
+ capability = reinterpret_cast<const NSArray *>((*$GSSystemGetCapability)(reinterpret_cast<CFStringRef>(name)));
+ } else
+ capability = nil;
+
+ NSLog(@"%@", capability);
+
+ /*for (NSString *value in capability)
+ printf("%s\n", [value UTF8String]);*/
+
+ [pool release];
+
+ return 0;
+}