diff options
Diffstat (limited to '')
-rw-r--r-- | src/core/execute.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/core/execute.c b/src/core/execute.c index e821133eea..8982af10aa 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -145,7 +145,7 @@ int exec_context_apply_tty_size( void exec_context_tty_reset(const ExecContext *context, const ExecParameters *p) { _cleanup_close_ int _fd = -EBADF, lock_fd = -EBADF; - int fd; + int fd, r; assert(context); @@ -172,13 +172,19 @@ void exec_context_tty_reset(const ExecContext *context, const ExecParameters *p) else if (lock_fd < 0) log_warning_errno(lock_fd, "Failed to lock /dev/console, proceeding without lock: %m"); - if (context->tty_vhangup) - (void) terminal_vhangup_fd(fd); - if (context->tty_reset) (void) terminal_reset_defensive(fd, /* switch_to_text= */ true); - (void) exec_context_apply_tty_size(context, fd, fd, path); + r = exec_context_apply_tty_size(context, fd, fd, path); + if (r < 0) + log_debug_errno(r, "Failed to configure TTY dimensions, ignoring: %m"); + + if (context->tty_vhangup) + (void) terminal_vhangup_fd(fd); + + /* We don't need the fd anymore now, and it potentially points to a hungup TTY anyway, let's close it + * hence. */ + _fd = safe_close(_fd); if (context->tty_vt_disallocate && path) (void) vt_disallocate(path); |