[PATCH 2/3] linux: xf86OpenConsole: open vt before detaching from terminal

Peter Hutterer peter.hutterer at who-t.net
Mon Jan 20 21:11:20 PST 2014


On Thu, Jan 16, 2014 at 11:24:50AM +0100, Hans de Goede wrote:
> This is a preparation patch for automatically doing keeptty when the server
> gets passed the current vt as vt to use on the cmdline.

I found the commit message a bit confusing. The bit you moved merely moves
the process group handling code, so it'd be great if you could amend the
message for that.

Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net> for the series
though.

Cheers,
   Peter


> ---
>  hw/xfree86/os-support/linux/lnx_init.c | 43 ++++++++++++++++------------------
>  1 file changed, 20 insertions(+), 23 deletions(-)
> 
> diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
> index bead72e..5f7d39b 100644
> --- a/hw/xfree86/os-support/linux/lnx_init.c
> +++ b/hw/xfree86/os-support/linux/lnx_init.c
> @@ -126,27 +126,6 @@ xf86OpenConsole(void)
>  
>          xf86Msg(from, "using VT number %d\n\n", xf86Info.vtno);
>  
> -        if (!KeepTty) {
> -            pid_t ppid = getppid();
> -            pid_t ppgid;
> -
> -            ppgid = getpgid(ppid);
> -
> -            /*
> -             * change to parent process group that pgid != pid so
> -             * that setsid() doesn't fail and we become process
> -             * group leader
> -             */
> -            if (setpgid(0, ppgid) < 0)
> -                xf86Msg(X_WARNING, "xf86OpenConsole: setpgid failed: %s\n",
> -                        strerror(errno));
> -
> -            /* become process group leader */
> -            if ((setsid() < 0))
> -                xf86Msg(X_WARNING, "xf86OpenConsole: setsid failed: %s\n",
> -                        strerror(errno));
> -        }
> -
>          i = 0;
>          while (vcs[i] != NULL) {
>              snprintf(vtname, sizeof(vtname), vcs[i], xf86Info.vtno);    /* /dev/tty1-64 */
> @@ -170,8 +149,26 @@ xf86OpenConsole(void)
>          else
>              activeVT = vts.v_active;
>  
> -#if 0
>          if (!KeepTty) {
> +            pid_t ppid = getppid();
> +            pid_t ppgid;
> +
> +            ppgid = getpgid(ppid);
> +
> +            /*
> +             * change to parent process group that pgid != pid so
> +             * that setsid() doesn't fail and we become process
> +             * group leader
> +             */
> +            if (setpgid(0, ppgid) < 0)
> +                xf86Msg(X_WARNING, "xf86OpenConsole: setpgid failed: %s\n",
> +                        strerror(errno));
> +
> +            /* become process group leader */
> +            if ((setsid() < 0))
> +                xf86Msg(X_WARNING, "xf86OpenConsole: setsid failed: %s\n",
> +                        strerror(errno));
> +#if 0
>              /*
>               * Detach from the controlling tty to avoid char loss
>               */
> @@ -179,8 +176,8 @@ xf86OpenConsole(void)
>                  SYSCALL(ioctl(i, TIOCNOTTY, 0));
>                  close(i);
>              }
> -        }
>  #endif
> +        }
>  
>          if (!xf86Info.ShareVTs) {
>              struct termios nTty;
> -- 
> 1.8.4.2
> 
> _______________________________________________
> 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