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().