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 #include <errno.h> |
| 6 |
| 7 #include "bin/utils.h" |
| 8 |
| 9 OSError::OSError() : code_(0), message_(NULL) { |
| 10 set_code(GetLastError()); |
| 11 |
| 12 static const int kMaxMessageLength = 256; |
| 13 char message[kMaxMessageLength]; |
| 14 DWORD message_size = |
| 15 FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, |
| 16 NULL, |
| 17 code_, |
| 18 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), |
| 19 message, |
| 20 kMaxMessageLength, |
| 21 NULL); |
| 22 if (message_size == 0) { |
| 23 if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { |
| 24 fprintf(stderr, "FormatMessage failed %d\n", GetLastError()); |
| 25 } |
| 26 snprintf(message, kMaxMessageLength, "OS Error %d", code_); |
| 27 } |
| 28 message[kMaxMessageLength - 1] = '\0'; |
| 29 |
| 30 SetMessage(message); |
| 31 } |
OLD | NEW |