From 73d806f8b953c3b08649a5bc5a34f98196e0bc3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= Date: Thu, 9 Mar 2023 17:00:34 +0100 Subject: [PATCH] Backport OS-check logic from Compose Multiplatform --- .../main/java/org/briarproject/bramble/util/OsUtils.java | 8 +++++--- .../java/org/briarproject/bramble/util/StringUtils.java | 5 +++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java index 99bac6951..92f050d2d 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/util/OsUtils.java @@ -4,6 +4,8 @@ import org.briarproject.nullsafety.NotNullByDefault; import javax.annotation.Nullable; +import static org.briarproject.bramble.util.StringUtils.startsWithIgnoreCase; + @NotNullByDefault public class OsUtils { @@ -13,15 +15,15 @@ public class OsUtils { private static final String vendor = System.getProperty("java.vendor"); public static boolean isWindows() { - return os != null && os.contains("Windows"); + return os != null && startsWithIgnoreCase(os, "Win"); } public static boolean isMac() { - return os != null && os.contains("Mac OS"); + return os != null && os.equalsIgnoreCase("Mac OS X"); } public static boolean isLinux() { - return os != null && os.contains("Linux") && !isAndroid(); + return os != null && startsWithIgnoreCase(os, "Linux") && !isAndroid(); } public static boolean isAndroid() { diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java index 59beeeee2..9ed68a672 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/util/StringUtils.java @@ -176,4 +176,9 @@ public class StringUtils { } return new String(c); } + + // see https://stackoverflow.com/a/38947571 + static boolean startsWithIgnoreCase(String s, String prefix) { + return s.regionMatches(true, 0, prefix, 0, prefix.length()); + } }