diff options
author | Pino Toscano <toscano.pino@tiscali.it> | 2012-10-29 19:35:56 +0100 |
---|---|---|
committer | Pino Toscano <toscano.pino@tiscali.it> | 2012-10-29 19:35:56 +0100 |
commit | 94ce799f82a1d3b7453b1942016f91334c838b85 (patch) | |
tree | 71d72c0ee1517df4455f3cc9ec83631a3411f621 | |
parent | 8bece75210704b1c667087f9c2b71af64a68cb53 (diff) | |
download | glibc-94ce799f82a1d3b7453b1942016f91334c838b85.zip glibc-94ce799f82a1d3b7453b1942016f91334c838b85.tar.gz glibc-94ce799f82a1d3b7453b1942016f91334c838b85.tar.bz2 |
Hurd: fix fdatasync/fsync if the fd does not support file_sync
Handle the case of the fd port implementing a stub (EOPNOTSUPP),
properly returning EINVAL.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/mach/hurd/fdatasync.c | 8 | ||||
-rw-r--r-- | sysdeps/mach/hurd/fsync.c | 8 |
3 files changed, 18 insertions, 2 deletions
@@ -1,5 +1,9 @@ 2012-10-29 Pino Toscano <toscano.pino@tiscali.it> + * sysdeps/mach/hurd/fdatasync.c: Turn ERR into EINVAL if it is + EOPNOTSUPP. + * sysdeps/mach/hurd/fsync.c: Likewise. + * sysdeps/pthread/aio_notify.c (__aio_notify_only) [_POSIX_REALTIME_SIGNALS]: Change condition to [_POSIX_REALTIME_SIGNALS > 0]. diff --git a/sysdeps/mach/hurd/fdatasync.c b/sysdeps/mach/hurd/fdatasync.c index 19d7a4a..22c1d10 100644 --- a/sysdeps/mach/hurd/fdatasync.c +++ b/sysdeps/mach/hurd/fdatasync.c @@ -26,6 +26,12 @@ fdatasync (int fd) { error_t err = HURD_DPORT_USE (fd, __file_sync (port, 1, 1)); if (err) - return __hurd_dfail (fd, err); + { + if (err == EOPNOTSUPP) + /* If the file descriptor does not support sync, return EINVAL + as POSIX specifies. */ + err = EINVAL; + return __hurd_dfail (fd, err); + } return 0; } diff --git a/sysdeps/mach/hurd/fsync.c b/sysdeps/mach/hurd/fsync.c index a474c8a..fe3e044 100644 --- a/sysdeps/mach/hurd/fsync.c +++ b/sysdeps/mach/hurd/fsync.c @@ -27,6 +27,12 @@ fsync (fd) { error_t err = HURD_DPORT_USE (fd, __file_sync (port, 1, 0)); if (err) - return __hurd_dfail (fd, err); + { + if (err == EOPNOTSUPP) + /* If the file descriptor does not support sync, return EINVAL + as POSIX specifies. */ + err = EINVAL; + return __hurd_dfail (fd, err); + } return 0; } |