1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 10:18:11 +00:00

Userland et al: Pledge sigaction when needed

* In some cases, we can first call sigaction()/signal(), then *not* pledge
  sigaction.
* In other cases, we pledge sigaction at first, call sigaction()/signal()
  second, then pledge again, this time without sigaction.
* In yet other cases, we keep the sigaction pledge. I suppose these could all be
  migrated to drop it or not pledge it at all, if somebody is interested in
  doing that.
This commit is contained in:
Sergey Bugaev 2020-05-26 13:52:42 +03:00 committed by Andreas Kling
parent cddaeb43d3
commit 4139838a93
9 changed files with 38 additions and 37 deletions

View file

@ -59,26 +59,6 @@ int main(int argc, char** argv)
{
Core::EventLoop loop;
if (pledge("stdio rpath wpath cpath proc exec tty accept", nullptr) < 0) {
perror("pledge");
return 1;
}
auto shell = Shell::construct();
s_shell = shell.ptr();
editor.initialize();
shell->termios = editor.termios();
shell->default_termios = editor.default_termios();
editor.on_display_refresh = [&](auto& editor) {
editor.strip_styles();
shell->highlight(editor);
};
editor.on_tab_complete = [&](const Line::Editor& editor) {
return shell->complete(editor);
};
signal(SIGINT, [](int) {
editor.interrupted();
});
@ -107,6 +87,26 @@ int main(int argc, char** argv)
// Ignore SIGTSTP as the shell should not be suspended with ^Z.
signal(SIGTSTP, [](auto) {});
if (pledge("stdio rpath wpath cpath proc exec tty accept", nullptr) < 0) {
perror("pledge");
return 1;
}
auto shell = Shell::construct();
s_shell = shell.ptr();
editor.initialize();
shell->termios = editor.termios();
shell->default_termios = editor.default_termios();
editor.on_display_refresh = [&](auto& editor) {
editor.strip_styles();
shell->highlight(editor);
};
editor.on_tab_complete = [&](const Line::Editor& editor) {
return shell->complete(editor);
};
if (argc > 2 && !strcmp(argv[1], "-c")) {
dbgprintf("sh -c '%s'\n", argv[2]);
shell->run_command(argv[2]);