OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 class _Platform { | |
6 static int _numberOfProcessors() native "Platform_NumberOfProcessors"; | |
7 static String _pathSeparator() native "Platform_PathSeparator"; | |
8 static String _operatingSystem() native "Platform_OperatingSystem"; | |
9 static _localHostname() native "Platform_LocalHostname"; | |
10 static _environment() native "Platform_Environment"; | |
11 | |
12 static int get numberOfProcessors { | |
13 return _numberOfProcessors(); | |
14 } | |
15 | |
16 static String get pathSeparator { | |
17 return _pathSeparator(); | |
18 } | |
19 | |
20 static String get operatingSystem { | |
21 return _operatingSystem(); | |
22 } | |
23 | |
24 static String get localHostname { | |
25 var result = _localHostname(); | |
26 if (result is OSError) { | |
27 throw result; | |
28 } else { | |
29 return result; | |
30 } | |
31 } | |
32 | |
33 static Map<String, String> get environment { | |
34 var env = _environment(); | |
35 if (env is OSError) { | |
36 throw env; | |
37 } else { | |
38 var result = new Map(); | |
39 for (var str in env) { | |
40 // When running on Windows through cmd.exe there are strange | |
41 // environment variables that are used to record the current | |
42 // working directory for each drive and the exit code for the | |
43 // last command. As an example: '=A:=A:\subdir' records the | |
44 // current working directory on the 'A' drive. In order to | |
45 // handle these correctly we search for a second occurrence of | |
46 // of '=' in the string if the first occurrence is at index 0. | |
47 var equalsIndex = str.indexOf('='); | |
48 if (equalsIndex == 0) { | |
49 equalsIndex = str.indexOf('=', 1); | |
50 } | |
51 assert(equalsIndex != -1); | |
52 result[str.substring(0, equalsIndex)] = str.substring(equalsIndex + 1); | |
53 } | |
54 return result; | |
55 } | |
56 } | |
57 } | |
OLD | NEW |