Chromium Code Reviews| Index: runtime/bin/file_impl.dart |
| diff --git a/runtime/bin/file_impl.dart b/runtime/bin/file_impl.dart |
| index 8ab5bbbf29afdd5e61c5212dd2c4bdf2f46cc393..f4dfa7697dfcbd41f962471d6c97072ab4553b45 100644 |
| --- a/runtime/bin/file_impl.dart |
| +++ b/runtime/bin/file_impl.dart |
| @@ -251,7 +251,7 @@ class _FileUtils { |
| } |
| static bool exists(String name) native "File_Exists"; |
| - static int open(String name, int mode) native "File_Open"; |
| + static int open(String name, int mode, OSError error) native "File_Open"; |
| static bool create(String name) native "File_Create"; |
| static bool delete(String name) native "File_Delete"; |
| static String fullPath(String name) native "File_FullPath"; |
| @@ -281,7 +281,12 @@ class _FileUtils { |
| static int checkedOpen(String name, int mode) { |
| if (name is !String || mode is !int) return 0; |
| - return open(name, mode); |
| + var osError = new OSError(); |
| + int id = open(name, mode, osError); |
| + if (id == 0) { |
| + throw new FileIOException("Cannot open file", osError); |
| + } |
| + return id; |
| } |
| static bool checkedCreate(String name) { |
| @@ -440,11 +445,14 @@ class _File implements File { |
| request[0] = _FileUtils.kOpenRequest; |
| request[1] = _name; |
| request[2] = mode._mode; // Direct int value for serialization. |
| - _fileService.call(request).receive((id, replyTo) { |
| - if (id != 0) { |
| + _fileService.call(request).receive((result, replyTo) { |
| + if (result is Array) { |
| + if (_onError != null) { |
| + //_onError("Cannot open file: ${result[0]} ${result[1]}"); |
|
Mads Ager (google)
2012/03/08 15:04:27
Code in comments and long line.
Søren Gjesse
2012/03/08 22:50:53
Done.
|
| + _onError(new FileIOException("Cannot open file", new OSError(result[1], result[0]))); |
| + } |
| + } else { |
| callback(new _RandomAccessFile(id, _name)); |
| - } else if (_onError != null) { |
| - _onError("Cannot open file: $_name"); |
| } |
| }); |
| } |