Re: Fix fseek() detection of unseekable files on WIN32
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Juan José Santamaría Flecha <juanjo.santamaria@gmail.com>
Cc: Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2023-03-19T11:45:00Z
Lists: pgsql-hackers
Attachments
- v3-0001-fix-fseek-detection-of-unseekable-files-for-WIN32.patch (text/x-diff) patch v3-0001
On Sun, Mar 19, 2023 at 08:20:27PM +0900, Michael Paquier wrote: > I am not sure, TBH. As presented, the two GetFileType() calls in > _pgftello64() and _pgfseeko64() ignore the case where it returns > FILE_TYPE_UNKNOWN and GetLastError() has something else than > NO_ERROR. The code would return EINVAL for all the errors happening. > Perhaps that's fine, though I am wondering if we should report > something more exact, based on _dosmaperr(GetLastError())? In short, I was thinking among the lines of something like the attached, where I have invented a pgwin32_get_file_type() that acts as a wrapper of GetFileType() in a new file called win32common.c, with all the error handling we would use between fstat(), fseeko() and ftello() centralized in a single code path. The refactoring with win32common.c had better be separated into its own patch, at the end, if using an approach like that. -- Michael
Commits
-
Fix detection of unseekable files for fseek() and ftello() with MSVC
- 34105eea62e1 14.8 landed
- 5c32549460fc 15.3 landed
- a923e21631a2 16.0 landed