bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH hurd] utils/mount: start translators with stderr closed


From: Samuel Thibault
Subject: Re: [PATCH hurd] utils/mount: start translators with stderr closed
Date: Mon, 22 Feb 2016 20:12:23 +0100
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

Hello,

Justus Winter, on Mon 22 Feb 2016 19:22:14 +0100, wrote:
> Apparently some users of 'mount' do not cope with any output being
> generated from the spawned translator.
> 
> * utils/mount.c (do_mount): Start translators with stderr closed.

Yep, that fixes the issue, thanks!

> ---
>  utils/mount.c | 33 ++++++++++++++++++++++++++++++---
>  1 file changed, 30 insertions(+), 3 deletions(-)
> 
> diff --git a/utils/mount.c b/utils/mount.c
> index c5736ba..5fa35bc 100644
> --- a/utils/mount.c
> +++ b/utils/mount.c
> @@ -420,9 +420,36 @@ do_mount (struct fs *fs, int remount)
>        }
>  
>        explain ("settrans -a");
> -      err = fshelp_start_translator (open_node, NULL, fsopts,
> -                                  fsopts, fsopts_len, timeout,
> -                                  &active_control);
> +      {
> +     mach_port_t ports[INIT_PORT_MAX];
> +     mach_port_t fds[STDERR_FILENO + 1];
> +     int ints[INIT_INT_MAX];
> +     int i;
> +
> +     for (i = 0; i < INIT_PORT_MAX; i++)
> +       ports[i] = MACH_PORT_NULL;
> +     for (i = 0; i < STDERR_FILENO + 1; i++)
> +       fds[i] = MACH_PORT_NULL;
> +     memset (ints, 0, INIT_INT_MAX * sizeof(int));
> +
> +     ports[INIT_PORT_CWDIR] = getcwdir ();
> +     ports[INIT_PORT_CRDIR] = getcrdir ();
> +     ports[INIT_PORT_AUTH] = getauth ();
> +
> +     err = fshelp_start_translator_long (open_node, NULL,
> +                                         fsopts, fsopts, fsopts_len,
> +                                         fds, MACH_MSG_TYPE_COPY_SEND,
> +                                         STDERR_FILENO + 1,
> +                                         ports, MACH_MSG_TYPE_COPY_SEND,
> +                                         INIT_PORT_MAX,
> +                                         ints, INIT_INT_MAX,
> +                                         geteuid (),
> +                                         timeout, &active_control);
> +     for (i = 0; i < INIT_PORT_MAX; i++)
> +       mach_port_deallocate (mach_task_self (), ports[i]);
> +     for (i = 0; i <= STDERR_FILENO; i++)
> +       mach_port_deallocate (mach_task_self (), fds[i]);
> +      }
>        /* If ERR is due to a problem opening the translated node, we print
>        that name, otherwise, the name of the translator.  */
>        if (open_err)
> -- 
> 2.1.4
> 

-- 
Samuel
<P> moo
<N> moo ?
<D> P: keski t'arrive? :))
<P> moooo
<N> moooooo ?
<P> rien le net marche je suis content :)
 -+- #ens-mim - accro du net -+-



reply via email to

[Prev in Thread] Current Thread [Next in Thread]