Implement basic chmod() syscall and /bin/chmod helper.

Only raw octal modes are supported right now.
This patch also changes mode_t from 32-bit to 16-bit to match the on-disk
type used by Ext2FS.

I also ran into EPERM being errno=0 which was confusing, so I inserted an
ESUCCESS in its place.
This commit is contained in:
Andreas Kling 2019-01-29 04:55:08 +01:00
parent ad53f6afd3
commit c30e2c8d44
Notes: sideshowbarker 2024-07-19 15:55:24 +09:00
22 changed files with 156 additions and 4 deletions

View file

@ -1292,3 +1292,13 @@ size_t Ext2FSInode::directory_entry_count() const
LOCKER(m_lock);
return m_lookup_cache.size();
}
bool Ext2FSInode::chmod(mode_t mode, int& error)
{
error = 0;
if (m_raw_inode.i_mode == mode)
return true;
m_raw_inode.i_mode = mode;
set_metadata_dirty(true);
return true;
}