diff --git a/src/basic/terminal-util.c b/src/basic/terminal-util.c index 3fd5c4f8b8..09410ccc45 100644 --- a/src/basic/terminal-util.c +++ b/src/basic/terminal-util.c @@ -1973,7 +1973,7 @@ int terminal_get_cursor_position( assert(input_fd >= 0); assert(output_fd >= 0); - if (terminal_is_dumb()) + if (getenv_terminal_is_dumb()) return -EOPNOTSUPP; r = terminal_verify_same(input_fd, output_fd); @@ -2458,7 +2458,11 @@ static int terminal_prepare_query( assert(ret_nonblock_fd); assert(ret_saved_termios); - if (terminal_is_dumb()) + /* Use getenv_terminal_is_dumb() instead of terminal_is_dumb() here since we operate on an + * explicitly passed fd, not on stdio. terminal_is_dumb() additionally checks on_tty() which + * tests whether *stderr* is a tty — that's irrelevant when we're querying a directly opened + * terminal such as /dev/console. */ + if (getenv_terminal_is_dumb()) return -EOPNOTSUPP; r = terminal_verify_same(input_fd, output_fd);