]> xenbits.xensource.com Git - people/dariof/xen.git/commitdiff
xenconsole: Add option to xenconsole to always forward console input
authorFelix Schmoll <eggi.innovations@gmail.com>
Thu, 20 Jul 2017 07:47:48 +0000 (09:47 +0200)
committerWei Liu <wei.liu2@citrix.com>
Thu, 20 Jul 2017 16:34:53 +0000 (17:34 +0100)
Currently the default behaviour of the xenconsole client is to
ignore any input to stdin, unless stdin and stdout are both
ttys. The new option allows to manually overwrite this, causing the
client to forward input regardless.

Signed-off-by: Felix Schmoll <eggi.innovations@gmail.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Ian Jackson <ian.jackson@eu.citrix.com>
tools/console/client/main.c

index 977779f034ad5c464184f3157b240f4e423fed9b..c340cb7de3c6718ddf3282224e263f4c49f0ef69 100644 (file)
@@ -334,6 +334,7 @@ int main(int argc, char **argv)
                { "num",     1, 0, 'n' },
                { "help",    0, 0, 'h' },
                { "start-notify-fd", 1, 0, 's' },
+               { "interactive", 0, 0, 'i' },
                { 0 },
 
        };
@@ -344,9 +345,6 @@ int main(int argc, char **argv)
        console_type type = CONSOLE_INVAL;
        bool interactive = 0;
 
-       if (isatty(STDIN_FILENO) && isatty(STDOUT_FILENO))
-               interactive = 1;
-
        while((ch = getopt_long(argc, argv, sopt, lopt, &opt_ind)) != -1) {
                switch(ch) {
                case 'h':
@@ -370,6 +368,9 @@ int main(int argc, char **argv)
                case 's':
                        start_notify_fd = atoi(optarg);
                        break;
+               case 'i':
+                       interactive = 1;
+                       break;
                default:
                        fprintf(stderr, "Invalid argument\n");
                        fprintf(stderr, "Try `%s --help' for more information.\n", 
@@ -464,7 +465,8 @@ int main(int argc, char **argv)
        }
 
        init_term(spty, &attr);
-       if (interactive) {
+       if (isatty(STDIN_FILENO) && isatty(STDOUT_FILENO)) {
+               interactive = 1;
                init_term(STDIN_FILENO, &stdin_old_attr);
                atexit(restore_term_stdin); /* if this fails, oh dear */
        }