summaryrefslogtreecommitdiff
path: root/src/basic/terminal-util.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-02-13 21:24:37 +0100
committerLennart Poettering <lennart@poettering.net>2018-02-13 21:24:37 +0100
commit8854d7950449911dafc2aad945ad97584dd5b9f1 (patch)
treece64ff32fb7eddae5c0e830571c2f11dc2bc6eb9 /src/basic/terminal-util.h
parent149bc84aacd06dccf2b0e4def6a2fa04fa902f2b (diff)
downloadsystemd-8854d7950449911dafc2aad945ad97584dd5b9f1.tar.gz
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.h18
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);