PostgreSQL/src/port/win32common.c
Heikki Linnakangas 09eb633e1b Remove "#ifdef WIN32" guards from src/port/win32*.c
These files are only compiled on Windows, and most of them didn't have
"#ifdef WIN32" guards. Remove them from the few that did, for
consistency.

Author: Tristan Partin
Discussion: https://www.postgresql.org/message-id/CXGM9RYSXA2J.1DBO4MRXGZA9P@neon.tech
2024-02-12 11:57:45 +02:00

65 lines
1.6 KiB
C

/*-------------------------------------------------------------------------
*
* win32common.c
* Common routines shared among the win32*.c ports.
*
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
* src/port/win32common.c
*
*-------------------------------------------------------------------------
*/
#ifdef FRONTEND
#include "postgres_fe.h"
#else
#include "postgres.h"
#endif
/*
* pgwin32_get_file_type
*
* Convenience wrapper for GetFileType() with specific error handling for all the
* port implementations. Returns the file type associated with a HANDLE.
*
* On error, sets errno with FILE_TYPE_UNKNOWN as file type.
*/
DWORD
pgwin32_get_file_type(HANDLE hFile)
{
DWORD fileType = FILE_TYPE_UNKNOWN;
DWORD lastError;
errno = 0;
/*
* When stdin, stdout, and stderr aren't associated with a stream the
* special value -2 is returned:
* https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/get-osfhandle
*/
if (hFile == INVALID_HANDLE_VALUE || hFile == (HANDLE) -2)
{
errno = EINVAL;
return FILE_TYPE_UNKNOWN;
}
fileType = GetFileType(hFile);
lastError = GetLastError();
/*
* Invoke GetLastError in order to distinguish between a "valid" return of
* FILE_TYPE_UNKNOWN and its return due to a calling error. In case of
* success, GetLastError() returns NO_ERROR.
*/
if (fileType == FILE_TYPE_UNKNOWN && lastError != NO_ERROR)
{
_dosmaperr(lastError);
return FILE_TYPE_UNKNOWN;
}
return fileType;
}