From: Alexandru DAMIAN <[email protected]>

Current behaviour of the tty parameter is to take effect
only if there is a new user starting up.

Since it is useful to start weston-launch with a command line
specified tty, I'm changing the semantics of the tty parameter:

* the argument to the --tty parameter is now mandatory
* if specified, weston-launch will try to run on the specified tty
* otherwise, it will continue to try to find the first free console

This patch allows starting weston-launch over a ssh connection,
for example, with the current user.

Signed-off-by: Alexandru DAMIAN <[email protected]>
---
 src/weston-launch.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/weston-launch.c b/src/weston-launch.c
index 1b560af..94be876 100644
--- a/src/weston-launch.c
+++ b/src/weston-launch.c
@@ -466,14 +466,10 @@ setup_tty(struct weston_launch *wl, const char *tty)
        struct vt_mode mode = { 0 };
        char *t;
 
-       if (!wl->new_user) {
+       if (tty) {
+               wl->tty = open(tty, O_RDWR | O_NOCTTY);
+       } else if (!wl->new_user) {
                wl->tty = STDIN_FILENO;
-       } else if (tty) {
-               t = ttyname(STDIN_FILENO);
-               if (t && strcmp(t, tty) == 0)
-                       wl->tty = STDIN_FILENO;
-               else
-                       wl->tty = open(tty, O_RDWR | O_NOCTTY);
        } else {
                int tty0 = open("/dev/tty0", O_WRONLY | O_CLOEXEC);
                char filename[16];
@@ -497,7 +493,7 @@ setup_tty(struct weston_launch *wl, const char *tty)
                        error(1, errno, "stat %s failed", tty);
 
                if (major(buf.st_rdev) != TTY_MAJOR)
-                       error(1, 0, "invalid tty device: %s", tty);
+                       error(1, 0, "invalid tty device: %s ", 
ttyname(wl->tty));
 
                wl->ttynr = minor(buf.st_rdev);
        }
@@ -631,7 +627,7 @@ main(int argc, char *argv[])
 
        memset(&wl, 0, sizeof wl);
 
-       while ((c = getopt_long(argc, argv, "u:t::vh", opts, &i)) != -1) {
+       while ((c = getopt_long(argc, argv, "u:t:vh", opts, &i)) != -1) {
                switch (c) {
                case 'u':
                        wl.new_user = optarg;
-- 
1.8.1.2

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to