1
0
mirror of https://github.com/arduino/Arduino.git synced 2024-11-29 10:24:12 +01:00

Merge pull request #2012 from matthijskooijman/ide-1.5.x-platform-preferences

Fix platform-specific preferences in some cases
This commit is contained in:
Cristian Maglie 2014-04-14 19:58:57 +02:00
commit 225c76be43

View File

@ -77,6 +77,19 @@ public class PreferencesMap extends LinkedHashMap<String, String> {
load(new FileInputStream(file)); load(new FileInputStream(file));
} }
protected String processPlatformSuffix(String key, String suffix, boolean isCurrentPlatform) {
if (key == null)
return null;
// Key does not end with the given suffix? Process as normal
if (!key.endsWith(suffix))
return key;
// Not the current platform? Ignore this key
if (!isCurrentPlatform)
return null;
// Strip the suffix from the key
return key.substring(0, key.length() - suffix.length());
}
/** /**
* Parse a property list stream and put key/value pairs into the Map * Parse a property list stream and put key/value pairs into the Map
* *
@ -91,28 +104,15 @@ public class PreferencesMap extends LinkedHashMap<String, String> {
int equals = line.indexOf('='); int equals = line.indexOf('=');
if (equals != -1) { if (equals != -1) {
String key = line.substring(0, equals); String key = line.substring(0, equals).trim();
String value = line.substring(equals + 1); String value = line.substring(equals + 1).trim();
put(key.trim(), value.trim());
}
}
// This is needed to avoid ConcurrentAccessExceptions key = processPlatformSuffix(key, ".linux", Base.isLinux());
Set<String> keys = new LinkedHashSet<String>(keySet()); key = processPlatformSuffix(key, ".windows", Base.isWindows());
key = processPlatformSuffix(key, ".macosx", Base.isMacOS());
// Override keys that have OS specific versions if (key != null)
for (String key : keys) { put(key, value);
boolean replace = false;
if (Base.isLinux() && key.endsWith(".linux"))
replace = true;
if (Base.isWindows() && key.endsWith(".windows"))
replace = true;
if (Base.isMacOS() && key.endsWith(".macos"))
replace = true;
if (replace) {
int dot = key.lastIndexOf('.');
String overridenKey = key.substring(0, dot);
put(overridenKey, get(key));
} }
} }
} }