[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 -+-