From 3b4fbd8715f6aa5f490e0fad38f06cfdd1085a9f Mon Sep 17 00:00:00 2001 From: jonasbn Date: Sat, 25 Jan 2025 14:37:34 +0100 Subject: [PATCH 1/5] Now doing translation between 'browser' and 'arc' for human consumption, this is a hack --- src/main.m | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main.m b/src/main.m index 020bddb..d0b73e1 100644 --- a/src/main.m +++ b/src/main.m @@ -43,7 +43,7 @@ void set_default_handler(NSString *url_scheme, NSString *handler) { } int main(int argc, const char *argv[]) { - const char *target = (argc == 1) ? '\0' : argv[1]; + NSString *target = (argc > 1) ? [NSString stringWithUTF8String:argv[1]] : nil; @autoreleasepool { // Get all HTTP handlers @@ -52,26 +52,41 @@ int main(int argc, const char *argv[]) { // Get current HTTP handler NSString *current_handler_name = get_current_http_handler(); - if (target == '\0') { + if (target == nil) { // List all HTTP handlers, marking the current one with a star for (NSString *key in handlers) { + NSString *value = handlers[key]; char *mark = [key caseInsensitiveCompare:current_handler_name] == NSOrderedSame ? "* " : " "; + + if ([key caseInsensitiveCompare:@"browser"] == NSOrderedSame) { + key = @"arc"; + } printf("%s%s\n", mark, [key UTF8String]); } } else { - NSString *target_handler_name = [NSString stringWithUTF8String:target]; + NSString *display_name = [target copy]; + NSString *lookup_name = [target copy]; + + // Convert arc/browser names for display and lookup + if ([target caseInsensitiveCompare:@"browser"] == NSOrderedSame) { + display_name = @"arc"; + lookup_name = @"browser"; + } else if ([target caseInsensitiveCompare:@"arc"] == NSOrderedSame) { + display_name = @"arc"; + lookup_name = @"browser"; + } - if ([target_handler_name caseInsensitiveCompare:current_handler_name] == NSOrderedSame) { - printf("%s is already set as the default HTTP handler\n", target); + if ([lookup_name caseInsensitiveCompare:current_handler_name] == NSOrderedSame) { + printf("%s is already set as the default HTTP handler\n", [display_name UTF8String]); } else { - NSString *target_handler = handlers[target_handler_name]; + NSString *target_handler = handlers[lookup_name]; if (target_handler != nil) { // Set new HTTP handler (HTTP and HTTPS separately) set_default_handler(@"http", target_handler); set_default_handler(@"https", target_handler); } else { - printf("%s is not available as an HTTP handler\n", target); + printf("%s is not available as an HTTP handler\n", [display_name UTF8String]); return 1; } From ce116ba039e3b18a87cf03ef2bc94256d50bf351 Mon Sep 17 00:00:00 2001 From: jonasbn Date: Tue, 28 Jan 2025 22:28:28 +0100 Subject: [PATCH 2/5] Now we support both arc and brave --- src/main.m | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main.m b/src/main.m index d0b73e1..250e185 100644 --- a/src/main.m +++ b/src/main.m @@ -7,7 +7,19 @@ #import NSString* app_name_from_bundle_id(NSString *app_bundle_id) { - return [[[app_bundle_id componentsSeparatedByString:@"."] lastObject] lowercaseString]; + + NSString *handler = app_bundle_id; + NSString *shortname = @""; + + if ([handler caseInsensitiveCompare:@"company.thebrowser.Browser"] == NSOrderedSame) { + shortname = @"arc"; + } else if ([handler caseInsensitiveCompare:@"com.brave.Browser"] == NSOrderedSame) { + shortname = @"brave"; + } else { + shortname = [[[app_bundle_id componentsSeparatedByString:@"."] lastObject] lowercaseString]; + } + + return shortname; } NSMutableDictionary* get_http_handlers() { @@ -20,7 +32,10 @@ for (int i = 0; i < [handlers count]; i++) { NSString *handler = [handlers objectAtIndex:i]; - dict[app_name_from_bundle_id(handler)] = handler; + + NSString *shortname = app_name_from_bundle_id(handler); + + dict[shortname] = handler; } return dict; @@ -57,36 +72,21 @@ int main(int argc, const char *argv[]) { for (NSString *key in handlers) { NSString *value = handlers[key]; char *mark = [key caseInsensitiveCompare:current_handler_name] == NSOrderedSame ? "* " : " "; - - if ([key caseInsensitiveCompare:@"browser"] == NSOrderedSame) { - key = @"arc"; - } printf("%s%s\n", mark, [key UTF8String]); } } else { - NSString *display_name = [target copy]; - NSString *lookup_name = [target copy]; - - // Convert arc/browser names for display and lookup - if ([target caseInsensitiveCompare:@"browser"] == NSOrderedSame) { - display_name = @"arc"; - lookup_name = @"browser"; - } else if ([target caseInsensitiveCompare:@"arc"] == NSOrderedSame) { - display_name = @"arc"; - lookup_name = @"browser"; - } - if ([lookup_name caseInsensitiveCompare:current_handler_name] == NSOrderedSame) { - printf("%s is already set as the default HTTP handler\n", [display_name UTF8String]); + if ([target caseInsensitiveCompare:current_handler_name] == NSOrderedSame) { + printf("%s is already set as the default HTTP handler\n", [target UTF8String]); } else { - NSString *target_handler = handlers[lookup_name]; + NSString *target_handler = handlers[target]; if (target_handler != nil) { // Set new HTTP handler (HTTP and HTTPS separately) set_default_handler(@"http", target_handler); set_default_handler(@"https", target_handler); } else { - printf("%s is not available as an HTTP handler\n", [display_name UTF8String]); + printf("%s is not available as an HTTP handler\n", [target UTF8String]); return 1; } From 3bd0734c610f48a065a4df51507065a55322c615 Mon Sep 17 00:00:00 2001 From: jonasbn Date: Tue, 28 Jan 2025 22:31:26 +0100 Subject: [PATCH 3/5] Rolled back some experimental changes, which are also present in other branches --- src/main.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.m b/src/main.m index 250e185..16bc07c 100644 --- a/src/main.m +++ b/src/main.m @@ -67,7 +67,7 @@ int main(int argc, const char *argv[]) { // Get current HTTP handler NSString *current_handler_name = get_current_http_handler(); - if (target == nil) { + if (target == '\0') { // List all HTTP handlers, marking the current one with a star for (NSString *key in handlers) { NSString *value = handlers[key]; From a5100a8da1708f5589548a9d3bce838d7779f0e2 Mon Sep 17 00:00:00 2001 From: jonasbn Date: Tue, 28 Jan 2025 22:32:56 +0100 Subject: [PATCH 4/5] Rolled back some experimental changes, which are also present in other branches --- src/main.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.m b/src/main.m index 16bc07c..59f8181 100644 --- a/src/main.m +++ b/src/main.m @@ -58,7 +58,7 @@ void set_default_handler(NSString *url_scheme, NSString *handler) { } int main(int argc, const char *argv[]) { - NSString *target = (argc > 1) ? [NSString stringWithUTF8String:argv[1]] : nil; + const char *target = (argc == 1) ? '\0' : argv[1]; @autoreleasepool { // Get all HTTP handlers From 75f92c65b53bbff630761cadfdd596a39c147d77 Mon Sep 17 00:00:00 2001 From: jonasbn Date: Tue, 28 Jan 2025 22:33:38 +0100 Subject: [PATCH 5/5] Removed a unused variable, previously used for debugging. --- src/main.m | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.m b/src/main.m index 59f8181..19f5f09 100644 --- a/src/main.m +++ b/src/main.m @@ -70,7 +70,6 @@ int main(int argc, const char *argv[]) { if (target == '\0') { // List all HTTP handlers, marking the current one with a star for (NSString *key in handlers) { - NSString *value = handlers[key]; char *mark = [key caseInsensitiveCompare:current_handler_name] == NSOrderedSame ? "* " : " "; printf("%s%s\n", mark, [key UTF8String]); }