Small improvement to the use of GetFileType:
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 18 Jul 2013 18:42:52 +0000 (18:42 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 18 Jul 2013 18:42:52 +0000 (18:42 +0000)
* assert that the return value is one of the documented values on msdn.
* on FILE_TYPE_UNKNOWN, check GetLastError.

Unfortunately I can't think of a way to get a FILE_TYPE_UNKNOWN on a test.

llvm-svn: 186595

llvm/lib/Support/Windows/Path.inc

index 5d95142..dff89c7 100644 (file)
@@ -581,7 +581,14 @@ static error_code getStatus(HANDLE FileHandle, file_status &Result) {
 
   switch (::GetFileType(FileHandle)) {
   default:
-  case FILE_TYPE_UNKNOWN:
+    llvm_unreachable("Don't know anything about this file type");
+  case FILE_TYPE_UNKNOWN: {
+    DWORD Err = ::GetLastError();
+    if (Err != NO_ERROR)
+      return windows_error(Err);
+    Result = file_status(file_type::type_unknown);
+    return error_code::success();
+  }
   case FILE_TYPE_DISK:
     break;
   case FILE_TYPE_CHAR: