mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-01-06 16:45:03 +00:00
LibSystem: Add pledge() and unveil() wrappers that return ErrorOr<void>
These will be more ergonomic to use together with TRY(). :^)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
set(SOURCES
|
||||
Wrappers.cpp
|
||||
syscall.cpp
|
||||
)
|
||||
|
||||
|
||||
36
Userland/Libraries/LibSystem/Wrappers.cpp
Normal file
36
Userland/Libraries/LibSystem/Wrappers.cpp
Normal file
@@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <LibSystem/Wrappers.h>
|
||||
#include <LibSystem/syscall.h>
|
||||
|
||||
namespace System {
|
||||
|
||||
ErrorOr<void> pledge(StringView promises, StringView execpromises)
|
||||
{
|
||||
Syscall::SC_pledge_params params {
|
||||
{ promises.characters_without_null_termination(), promises.length() },
|
||||
{ execpromises.characters_without_null_termination(), execpromises.length() },
|
||||
};
|
||||
int rc = syscall(SC_pledge, ¶ms);
|
||||
if (rc < 0)
|
||||
return Error::from_errno(-rc);
|
||||
return {};
|
||||
}
|
||||
|
||||
ErrorOr<void> unveil(StringView path, StringView permissions)
|
||||
{
|
||||
Syscall::SC_unveil_params params {
|
||||
{ path.characters_without_null_termination(), path.length() },
|
||||
{ permissions.characters_without_null_termination(), permissions.length() },
|
||||
};
|
||||
int rc = syscall(SC_unveil, ¶ms);
|
||||
if (rc < 0)
|
||||
return Error::from_errno(-rc);
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
||||
16
Userland/Libraries/LibSystem/Wrappers.h
Normal file
16
Userland/Libraries/LibSystem/Wrappers.h
Normal file
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* Copyright (c) 2021, Andreas Kling <kling@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <AK/Error.h>
|
||||
|
||||
namespace System {
|
||||
|
||||
ErrorOr<void> pledge(StringView promises, StringView execpromises);
|
||||
ErrorOr<void> unveil(StringView path, StringView permissions);
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user