mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-01 22:31:18 +02:00
Minor cleanup for win32stat.c.
Ensure that CloseHandle() can't clobber the errno we set for failure exits, and make a couple of tweaks for pgindent. Juan José Santamaría Flecha Discussion: https://postgr.es/m/CAC+AXB0g44SbvSpC86o_1HWh8TAU2pZrMRW6tJT-dkijotx5Qg@mail.gmail.com
This commit is contained in:
parent
fe27009cbb
commit
c94cfb38c3
@ -40,14 +40,12 @@ typedef struct _FILE_STANDARD_INFORMATION
|
|||||||
#endif /* !defined(__MINGW32__) &&
|
#endif /* !defined(__MINGW32__) &&
|
||||||
* !defined(__MINGW64__) */
|
* !defined(__MINGW64__) */
|
||||||
|
|
||||||
typedef NTSTATUS(NTAPI * PFN_NTQUERYINFORMATIONFILE)
|
typedef NTSTATUS (NTAPI * PFN_NTQUERYINFORMATIONFILE)
|
||||||
(
|
(IN HANDLE FileHandle,
|
||||||
IN HANDLE FileHandle,
|
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
||||||
OUT PIO_STATUS_BLOCK IoStatusBlock,
|
OUT PVOID FileInformation,
|
||||||
OUT PVOID FileInformation,
|
IN ULONG Length,
|
||||||
IN ULONG Length,
|
IN FILE_INFORMATION_CLASS FileInformationClass);
|
||||||
IN FILE_INFORMATION_CLASS FileInformationClass
|
|
||||||
);
|
|
||||||
|
|
||||||
static PFN_NTQUERYINFORMATIONFILE _NtQueryInformationFile = NULL;
|
static PFN_NTQUERYINFORMATIONFILE _NtQueryInformationFile = NULL;
|
||||||
|
|
||||||
@ -101,8 +99,8 @@ fileattr_to_unixmode(int attr)
|
|||||||
uxmode |= (unsigned short) ((attr & FILE_ATTRIBUTE_DIRECTORY) ?
|
uxmode |= (unsigned short) ((attr & FILE_ATTRIBUTE_DIRECTORY) ?
|
||||||
(_S_IFDIR) : (_S_IFREG));
|
(_S_IFDIR) : (_S_IFREG));
|
||||||
|
|
||||||
uxmode |= (unsigned short) (attr & FILE_ATTRIBUTE_READONLY) ?
|
uxmode |= (unsigned short) ((attr & FILE_ATTRIBUTE_READONLY) ?
|
||||||
(_S_IREAD) : (_S_IREAD | _S_IWRITE);
|
(_S_IREAD) : (_S_IREAD | _S_IWRITE));
|
||||||
|
|
||||||
/* there is no need to simulate _S_IEXEC using CMD's PATHEXT extensions */
|
/* there is no need to simulate _S_IEXEC using CMD's PATHEXT extensions */
|
||||||
uxmode |= _S_IEXEC;
|
uxmode |= _S_IEXEC;
|
||||||
@ -149,8 +147,8 @@ fileinfo_to_stat(HANDLE hFile, struct stat *buf)
|
|||||||
buf->st_mode = fileattr_to_unixmode(fiData.dwFileAttributes);
|
buf->st_mode = fileattr_to_unixmode(fiData.dwFileAttributes);
|
||||||
buf->st_nlink = fiData.nNumberOfLinks;
|
buf->st_nlink = fiData.nNumberOfLinks;
|
||||||
|
|
||||||
buf->st_size = (((uint64) fiData.nFileSizeHigh) << 32) |
|
buf->st_size = ((((uint64) fiData.nFileSizeHigh) << 32) |
|
||||||
(uint64) fiData.nFileSizeLow;
|
fiData.nFileSizeLowi);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -220,8 +218,10 @@ _pgstat64(const char *name, struct stat *buf)
|
|||||||
LoadNtdll();
|
LoadNtdll();
|
||||||
if (ntdll == NULL)
|
if (ntdll == NULL)
|
||||||
{
|
{
|
||||||
_dosmaperr(GetLastError());
|
DWORD err = GetLastError();
|
||||||
|
|
||||||
CloseHandle(hFile);
|
CloseHandle(hFile);
|
||||||
|
_dosmaperr(err);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,8 +229,10 @@ _pgstat64(const char *name, struct stat *buf)
|
|||||||
GetProcAddress(ntdll, "NtQueryInformationFile");
|
GetProcAddress(ntdll, "NtQueryInformationFile");
|
||||||
if (_NtQueryInformationFile == NULL)
|
if (_NtQueryInformationFile == NULL)
|
||||||
{
|
{
|
||||||
_dosmaperr(GetLastError());
|
DWORD err = GetLastError();
|
||||||
|
|
||||||
CloseHandle(hFile);
|
CloseHandle(hFile);
|
||||||
|
_dosmaperr(err);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -239,16 +241,20 @@ _pgstat64(const char *name, struct stat *buf)
|
|||||||
sizeof(standardInfo),
|
sizeof(standardInfo),
|
||||||
FileStandardInformation)))
|
FileStandardInformation)))
|
||||||
{
|
{
|
||||||
_dosmaperr(GetLastError());
|
DWORD err = GetLastError();
|
||||||
|
|
||||||
CloseHandle(hFile);
|
CloseHandle(hFile);
|
||||||
|
_dosmaperr(err);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (!GetFileInformationByHandleEx(hFile, FileStandardInfo, &standardInfo,
|
if (!GetFileInformationByHandleEx(hFile, FileStandardInfo, &standardInfo,
|
||||||
sizeof(standardInfo)))
|
sizeof(standardInfo)))
|
||||||
{
|
{
|
||||||
_dosmaperr(GetLastError());
|
DWORD err = GetLastError();
|
||||||
|
|
||||||
CloseHandle(hFile);
|
CloseHandle(hFile);
|
||||||
|
_dosmaperr(err);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif /* _WIN32_WINNT < 0x0600 */
|
#endif /* _WIN32_WINNT < 0x0600 */
|
||||||
|
Loading…
Reference in New Issue
Block a user