[PATCH] Cygwin: fsync: Return EINVAL for special files.

Corinna Vinschen corinna-cygwin@cygwin.com
Mon Mar 14 09:50:26 GMT 2022


On Mar 12 06:37, Takashi Yano wrote:
> - Unlike linux, fsync() calls FlushFileBuffers() even for special
>   files. This cause the problem reported in:
>     https://cygwin.com/pipermail/cygwin/2022-March/251022.html
>   This patch fixes the issue.
> ---
>  winsup/cygwin/fhandler.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc
> index 98d7a3b2d..fc7bf0a0e 100644
> --- a/winsup/cygwin/fhandler.cc
> +++ b/winsup/cygwin/fhandler.cc
> @@ -1750,7 +1750,7 @@ fhandler_base::utimens (const struct timespec *tvp)
>  int
>  fhandler_base::fsync ()
>  {
> -  if (!get_handle () || nohandle ())
> +  if (!get_handle () || nohandle () || pc.isspecial ())
>      {
>        set_errno (EINVAL);
>        return -1;
> -- 
> 2.35.1

Ouch, yeah, that's obvious.


Thanks,
Corinna


More information about the Cygwin-patches mailing list