mirror of
https://github.com/neovim/neovim.git
synced 2025-10-05 01:16:31 +00:00
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.
This commit is contained in:
@@ -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.
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user