Date: Sun, 19 Aug 2012 21:08:11 +0200 From: sdaoden@gmail.com (Steffen "Daode" Nurpmeso) To: freebsd-bugs@FreeBSD.org Subject: Re: bin/170651: On 9.0-RELEASE#0 and master sh(1) gobbles high bit at first Message-ID: <5031399b.kUJVF%2BDXV14eaKTYNVaSqgGF@dietcurd.wild-life.local> In-Reply-To: <201208181430.q7IEUDYS054727@freefall.freebsd.org> References: <201208181430.q7IEUDYS054727@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
| |>Number: 170651 | |>Synopsis: On 9.0-RELEASE#0 and master sh(1) gobbles high bit at first | |>Confidential: no no no! | |>Severity: non-critical | |>Priority: low | |>Responsible: freebsd-bugs | |>Arrival-Date: Wed Aug 15 15:10:09 UTC 2012 | |>Release: 9.0-REALEASE, and git master branch | |>Description: | [.] | |If /bin/sh is the login shell, starting it won't allow input of | |german umlauts in ISO8859-15 locale with fonts plus well set up. | |Issue a set with arguments ($set +o, $set -o), and it'll work | |as expected. | [.] | |So it turns out the problem is the histedit() function. | |If it isn't called from within optschanged() then everything is fine. | [.] | |The problem occurs when 'el' must be initialized. If that actually | |happens (upon sh(1) startup), then it'll change handling of the high [.] | |The only solution i've found is to call histedit() from within main() | |again (or outsource the pure initialization code to histedit_init(), | |but anyway call it once from within main()). | [.] | | An update: i've compiled the shell again, linked against libedit | as of today (master branch, 493ac26f0cdccc, [Add mvts(4) driver | for internal thermal sensor.., 2012-08-18]), and the problem | persists. (I'm still using 9.0-RELEASE#0, just in case it's even Yet another update. I've #defined DEBUG_READ in libedit and actually found my problem. The reason why the german umlauts don't appear is that they actually result in "ed-unassigned" errors because of the input-to-command map. I'm using multi-platform multi-shell init scripts which i've just recently updated to be compatible to some pretty ancient Bourne-compatible shell, and now it turns out that the plain FreeBSD /bin/sh is classified as "NONE" type at all, so that no set command is used to configure shell behaviour upon startup. I didn't think about this before, hmm. Anyway, once the login shell starts, it's a vanilla shell, but with emacs mode enabled, or at least this is what the '$ set -o' says which then also turns over all the ED_UNASSIGNED to ED_INSERT commands. If nobody jumps into this here i'll try to figure out why, how and where that actually happens and fix it, maybe next week. Ciao, --steffen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5031399b.kUJVF%2BDXV14eaKTYNVaSqgGF>