]> code.delx.au - pulseaudio/commitdiff
pacmd: Discriminate between interactive and non-interactive mode
authorPeter Meerwald <pmeerw@pmeerw.net>
Mon, 29 Jul 2013 20:13:41 +0000 (22:13 +0200)
committerDavid Henningsson <david.henningsson@canonical.com>
Fri, 2 Aug 2013 14:25:27 +0000 (16:25 +0200)
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 <pmeerw@pmeerw.net>
src/utils/pacmd.c

index cf0eb44569fdab682513171aecfab494153bc0ee..61b87a0acf8ec1ab9bcb75b4223bb14d9348d2f5 100644 (file)
@@ -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;