From c35d892fa6ae0002144db0f20856fca1d65554f0 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Tue, 13 Mar 2018 12:39:02 +0100 Subject: [PATCH] Add Utils.isLinux() and Utils.isMac() helpers. --- core/src/main/java/org/bitcoinj/core/Utils.java | 8 ++++++++ .../java/org/bitcoinj/net/discovery/DnsDiscovery.java | 2 +- .../main/java/org/bitcoinj/utils/BlockFileLoader.java | 9 +++++---- wallettemplate/src/main/java/wallettemplate/Main.java | 3 ++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/org/bitcoinj/core/Utils.java b/core/src/main/java/org/bitcoinj/core/Utils.java index 4ab173b4..23b243af 100644 --- a/core/src/main/java/org/bitcoinj/core/Utils.java +++ b/core/src/main/java/org/bitcoinj/core/Utils.java @@ -544,7 +544,15 @@ public class Utils { return isAndroid == 1; } + public static boolean isLinux() { + return System.getProperty("os.name").toLowerCase().contains("linux"); + } + public static boolean isWindows() { return System.getProperty("os.name").toLowerCase().contains("win"); } + + public static boolean isMac() { + return System.getProperty("os.name").toLowerCase().contains("mac"); + } } diff --git a/core/src/main/java/org/bitcoinj/net/discovery/DnsDiscovery.java b/core/src/main/java/org/bitcoinj/net/discovery/DnsDiscovery.java index 626ecd65..197551b5 100644 --- a/core/src/main/java/org/bitcoinj/net/discovery/DnsDiscovery.java +++ b/core/src/main/java/org/bitcoinj/net/discovery/DnsDiscovery.java @@ -67,7 +67,7 @@ public class DnsDiscovery extends MultiplexingDiscovery { protected ExecutorService createExecutor() { // Attempted workaround for reported bugs on Linux in which gethostbyname does not appear to be properly // thread safe and can cause segfaults on some libc versions. - if (System.getProperty("os.name").toLowerCase().contains("linux")) + if (Utils.isLinux()) return Executors.newSingleThreadExecutor(new ContextPropagatingThreadFactory("DNS seed lookups")); else return Executors.newFixedThreadPool(seeds.size(), new DaemonThreadFactory("DNS seed lookups")); diff --git a/core/src/main/java/org/bitcoinj/utils/BlockFileLoader.java b/core/src/main/java/org/bitcoinj/utils/BlockFileLoader.java index 74abc459..97329c40 100644 --- a/core/src/main/java/org/bitcoinj/utils/BlockFileLoader.java +++ b/core/src/main/java/org/bitcoinj/utils/BlockFileLoader.java @@ -54,15 +54,16 @@ public class BlockFileLoader implements Iterable, Iterator { */ public static List getReferenceClientBlockFileList() { String defaultDataDir; - String OS = System.getProperty("os.name").toLowerCase(); if (Utils.isWindows()) { defaultDataDir = System.getenv("APPDATA") + "\\.bitcoin\\blocks\\"; - } else if (OS.indexOf("mac") >= 0 || (OS.indexOf("darwin") >= 0)) { + } else if (Utils.isMac()) { defaultDataDir = System.getProperty("user.home") + "/Library/Application Support/Bitcoin/blocks/"; - } else { + } else if (Utils.isLinux()) { defaultDataDir = System.getProperty("user.home") + "/.bitcoin/blocks/"; + } else { + throw new RuntimeException("Unsupported system"); } - + List list = new LinkedList<>(); for (int i = 0; true; i++) { File file = new File(defaultDataDir + String.format(Locale.US, "blk%05d.dat", i)); diff --git a/wallettemplate/src/main/java/wallettemplate/Main.java b/wallettemplate/src/main/java/wallettemplate/Main.java index 407ce927..e2a7a530 100644 --- a/wallettemplate/src/main/java/wallettemplate/Main.java +++ b/wallettemplate/src/main/java/wallettemplate/Main.java @@ -19,6 +19,7 @@ package wallettemplate; import com.google.common.util.concurrent.*; import javafx.scene.input.*; import org.bitcoinj.core.NetworkParameters; +import org.bitcoinj.core.Utils; import org.bitcoinj.kits.WalletAppKit; import org.bitcoinj.params.*; import org.bitcoinj.utils.BriefLogFormatter; @@ -74,7 +75,7 @@ public class Main extends Application { // Show the crash dialog for any exceptions that we don't handle and that hit the main loop. GuiUtils.handleCrashesOnThisThread(); - if (System.getProperty("os.name").toLowerCase().contains("mac")) { + if (Utils.isMac()) { // We could match the Mac Aqua style here, except that (a) Modena doesn't look that bad, and (b) // the date picker widget is kinda broken in AquaFx and I can't be bothered fixing it. // AquaFx.style();