Re: Fix fseek() detection of unseekable files on WIN32
Juan José Santamaría Flecha <juanjo.santamaria@gmail.com>
From: Juan José Santamaría Flecha <juanjo.santamaria@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2023-03-16T09:08:44Z
Lists: pgsql-hackers
On Thu, Mar 16, 2023 at 2:05 AM Michael Paquier <michael@paquier.xyz> wrote:
> On Wed, Mar 15, 2023 at 12:18:25PM +0100, Juan José Santamaría Flecha
> wrote:
> > PFA a new version of the patch.
>
> +_pgftello64(FILE *stream)
> +{
> + DWORD fileType;
> +
> + fileType = GetFileType((HANDLE) _get_osfhandle(_fileno(stream)));
>
> Hmm. I am a bit surprised here.. It seems to me that we should make
> sure that:
> - We exist quickly if _get_osfhandle() returns -2 or
> INVALID_HANDLE_VALUE, returning EINVAL?
> - After GetFileType(), check for GetLastError() and the
> FILE_TYPE_UNKNOWN case?
>
> Do you think that these would be improvements?
>
IDK, this is just looking for the good case, anything else we'll fail with
ESPIPE or EINVAL anyway. If we want to get the proper file type we can call
fstat(), which has the full logic.
Regards,
Juan José Santamaría Flecha
Commits
-
Fix detection of unseekable files for fseek() and ftello() with MSVC
- 34105eea62e1 14.8 landed
- 5c32549460fc 15.3 landed
- a923e21631a2 16.0 landed