| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "bin/file.h" | 5 #include "bin/file.h" |
| 6 | 6 |
| 7 #include "bin/builtin.h" | 7 #include "bin/builtin.h" |
| 8 #include "bin/dartutils.h" | 8 #include "bin/dartutils.h" |
| 9 #include "bin/embedded_dart_io.h" | 9 #include "bin/embedded_dart_io.h" |
| 10 #include "bin/io_buffer.h" | 10 #include "bin/io_buffer.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 | 44 |
| 45 bool File::ReadFully(void* buffer, int64_t num_bytes) { | 45 bool File::ReadFully(void* buffer, int64_t num_bytes) { |
| 46 int64_t remaining = num_bytes; | 46 int64_t remaining = num_bytes; |
| 47 char* current_buffer = reinterpret_cast<char*>(buffer); | 47 char* current_buffer = reinterpret_cast<char*>(buffer); |
| 48 while (remaining > 0) { | 48 while (remaining > 0) { |
| 49 int64_t bytes_read = Read(current_buffer, remaining); | 49 int64_t bytes_read = Read(current_buffer, remaining); |
| 50 if (bytes_read <= 0) { | 50 if (bytes_read <= 0) { |
| 51 return false; | 51 return false; |
| 52 } | 52 } |
| 53 remaining -= bytes_read; // Reduce the number of remaining bytes. | 53 remaining -= bytes_read; // Reduce the number of remaining bytes. |
| 54 current_buffer += bytes_read; // Move the buffer forward. | 54 current_buffer += bytes_read; // Move the buffer forward. |
| 55 } | 55 } |
| 56 return true; | 56 return true; |
| 57 } | 57 } |
| 58 | 58 |
| 59 | 59 |
| 60 bool File::WriteFully(const void* buffer, int64_t num_bytes) { | 60 bool File::WriteFully(const void* buffer, int64_t num_bytes) { |
| 61 int64_t remaining = num_bytes; | 61 int64_t remaining = num_bytes; |
| 62 const char* current_buffer = reinterpret_cast<const char*>(buffer); | 62 const char* current_buffer = reinterpret_cast<const char*>(buffer); |
| 63 while (remaining > 0) { | 63 while (remaining > 0) { |
| 64 int64_t bytes_written = Write(current_buffer, remaining); | 64 int64_t bytes_written = Write(current_buffer, remaining); |
| 65 if (bytes_written < 0) { | 65 if (bytes_written < 0) { |
| 66 return false; | 66 return false; |
| 67 } | 67 } |
| 68 remaining -= bytes_written; // Reduce the number of remaining bytes. | 68 remaining -= bytes_written; // Reduce the number of remaining bytes. |
| 69 current_buffer += bytes_written; // Move the buffer forward. | 69 current_buffer += bytes_written; // Move the buffer forward. |
| 70 } | 70 } |
| 71 if (capture_stdout || capture_stderr) { | 71 if (capture_stdout || capture_stderr) { |
| 72 intptr_t fd = GetFD(); | 72 intptr_t fd = GetFD(); |
| 73 if ((fd == STDOUT_FILENO) && capture_stdout) { | 73 if ((fd == STDOUT_FILENO) && capture_stdout) { |
| 74 Dart_ServiceSendDataEvent("Stdout", "WriteEvent", | 74 Dart_ServiceSendDataEvent("Stdout", "WriteEvent", |
| 75 reinterpret_cast<const uint8_t*>(buffer), | 75 reinterpret_cast<const uint8_t*>(buffer), |
| 76 num_bytes); | 76 num_bytes); |
| 77 } else if ((fd == STDERR_FILENO) && capture_stderr) { | 77 } else if ((fd == STDERR_FILENO) && capture_stderr) { |
| 78 Dart_ServiceSendDataEvent("Stderr", "WriteEvent", | 78 Dart_ServiceSendDataEvent("Stderr", "WriteEvent", |
| 79 reinterpret_cast<const uint8_t*>(buffer), | 79 reinterpret_cast<const uint8_t*>(buffer), |
| 80 num_bytes); | 80 num_bytes); |
| 81 } | 81 } |
| 82 } | 82 } |
| 83 return true; | 83 return true; |
| 84 } | 84 } |
| 85 | 85 |
| 86 | 86 |
| 87 File::FileOpenMode File::DartModeToFileMode(DartFileOpenMode mode) { | 87 File::FileOpenMode File::DartModeToFileMode(DartFileOpenMode mode) { |
| 88 ASSERT((mode == File::kDartRead) || | 88 ASSERT((mode == File::kDartRead) || (mode == File::kDartWrite) || |
| 89 (mode == File::kDartWrite) || | 89 (mode == File::kDartAppend) || (mode == File::kDartWriteOnly) || |
| 90 (mode == File::kDartAppend) || | |
| 91 (mode == File::kDartWriteOnly) || | |
| 92 (mode == File::kDartWriteOnlyAppend)); | 90 (mode == File::kDartWriteOnlyAppend)); |
| 93 if (mode == File::kDartWrite) { | 91 if (mode == File::kDartWrite) { |
| 94 return File::kWriteTruncate; | 92 return File::kWriteTruncate; |
| 95 } | 93 } |
| 96 if (mode == File::kDartAppend) { | 94 if (mode == File::kDartAppend) { |
| 97 return File::kWrite; | 95 return File::kWrite; |
| 98 } | 96 } |
| 99 if (mode == File::kDartWriteOnly) { | 97 if (mode == File::kDartWriteOnly) { |
| 100 return File::kWriteOnlyTruncate; | 98 return File::kWriteOnlyTruncate; |
| 101 } | 99 } |
| 102 if (mode == File::kDartWriteOnlyAppend) { | 100 if (mode == File::kDartWriteOnlyAppend) { |
| 103 return File::kWriteOnly; | 101 return File::kWriteOnly; |
| 104 } | 102 } |
| 105 return File::kRead; | 103 return File::kRead; |
| 106 } | 104 } |
| 107 | 105 |
| 108 } // namespace bin | 106 } // namespace bin |
| 109 } // namespace dart | 107 } // namespace dart |
| OLD | NEW |