diff options
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/fhandler/base.cc | 2 | ||||
-rw-r--r-- | winsup/cygwin/release/3.4.10 | 3 | ||||
-rw-r--r-- | winsup/cygwin/syscalls.cc | 4 |
3 files changed, 8 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc index 9b49ec7b9..58b63da8d 100644 --- a/winsup/cygwin/fhandler/base.cc +++ b/winsup/cygwin/fhandler/base.cc @@ -1705,7 +1705,7 @@ fhandler_base::fadvise (off_t offset, off_t length, int advice) int fhandler_base::ftruncate (off_t length, bool allow_truncate) { - return EINVAL; + return ENODEV; } int diff --git a/winsup/cygwin/release/3.4.10 b/winsup/cygwin/release/3.4.10 index 758a6e071..02f688583 100644 --- a/winsup/cygwin/release/3.4.10 +++ b/winsup/cygwin/release/3.4.10 @@ -18,3 +18,6 @@ Bug Fixes - Align behaviour of rand(3) to ISO C. Adresses: https://cygwin.com/pipermail/cygwin/2023-November/254735.html + +- Fix posix_fallocate(3) return value in case of being called on + other than regular files. diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index ba0cd05b2..bc323235a 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -2998,6 +2998,8 @@ posix_fallocate (int fd, off_t offset, off_t len) res = cfd->ftruncate (offset + len, false); else res = EBADF; + if (res == EISDIR) + res = ENODEV; } syscall_printf ("%R = posix_fallocate(%d, %D, %D)", res, fd, offset, len); return res; @@ -3013,6 +3015,8 @@ ftruncate (int fd, off_t length) res = cfd->ftruncate (length, true); if (res) { + if (res == ENODEV) + res = EINVAL; set_errno (res); res = -1; } |