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:
parent
cddaeb43d3
commit
4139838a93
9 changed files with 38 additions and 37 deletions
|
@ -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]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue