bin/170651: On 9.0-RELEASE#0 and master sh(1) gobbles high bit
at first
Steffen "Daode" Nurpmeso
sdaoden at gmail.com
Sun Aug 19 19:08:25 UTC 2012
| |>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
More information about the freebsd-bugs
mailing list