Skip site navigation (1)Skip section navigation (2)
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>