init: Add support for WorkingDirectory keys
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
7ff5096083
commit
5626083aad
@ -34,6 +34,7 @@ struct Service
|
||||
String standard_output;
|
||||
String standard_error;
|
||||
String standard_input;
|
||||
String working_directory;
|
||||
Option<uid_t> user {};
|
||||
Option<gid_t> group {};
|
||||
bool wait { false };
|
||||
@ -85,6 +86,8 @@ static Result<void> service_child(const Service& service, SharedPtr<os::File> ou
|
||||
if (error) dup2(error->fd(), STDERR_FILENO);
|
||||
if (input) dup2(input->fd(), STDIN_FILENO);
|
||||
|
||||
if (!service.working_directory.is_empty()) chdir(service.working_directory.chars());
|
||||
|
||||
if (service.user.has_value())
|
||||
{
|
||||
setgid(service.group.value());
|
||||
@ -240,6 +243,12 @@ static Result<void> load_service(const os::Path& path)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (parts[0].view() == "WorkingDirectory")
|
||||
{
|
||||
service.working_directory = move(parts[1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (g_is_system && parts[0].view() == "User")
|
||||
{
|
||||
auto* pw = getpwnam(parts[1].chars());
|
||||
|
@ -1,4 +1,5 @@
|
||||
Name=taskbar
|
||||
Description=Start the taskbar.
|
||||
Command=/usr/bin/taskbar
|
||||
WorkingDirectory=/home/selene
|
||||
Restart=true
|
||||
|
@ -1,3 +1,4 @@
|
||||
Name=terminal
|
||||
Description=Start the terminal.
|
||||
WorkingDirectory=/home/selene
|
||||
Command=/usr/bin/terminal
|
||||
|
Loading…
Reference in New Issue
Block a user