From 193bf997c1f6934bfb79db6c106b656fcdb7a137 Mon Sep 17 00:00:00 2001 From: Peter Meerwald Date: Mon, 29 Jul 2013 22:13:41 +0200 Subject: [PATCH] pacmd: Discriminate between interactive and non-interactive mode interactive sessions are initiated with a hello message in order to receive a welcome message from the PA daemon and a command prompt interactive sessions have a terminal connected to stdin non-interactive sessions execute commands given on the command line or received via stdin; non-interactive sessions have neither welcome message nor command prompt Signed-off-by: Peter Meerwald --- src/utils/pacmd.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/utils/pacmd.c b/src/utils/pacmd.c index cf0eb445..61b87a0a 100644 --- a/src/utils/pacmd.c +++ b/src/utils/pacmd.c @@ -83,7 +83,7 @@ static void help(const char *argv0) { printf(_("\n" " -h, --help Show this help\n" " --version Show version\n" - "When no command is given pacmd starts in the interactive mode\n" )); + "When no command is given pacmd starts in the interactive mode.\n" )); } enum { @@ -102,7 +102,6 @@ int main(int argc, char*argv[]) { bool ibuf_eof, obuf_eof, ibuf_closed, obuf_closed; struct pollfd pollfd[3]; struct pollfd *watch_socket, *watch_stdin, *watch_stdout; - int stdin_type = 0, stdout_type = 0, fd_type = 0; char *bn = NULL; @@ -209,6 +208,14 @@ int main(int argc, char*argv[]) { ibuf_eof = true; } + if (!ibuf_eof && isatty(STDIN_FILENO)) { + /* send hello to enable interactive mode (welcome message, prompt) */ + if (pa_write(fd, "hello\n", 6, &fd_type) < 0) { + pa_log(_("write(): %s"), strerror(errno)); + goto quit; + } + } + for (;;) { struct pollfd *p; -- 2.39.2