X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=execute.h;h=655f1e4f7b4aec9a66446a5e90c089d863ac7e25;hp=0ed3ecd7809e379abe1818526535e02e3e8348c8;hb=c9106f61d0755dc6b8aa7c4252baa140c2d473f1;hpb=c27488016e0e90569260bc513fa95acbad512ff5 diff --git a/execute.h b/execute.h index 0ed3ecd78..655f1e4f7 100644 --- a/execute.h +++ b/execute.h @@ -46,6 +46,7 @@ typedef enum ExecInput { EXEC_INPUT_TTY, EXEC_INPUT_TTY_FORCE, EXEC_INPUT_TTY_FAIL, + EXEC_INPUT_SOCKET, _EXEC_INPUT_MAX, _EXEC_INPUT_INVALID = -1 } ExecInput; @@ -56,6 +57,7 @@ typedef enum ExecOutput { EXEC_OUTPUT_TTY, EXEC_OUTPUT_SYSLOG, EXEC_OUTPUT_KERNEL, + EXEC_OUTPUT_SOCKET, _EXEC_OUTPUT_MAX, _EXEC_OUTPUT_INVALID = -1 } ExecOutput; @@ -95,6 +97,13 @@ struct ExecContext { bool cpu_affinity_set:1; bool timer_slack_ns_set:1; + /* This is not exposed to the user but available + * internally. We need it to make sure that whenever we spawn + * /bin/mount it is run in the same process group as us so + * that the autofs logic detects that it belongs to us and we + * don't enter a trigger loop. */ + bool no_setsid:1; + bool cpu_sched_reset_on_fork; bool non_blocking; @@ -163,6 +172,7 @@ typedef enum ExitStatus { } ExitStatus; int exec_spawn(ExecCommand *command, + char **argv, const ExecContext *context, int fds[], unsigned n_fds, bool apply_permissions, @@ -177,7 +187,8 @@ void exec_command_done_array(ExecCommand *c, unsigned n); void exec_command_free_list(ExecCommand *c); void exec_command_free_array(ExecCommand **c, unsigned n); -char *exec_command_line(ExecCommand *c); +char *exec_command_line(char **argv); + void exec_command_dump(ExecCommand *c, FILE *f, const char *prefix); void exec_command_dump_list(ExecCommand *c, FILE *f, const char *prefix); void exec_command_append_list(ExecCommand **l, ExecCommand *e);