mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Merge pull request #3184 from justinmk/remove_is_readonly
os/fs.c: remove os_file_is_readonly()
This commit is contained in:
commit
8653000782
@ -2395,7 +2395,7 @@ static int check_readonly(int *forceit, buf_T *buf)
|
|||||||
* the file exists and permissions are read-only. */
|
* the file exists and permissions are read-only. */
|
||||||
if (!*forceit && (buf->b_p_ro
|
if (!*forceit && (buf->b_p_ro
|
||||||
|| (os_file_exists(buf->b_ffname)
|
|| (os_file_exists(buf->b_ffname)
|
||||||
&& os_file_is_readonly((char *)buf->b_ffname)))) {
|
&& !os_file_is_writable((char *)buf->b_ffname)))) {
|
||||||
if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL) {
|
if ((p_confirm || cmdmod.confirm) && buf->b_fname != NULL) {
|
||||||
char_u buff[DIALOG_MSG_SIZE];
|
char_u buff[DIALOG_MSG_SIZE];
|
||||||
|
|
||||||
|
@ -2623,7 +2623,7 @@ buf_write (
|
|||||||
* Check if the file is really writable (when renaming the file to
|
* Check if the file is really writable (when renaming the file to
|
||||||
* make a backup we won't discover it later).
|
* make a backup we won't discover it later).
|
||||||
*/
|
*/
|
||||||
file_readonly = os_file_is_readonly((char *)fname);
|
file_readonly = !os_file_is_writable((char *)fname);
|
||||||
|
|
||||||
if (!forceit && file_readonly) {
|
if (!forceit && file_readonly) {
|
||||||
if (vim_strchr(p_cpo, CPO_FWRITE) != NULL) {
|
if (vim_strchr(p_cpo, CPO_FWRITE) != NULL) {
|
||||||
|
@ -270,15 +270,6 @@ bool os_file_exists(const char_u *name)
|
|||||||
return os_stat((char *)name, &statbuf);
|
return os_stat((char *)name, &statbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check if a file is readonly.
|
|
||||||
///
|
|
||||||
/// @return `true` if `name` is readonly.
|
|
||||||
bool os_file_is_readonly(const char *name)
|
|
||||||
FUNC_ATTR_NONNULL_ALL
|
|
||||||
{
|
|
||||||
return access(name, W_OK) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Check if a file is readable.
|
/// Check if a file is readable.
|
||||||
///
|
///
|
||||||
/// @return true if `name` is readable, otherwise false.
|
/// @return true if `name` is readable, otherwise false.
|
||||||
|
@ -229,10 +229,6 @@ describe('fs function', function()
|
|||||||
return res
|
return res
|
||||||
end
|
end
|
||||||
|
|
||||||
local function os_file_is_readonly(filename)
|
|
||||||
return fs.os_file_is_readonly((to_cstr(filename)))
|
|
||||||
end
|
|
||||||
|
|
||||||
local function os_file_is_readable(filename)
|
local function os_file_is_readable(filename)
|
||||||
return fs.os_file_is_readable((to_cstr(filename)))
|
return fs.os_file_is_readable((to_cstr(filename)))
|
||||||
end
|
end
|
||||||
@ -314,10 +310,8 @@ describe('fs function', function()
|
|||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- On Windows `os_fchown` always returns 0
|
|
||||||
-- because `uv_fs_chown` is no-op on this platform.
|
|
||||||
if (ffi.os == 'Windows' or ffi.C.geteuid() == 0) then
|
if (ffi.os == 'Windows' or ffi.C.geteuid() == 0) then
|
||||||
pending('skipped (os_fchown is no-op on Windows)', function() end)
|
pending('skipped (uv_fs_chown is no-op on Windows)', function() end)
|
||||||
else
|
else
|
||||||
it('returns nonzero if process has not enough permissions', function()
|
it('returns nonzero if process has not enough permissions', function()
|
||||||
-- chown to root
|
-- chown to root
|
||||||
@ -326,22 +320,6 @@ describe('fs function', function()
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
describe('os_file_is_readonly', function()
|
|
||||||
it('returns true if the file is readonly', function()
|
|
||||||
local perm = os_getperm('unit-test-directory/test.file')
|
|
||||||
local perm_orig = perm
|
|
||||||
perm = unset_bit(perm, ffi.C.kS_IWUSR)
|
|
||||||
perm = unset_bit(perm, ffi.C.kS_IWGRP)
|
|
||||||
perm = unset_bit(perm, ffi.C.kS_IWOTH)
|
|
||||||
eq(OK, (os_setperm('unit-test-directory/test.file', perm)))
|
|
||||||
eq(true, os_file_is_readonly('unit-test-directory/test.file'))
|
|
||||||
eq(OK, (os_setperm('unit-test-directory/test.file', perm_orig)))
|
|
||||||
end)
|
|
||||||
|
|
||||||
it('returns false if the file is writable', function()
|
|
||||||
eq(false, os_file_is_readonly('unit-test-directory/test.file'))
|
|
||||||
end)
|
|
||||||
end)
|
|
||||||
|
|
||||||
describe('os_file_is_readable', function()
|
describe('os_file_is_readable', function()
|
||||||
it('returns false if the file is not readable', function()
|
it('returns false if the file is not readable', function()
|
||||||
|
Loading…
Reference in New Issue
Block a user