Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Nov 2016 20:55:42 -0800
From:      Conrad Meyer <cem@freebsd.org>
To:        iblis <iblis@hs.ntnu.edu.tw>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: r308432: Capsicumized `basename` make zsh prompt broken
Message-ID:  <CAG6CVpUbRq-%2BY8akXRsKqt6NvWuoPJKnfCJ2dzK1cVRHxGc0Sw@mail.gmail.com>
In-Reply-To: <5874fe09-4261-5616-9c0a-a71581c4d548@hs.ntnu.edu.tw>
References:  <5874fe09-4261-5616-9c0a-a71581c4d548@hs.ntnu.edu.tw>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Iblis,

I see no such problem running 'basename $HOME' in a normal shell environmen=
t:

> $ basename $HOME
> cmeyer

I suppose in your use, perhaps stdin is already closed?  I think this
is a limitation of caph_limit_stdio() in general.

Can you try instead:

function set_prompt {
    prompt=3D"$(basename $HOME < /dev/null) >"
}

And see if it resolves the issue?

Thanks,
Conrad

On Sun, Nov 27, 2016 at 8:33 PM, iblis <iblis@hs.ntnu.edu.tw> wrote:
> Hi,
> Here is a minimal config of zsh prompt invoking `basename`:
> ```
> =E2=94=94=E2=94=80[iblis@abeing]% cat /home/ib-test/.zshenv
>
> function set_prompt {
>     prompt=3D"$(basename $HOME) >"
> }
>
> function zle-line-init zle-keymap-select {
>         set_prompt
>         zle reset-prompt
> }
>
> zle -N zle-line-init
> zle -N zle-keymap-select
>
> set_prompt
> ```
>
> and launching zsh will get something like this:
>
> ```
> =E2=94=94=E2=94=80[iblis@abeing]% sudo su ib-test
>
> ib-test >basename: capsicum: Bad file descriptor
>>
>>basename: capsicum: Bad file descriptor
>>
> ```
>
>
> To be honest, I have no idea about what casper/caspicum is. I just change=
d
> the `basename.c` and zsh work again.
>
> Index: basename.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> --- basename.c (revision 309213)
> +++ basename.c (working copy)
> @@ -65,7 +65,7 @@
>
> setlocale(LC_ALL, "");
>
> - if (caph_limit_stdio() < 0 || (cap_enter() < 0 && errno !=3D ENOSYS))
> + if (cap_enter() < 0 && errno !=3D ENOSYS)
> err(1, "capsicum");
>
> aflag =3D 0;
>
>
> Any idea?
>
> --
> Iblis Lin
> _______________________________________________
> freebsd-current@freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-current
> To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org=
"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpUbRq-%2BY8akXRsKqt6NvWuoPJKnfCJ2dzK1cVRHxGc0Sw>