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>