diff --git a/installer/resources/i2prouter b/installer/resources/i2prouter
index 99349a258..34ad1c099 100644
--- a/installer/resources/i2prouter
+++ b/installer/resources/i2prouter
@@ -29,7 +29,15 @@
# should have been replaced by the izpack installer.
# If you did not run the installer, replace them with the appropriate paths.
I2P="%INSTALL_PATH"
-I2P_CONFIG_DIR="%USER_HOME/.i2p"
+if [ "`uname -s`" == "Darwin" ]; then
+ if [ -d "%USER_HOME/Library/Application Support" ]; then
+ I2P_CONFIG_DIR="%USER_HOME/Library/Application Support/i2p"
+ else
+ I2P_CONFIG_DIR="%USER_HOME/.i2p"
+ fi
+else
+ I2P_CONFIG_DIR="%USER_HOME/.i2p"
+fi
I2PTEMP="%SYSTEM_java_io_tmpdir"
# PORTABLE installation:
# Use the following instead.
diff --git a/installer/resources/net.i2p.router.plist.template b/installer/resources/net.i2p.router.plist.template
index 65fa2ac96..8f4f3fbe5 100644
--- a/installer/resources/net.i2p.router.plist.template
+++ b/installer/resources/net.i2p.router.plist.template
@@ -7,9 +7,9 @@
OnDemand
StandardOutPath
- ~/.i2p/wrapper.log
+ ~/Library/Application Support/i2p/wrapper.log
StandardErrorPath
- ~/.i2p/wrapper.log
+ ~/Library/Application Support/i2p/wrapper.log
ProgramArguments
COMMAND
diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java
index eafaa19b8..ed7338123 100644
--- a/router/java/src/net/i2p/router/startup/WorkingDir.java
+++ b/router/java/src/net/i2p/router/startup/WorkingDir.java
@@ -49,6 +49,7 @@ public class WorkingDir {
private final static String PROP_BASE_DIR = "i2p.dir.base";
private final static String PROP_WORKING_DIR = "i2p.dir.config";
private final static String WORKING_DIR_DEFAULT_WINDOWS = "I2P";
+ private final static String WORKING_DIR_DEFAULT_MAC = "i2p";
private final static String WORKING_DIR_DEFAULT = ".i2p";
private final static String WORKING_DIR_DEFAULT_DAEMON = "i2p-config";
/** we do a couple of things differently if this is the username */
@@ -70,6 +71,7 @@ public class WorkingDir {
dir = envProps.getProperty(PROP_WORKING_DIR);
if (dir == null)
dir = System.getProperty(PROP_WORKING_DIR);
+
boolean isWindows = SystemVersion.isWindows();
File dirf = null;
if (dir != null) {
@@ -81,6 +83,15 @@ public class WorkingDir {
if (appdata != null)
home = appdata;
dirf = new SecureDirectory(home, WORKING_DIR_DEFAULT_WINDOWS);
+ } else if (SystemVersion.isMac()) {
+ String appdata = "/Library/Application Support/";
+ File old = new File(home,WORKING_DIR_DEFAULT);
+ if (old.exists() && old.isDirectory())
+ dirf = new SecureDirectory(home, WORKING_DIR_DEFAULT);
+ else {
+ home = home+appdata;
+ dirf = new SecureDirectory(home, WORKING_DIR_DEFAULT_MAC);
+ }
} else {
if (DAEMON_USER.equals(System.getProperty("user.name")))
dirf = new SecureDirectory(home, WORKING_DIR_DEFAULT_DAEMON);