PostgreSQL Source Code  git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
win32common.c File Reference
#include "postgres.h"
Include dependency graph for win32common.c:

Go to the source code of this file.

Functions

DWORD pgwin32_get_file_type (HANDLE hFile)
 

Function Documentation

◆ pgwin32_get_file_type()

DWORD pgwin32_get_file_type ( HANDLE  hFile)

Definition at line 31 of file win32common.c.

32 {
33  DWORD fileType = FILE_TYPE_UNKNOWN;
34  DWORD lastError;
35 
36  errno = 0;
37 
38  /*
39  * When stdin, stdout, and stderr aren't associated with a stream the
40  * special value -2 is returned:
41  * https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/get-osfhandle
42  */
43  if (hFile == INVALID_HANDLE_VALUE || hFile == (HANDLE) -2)
44  {
45  errno = EINVAL;
46  return FILE_TYPE_UNKNOWN;
47  }
48 
49  fileType = GetFileType(hFile);
50  lastError = GetLastError();
51 
52  /*
53  * Invoke GetLastError in order to distinguish between a "valid" return of
54  * FILE_TYPE_UNKNOWN and its return due to a calling error. In case of
55  * success, GetLastError() returns NO_ERROR.
56  */
57  if (fileType == FILE_TYPE_UNKNOWN && lastError != NO_ERROR)
58  {
59  _dosmaperr(lastError);
60  return FILE_TYPE_UNKNOWN;
61  }
62 
63  return fileType;
64 }
void _dosmaperr(unsigned long)
Definition: win32error.c:177

References _dosmaperr().

Referenced by _pgfstat64().