diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-04-13 02:06:27 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-04-13 02:06:27 +0200 |
commit | 80876c20f64f87765242bc35895977ab6a855729 (patch) | |
tree | fdb82b57685c706f99fde5659d350b1d3b381eda /execute.h | |
parent | 4112df163517478207526e0d3e7278ab1acf1f9f (diff) |
rework tty handling
We now make sure to run all services in their own session, possibly with
a controlling terminal.
This also extends the service and socket state machines a little.
Diffstat (limited to 'execute.h')
-rw-r--r-- | execute.h | 43 |
1 files changed, 27 insertions, 16 deletions
@@ -41,22 +41,25 @@ struct CGroupBonding; /* Abstract namespace! */ #define LOGGER_SOCKET "/org/freedesktop/systemd1/logger" +typedef enum ExecInput { + EXEC_INPUT_NULL, + EXEC_INPUT_TTY, + EXEC_INPUT_TTY_FORCE, + EXEC_INPUT_TTY_FAIL, + _EXEC_INPUT_MAX, + _EXEC_INPUT_INVALID = -1 +} ExecInput; + typedef enum ExecOutput { - EXEC_OUTPUT_CONSOLE, + EXEC_OUTPUT_INHERIT, EXEC_OUTPUT_NULL, + EXEC_OUTPUT_TTY, EXEC_OUTPUT_SYSLOG, EXEC_OUTPUT_KERNEL, _EXEC_OUTPUT_MAX, _EXEC_OUTPUT_INVALID = -1 } ExecOutput; -typedef enum ExecInput { - EXEC_INPUT_NULL, - EXEC_INPUT_CONSOLE, - _EXEC_INPUT_MAX, - _EXEC_INPUT_INVALID = -1 -} ExecInput; - struct ExecStatus { pid_t pid; usec_t start_timestamp; @@ -94,10 +97,13 @@ struct ExecContext { bool cpu_sched_reset_on_fork; bool non_blocking; - bool new_session; - ExecInput input; - ExecOutput output; + ExecInput std_input; + ExecOutput std_output; + ExecOutput std_error; + + char *tty_path; + int syslog_priority; char *syslog_identifier; @@ -138,10 +144,9 @@ typedef enum ExitStatus { EXIT_LIMITS, EXIT_OOM_ADJUST, EXIT_SIGNAL_MASK, - EXIT_INPUT, - EXIT_OUTPUT, + EXIT_STDIN, + EXIT_STDOUT, EXIT_CHROOT, /* 210 */ - EXIT_PGID, EXIT_IOPRIO, EXIT_TIMERSLACK, EXIT_SECUREBITS, @@ -150,8 +155,11 @@ typedef enum ExitStatus { EXIT_GROUP, EXIT_USER, EXIT_CAPABILITIES, - EXIT_CGROUP, /* 220 */ - EXIT_SETSID + EXIT_CGROUP, + EXIT_SETSID, /* 220 */ + EXIT_CONFIRM, + EXIT_STDERR + } ExitStatus; int exec_spawn(ExecCommand *command, @@ -159,6 +167,7 @@ int exec_spawn(ExecCommand *command, int *fds, unsigned n_fds, bool apply_permissions, bool apply_chroot, + bool confirm_spawn, struct CGroupBonding *cgroup_bondings, pid_t *ret); @@ -187,4 +196,6 @@ int exec_output_from_string(const char *s); const char* exec_input_to_string(ExecInput i); int exec_input_from_string(const char *s); +const char* exit_status_to_string(ExitStatus status); + #endif |