diff options
author | ZyX <kp-pav@yandex.ru> | 2017-03-19 16:09:48 +0300 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2017-03-19 16:09:48 +0300 |
commit | fdfa1ed578afd41a68f05c88dc419d88051b7240 (patch) | |
tree | 6eac36009c75cb33b211a48d7cc043c0df1a3b86 /src/nvim/os/fs.c | |
parent | d2268d5ebbbd472c9c4f303404dc5640208d3b3b (diff) | |
download | rneovim-fdfa1ed578afd41a68f05c88dc419d88051b7240.tar.gz rneovim-fdfa1ed578afd41a68f05c88dc419d88051b7240.tar.bz2 rneovim-fdfa1ed578afd41a68f05c88dc419d88051b7240.zip |
main: Temporary fix assertion error
This variant uses `fdopen()` which is not standard, but it fixes problem on my
system. In next commit `scriptin` will use `FileDescriptor*` from os/fileio in
place of `FILE*`.
Diffstat (limited to 'src/nvim/os/fs.c')
-rw-r--r-- | src/nvim/os/fs.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c index 2beeae7ec6..9ce50d4afd 100644 --- a/src/nvim/os/fs.c +++ b/src/nvim/os/fs.c @@ -430,6 +430,29 @@ int os_close(const int fd) return r; } +/// Duplicate file descriptor +/// +/// @param[in] fd File descriptor to duplicate. +/// +/// @return New file descriptor or libuv error code (< 0). +int os_dup(const int fd) + FUNC_ATTR_WARN_UNUSED_RESULT +{ + int ret; +os_dup_dup: + ret = dup(fd); + if (ret < 0) { + const int error = os_translate_sys_error(errno); + errno = 0; + if (error == UV_EINTR) { + goto os_dup_dup; + } else { + return error; + } + } + return ret; +} + /// Read from a file /// /// Handles EINTR and ENOMEM, but not other errors. |