diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-02-13 21:24:37 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-02-13 21:24:37 +0100 |
commit | 8854d7950449911dafc2aad945ad97584dd5b9f1 (patch) | |
tree | ce64ff32fb7eddae5c0e830571c2f11dc2bc6eb9 /src/basic/terminal-util.h | |
parent | tty-ask-password-agent: make code a tiny bit shorter (diff) | |
download | systemd-8854d7950449911dafc2aad945ad97584dd5b9f1.tar.xz systemd-8854d7950449911dafc2aad945ad97584dd5b9f1.zip |
terminal-util: rework acquire_terminal()
This modernizes acquire_terminal() in a couple of ways:
1. The three boolean arguments are replaced by a flags parameter, that
should be more descriptive in what it does.
2. We now properly handle inotify queue overruns
3. We use _cleanup_ for closing the fds now, to shorten the code quite a
bit.
Behaviour should not be altered by this.
Diffstat (limited to 'src/basic/terminal-util.h')
-rw-r--r-- | src/basic/terminal-util.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/basic/terminal-util.h b/src/basic/terminal-util.h index e82719b11b..257dbe71da 100644 --- a/src/basic/terminal-util.h +++ b/src/basic/terminal-util.h @@ -52,7 +52,23 @@ int reset_terminal_fd(int fd, bool switch_to_text); int reset_terminal(const char *name); int open_terminal(const char *name, int mode); -int acquire_terminal(const char *name, bool fail, bool force, bool ignore_tiocstty_eperm, usec_t timeout); + +/* Flags for tweaking the way we become the controlling process of a terminal. */ +typedef enum AcquireTerminalFlags { + /* Try to become the controlling process of the TTY. If we can't return -EPERM. */ + ACQUIRE_TERMINAL_TRY = 0, + + /* Tell the kernel to forcibly make us the controlling process of the TTY. Returns -EPERM if the kernel doesn't allow that. */ + ACQUIRE_TERMINAL_FORCE = 1, + + /* If we can't become the controlling process of the TTY right-away, then wait until we can. */ + ACQUIRE_TERMINAL_WAIT = 2, + + /* Pick one of the above, and then OR this flag in, in order to request permissive behaviour, if we can't become controlling process then don't mind */ + ACQUIRE_TERMINAL_PERMISSIVE = 4, +} AcquireTerminalFlags; + +int acquire_terminal(const char *name, AcquireTerminalFlags flags, usec_t timeout); int release_terminal(void); int terminal_vhangup_fd(int fd); |