Index: sdk/lib/io/platform_impl.dart |
diff --git a/sdk/lib/io/platform_impl.dart b/sdk/lib/io/platform_impl.dart |
index eaad98af995bdb3119f5e654ba2cd75d7d6b29e1..d735521904ece9e850111c23fa695245ba284439 100644 |
--- a/sdk/lib/io/platform_impl.dart |
+++ b/sdk/lib/io/platform_impl.dart |
@@ -10,6 +10,21 @@ class _Platform { |
external static String _operatingSystem(); |
external static _localHostname(); |
external static _executable(); |
+ /** |
+ * Retrieve the entries of the process environment. |
+ * |
+ * The result is an [Iterable] of strings, where each string represents |
+ * an environment entry. |
+ * |
+ * Environment entries should be strings containing |
+ * a non-empty name and a value separated by a '=' character. |
+ * The name does not contain a '=' character, |
+ * so the name is everything up to the first '=' character. |
+ * Values are everything after the first '=' charcacter. |
+ * A value may contain further '=' characters, and it may be empty. |
+ * |
+ * Returns an [OSError] if retrieving the environment fails. |
+ */ |
external static _environment(); |
external static List<String> _executableArguments(); |
external static String _packageRoot(); |
@@ -58,24 +73,11 @@ class _Platform { |
var isWindows = operatingSystem == 'windows'; |
var result = isWindows ? new _CaseInsensitiveStringMap() : new Map(); |
for (var str in env) { |
- // When running on Windows through cmd.exe there are |
- // entries which starts with '='. In CMD scripting, |
- // variables are "dynamic" environment variables which change |
- // automatically. The values of the ones starting with "=" are |
- // reified in the environment string of a new program (but, e.g., |
- // __CD__ isn't). |
- // |
- // One example are the use of the environment to communicate the |
- // current working directory for each drive and the exit code for the |
- // last command. E.g. the entry '=A:=A:\subdir' records the current |
- // working directory on the 'A' drive. |
- // |
- // On Mac OS an entry of just '=' has been seen. |
- // |
- // Entries starting with '=' are ignored. |
- // |
- // Entries with no '=' should not happen. If it should happen, |
- // the entry is ignored. |
+ // The Strings returned by [_environment()] are expected to be |
+ // valid environment entries, but exceptions have been seen |
+ // (e.g., an entry of just '=' has been seen on OS/X). |
+ // Invalid entries (lines without a '=' or with an empty name) |
+ // are discarded. |
var equalsIndex = str.indexOf('='); |
if (equalsIndex > 0) { |
result[str.substring(0, equalsIndex)] = |