1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 07:45:07 +00:00

Kernel: Make fcntl(F_SETFL) actually update the append/blocking flags.

This commit is contained in:
Andreas Kling 2019-05-30 15:37:51 +02:00
parent 7710863e3c
commit 8fe72d7b3c
3 changed files with 11 additions and 6 deletions

View file

@ -1012,7 +1012,6 @@ int Process::sys$fcntl(int fd, int cmd, dword arg)
case F_GETFL:
return descriptor->file_flags();
case F_SETFL:
// FIXME: Support changing O_NONBLOCK
descriptor->set_file_flags(arg);
break;
default:
@ -1125,10 +1124,9 @@ int Process::sys$open(const char* path, int options, mode_t mode)
auto descriptor = result.value();
if (options & O_DIRECTORY && !descriptor->is_directory())
return -ENOTDIR; // FIXME: This should be handled by VFS::open.
descriptor->set_blocking(!(options & O_NONBLOCK));
descriptor->set_should_append(options & O_APPEND);
dword flags = (options & O_CLOEXEC) ? FD_CLOEXEC : 0;
m_fds[fd].set(move(descriptor), flags);
descriptor->set_file_flags(options);
dword fd_flags = (options & O_CLOEXEC) ? FD_CLOEXEC : 0;
m_fds[fd].set(move(descriptor), fd_flags);
return fd;
}