[PATCH v2 03/14] linux: xf86OpenConsole: Don't detach from controlling tty when it is our vt

Peter Hutterer peter.hutterer at who-t.net
Tue Feb 11 06:55:01 CET 2014


On Tue, Feb 04, 2014 at 12:49:09PM +0100, Hans de Goede wrote:
> Detaching from our controllling tty makes little sense when it is the same

typo: controlling. otherwise, Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

Cheers,
   Peter


> as the vt we're asked to run on. So automatically assume -keeptty in this case.
> 
> This is useful to do because when not running as root the server can only make
> various VT related ioctls when it does not detach from the tty.
> 
> Signed-off-by: Hans de Goede <hdegoede at redhat.com>
> ---
>  hw/xfree86/os-support/linux/lnx_init.c | 19 ++++++++++++++++++-
>  1 file changed, 18 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
> index 9ccf261..85709c6 100644
> --- a/hw/xfree86/os-support/linux/lnx_init.c
> +++ b/hw/xfree86/os-support/linux/lnx_init.c
> @@ -79,9 +79,10 @@ switch_to(int vt, const char *from)
>  void
>  xf86OpenConsole(void)
>  {
> -    int i, fd = -1, ret;
> +    int i, fd = -1, ret, current_vt = -1;
>      struct vt_mode VT;
>      struct vt_stat vts;
> +    struct stat st;
>      MessageType from = X_PROBED;
>      const char *tty0[] = { "/dev/tty0", "/dev/vc/0", NULL };
>      const char *vcs[] = { "/dev/vc/%d", "/dev/tty%d", NULL };
> @@ -126,6 +127,22 @@ xf86OpenConsole(void)
>  
>          xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
>  
> +        /* Some of stdin / stdout / stderr maybe redirected to a file */
> +        for (i = STDIN_FILENO; i <= STDERR_FILENO; i++) {
> +            ret = fstat(i, &st);
> +            if (ret == 0 && S_ISCHR(st.st_mode) && major(st.st_rdev) == 4) {
> +                current_vt = minor(st.st_rdev);
> +                break;
> +            }
> +        }
> +
> +        if (!KeepTty && current_vt == xf86Info.vtno) {
> +            xf86Msg(X_PROBED,
> +                    "controlling tty is VT number %d, auto-enabling KeepTty\n",
> +                    current_vt);
> +            KeepTty = TRUE;
> +        }
> +
>          if (!KeepTty) {
>              pid_t ppid = getppid();
>              pid_t ppgid;
> -- 
> 1.8.5.3
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
> 


More information about the xorg-devel mailing list