Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/fhandler/base.cc2
-rw-r--r--winsup/cygwin/release/3.4.103
-rw-r--r--winsup/cygwin/syscalls.cc4
3 files changed, 8 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc
index a57ffcb86..3f0dc5f69 100644
--- a/winsup/cygwin/fhandler/base.cc
+++ b/winsup/cygwin/fhandler/base.cc
@@ -1797,7 +1797,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 e4b3dd2f3..c3c17d604 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -3000,6 +3000,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;
@@ -3015,6 +3017,8 @@ ftruncate (int fd, off_t length)
res = cfd->ftruncate (length, true);
if (res)
{
+ if (res == ENODEV)
+ res = EINVAL;
set_errno (res);
res = -1;
}