From d54338f1e0fe971aad34d9bb6ed17805c38802a3 Mon Sep 17 00:00:00 2001 From: Rui Abreu Ferreira Date: Tue, 27 Oct 2015 11:37:50 +0000 Subject: [PATCH] Return libuv error code from os_getperm() Previously os_getperms() returned -1 for any error condition, it now returns the libuv error code (as returned by os_stat()). This allows checking for error conditions without relying on errno (which not available in Windows). The only case where the errno value from os_getperms() was being used was in readfile() to set the new-file flag - replaced the errno check with UV_ENOENT. --- src/nvim/fileio.c | 6 +----- src/nvim/os/fs.c | 7 ++++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/nvim/fileio.c b/src/nvim/fileio.c index c07597df47..1bee50b717 100644 --- a/src/nvim/fileio.c +++ b/src/nvim/fileio.c @@ -535,11 +535,7 @@ readfile ( if (!newfile) { return FAIL; } - if (perm < 0 -#ifdef ENOENT - && errno == ENOENT -#endif - ) { + if (perm == UV_ENOENT) { /* * Set the 'new-file' flag, so that when the file has * been created by someone else, a ":w" will complain. diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c index e13691652a..d59b66e773 100644 --- a/src/nvim/os/fs.c +++ b/src/nvim/os/fs.c @@ -217,15 +217,16 @@ static int os_stat(const char *name, uv_stat_t *statbuf) /// Get the file permissions for a given file. /// -/// @return `-1` when `name` doesn't exist. +/// @return libuv error code on error. int32_t os_getperm(const char_u *name) FUNC_ATTR_NONNULL_ALL { uv_stat_t statbuf; - if (os_stat((char *)name, &statbuf) == kLibuvSuccess) { + int stat_result = os_stat((char *)name, &statbuf); + if (stat_result == kLibuvSuccess) { return (int32_t)statbuf.st_mode; } else { - return -1; + return stat_result; } }