summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Bingner <sam@bingner.com>2019-10-24 16:36:31 -1000
committerSam Bingner <sam@bingner.com>2019-10-24 16:36:31 -1000
commit753d7e678dc5ce735d1f17e14086994b15d36bcb (patch)
treeb1c9149bfd2a4affa1512c1389cc3079f50543a2
parent00a7cd052348ce98b47bb7022d53293daff0a33e (diff)
gssc <capability> was brokenv1.1.16
-rw-r--r--gssc.mm13
1 files changed, 10 insertions, 3 deletions
diff --git a/gssc.mm b/gssc.mm
index c1d943c..b33473c 100644
--- a/gssc.mm
+++ b/gssc.mm
@@ -44,6 +44,7 @@
static CFArrayRef (*$GSSystemCopyCapability)(CFStringRef);
static CFArrayRef (*$GSSystemGetCapability)(CFStringRef);
+static CFTypeRef (*$MGCopyAnswer)(CFStringRef);
void OnGSCapabilityChanged(
CFNotificationCenterRef center,
@@ -64,7 +65,7 @@ int main(int argc, char *argv[]) {
NSString *name = nil;
if (argc == 2)
- name = [objc_getClass("NSString") stringWithUTF8String:argv[0]];
+ name = [objc_getClass("NSString") stringWithUTF8String:argv[1]];
else if (argc > 2) {
fprintf(stderr, "usage: %s [capability]\n", argv[0]);
exit(1);
@@ -94,8 +95,13 @@ int main(int argc, char *argv[]) {
} else {
capability = nil;
- if (void *libMobileGestalt = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY))
- if (CFTypeRef (*$MGCopyAnswer)(CFStringRef) = reinterpret_cast<CFTypeRef (*)(CFStringRef)>(dlsym(libMobileGestalt, "MGCopyAnswer"))) {
+ void *libMobileGestalt = dlopen("/usr/lib/libMobileGestalt.dylib", RTLD_GLOBAL | RTLD_LAZY);
+ if (libMobileGestalt && ($MGCopyAnswer = reinterpret_cast<CFTypeRef (*)(CFStringRef)>(dlsym(libMobileGestalt, "MGCopyAnswer")))) {
+ if (name) {
+ capability = reinterpret_cast<const NSDictionary *>($MGCopyAnswer(reinterpret_cast<CFStringRef>(name)));
+ if (capability != nil)
+ capability = [capability autorelease];
+ } else {
NSMutableDictionary *answers([NSMutableDictionary dictionary]);
for (NSString *name in [NSArray arrayWithObjects:
@"1080p",
@@ -698,6 +704,7 @@ int main(int argc, char *argv[]) {
}
capability = answers;
}
+ }
}
if (capability != nil) {