Thread View: dnet.comp.pcs
5 messages
5 total messages
Started by Stefan Stapelberg
Fri, 01 Dec 1989 22:07
Schon wieder erase
Author: Stefan Stapelberg
Date: Fri, 01 Dec 1989 22:07
Date: Fri, 01 Dec 1989 22:07
23 lines
1424 bytes
1424 bytes
Hi Leute, es war ja schon schwer, hinnehmen zu muessen, dass scheinbar der Tty-Treiber bei MUNIX V.3-3.1 das Zeichen ^H auch als erase-Zeichen akzeptiert, obwohl eigentlich DEL eingestellt ist. Aber dass dann beim Entwerten des ^H mit einem Backslash ebendieser Backslash zusaetzlich an das Programm uebergeben wird, das ist doch wohl ein einwandfreier Bug, oder nicht? Nachzuvollziehen mit: stty erase '^?'; cat -v und dann Eingabe von \^H. Ausgabe ist wieder \^H, sollte aber ^H sein. Wenn dann ^H als erase-Zeichen eingestellt ist, klappts dann richtig und damit duerfte die Ursache fuer den Bug schon gefunden sein. Da wir gerade dabei sind: Wenn man beim login den Benutzernamen mit dem kill-Zeichen '@' loescht, dann wird die Zeile tatsaechlich geloescht. warum klappt das nur beim login und nicht auch danach? Gruesse, Stefan
Re: Schon wieder erase
Author: Bernard Sieloff
Date: Sat, 02 Dec 1989 15:44
Date: Sat, 02 Dec 1989 15:44
29 lines
2248 bytes
2248 bytes
In article <579@shiva.systemware.de>, stefan@shiva.systemware.de (Stefan Stapelberg) writes:
>
> Hi Leute,
> [...]
> Da wir gerade dabei sind: Wenn man beim login den Benutzernamen mit dem
> kill-Zeichen '@' loescht, dann wird die Zeile tatsaechlich geloescht.
> warum klappt das nur beim login und nicht auch danach?
Das ist ein netter Uralt-Fehler in wohl fast allen Spielarten von UNIX.
Der Grund liegt einfach in der unterschiedlichen erase/kill-Behandlung
im getty (in den SYSV-Derivaten wird das wohl immer noch aehnlich heissen)
und dem eigentlichen (per execl nachgeschalteten) login.
Wer vom getty schon an den login weitergereicht wurde, hat dort dann kein
erase/kill mehr fuer den login/password-String mehr zur Verfuegung (oder
nur ein eingeschraenkt funktionierendes - schwankt wohl auch nach Ab-
stammung der vorhandenen UNIX-Version).
Abhilfe ist, sowohl den getty als auch den login etwas umzuschreiben.
Fuer 4.3BSD hat mich das eine Kaffeekannenzeiteinheit gekostet :-)
Setzt allerdings leider die Verfuegbarkeit der sources voraus.
Uebrigens sind in den Originalversionen von getty auch noch erase/kill
Fehlbehandlungen vorhanden: man versuche z.B. mal, sofort auf den login-
Prompt ein "@" einzugeben.
--
Bernard Sieloff | UUCP: ...!uunet!unido!sbsvax!bs
Universitaet des Saarlandes | CSNET: bs%sbsvax@ira.uka.de
FB 10 - Informatik (Dept. of CS) | ARPA: bs%sbsvax.uucp@uunet.UU.NET
Bau 36, Im Stadtwald 15 | ICBM: 49 15 20 N / 07 02 30 E
D-6600 Saarbruecken 11, W. Germany | Phone: +49 681 302 2434
X400: bs@sbsvax.informatik.uni-saarland.dbp.de
Re: Schon wieder erase
Author: Joerg Lehners
Date: Mon, 04 Dec 1989 18:49
Date: Mon, 04 Dec 1989 18:49
49 lines
2529 bytes
2529 bytes
Moin !
stefan@shiva.systemware.de (Stefan Stapelberg) writes:
>[...]
>es war ja schon schwer, hinnehmen zu muessen, dass scheinbar der
>Tty-Treiber bei MUNIX V.3-3.1 das Zeichen ^H auch als erase-Zeichen
>akzeptiert, obwohl eigentlich DEL eingestellt ist.
>Aber dass dann beim Entwerten des ^H mit einem Backslash ebendieser
>Backslash zusaetzlich an das Programm uebergeben wird, das ist doch
>wohl ein einwandfreier Bug, oder nicht?
>[...]
Aus den Sourcen von Munix V.2 laesst sich herauslesen, dass CTRL-H
als Spezialfall von irgendwas in den TTY-Treiber mit eingebaut wurde.
Es ist in der Function canon() im TTY-Treiber implementiert:
[...]
/* UH added \b */ } else if (c == tp->t_cc[VERASE] || c == '\b') {
[...]
(ich hoffe, das ich kein Copyright verletzt habe, weil ich diese
eine Zeile Kernel-Code gepostet habe).
Die CTRL-H Behandlung wird also immer durchgefuehrt, wenn der Canonical
Modus eingeschaltet ist.
Warum das so ist, weiss ich nicht genau. Moeglichweise haben die
Kernel Hacker bei PCS an Terminals gearbeitet, die nichtdeterministisch
DEL oder CTRL-H gesendet haben :-)
Ob dieser Hack auch noch in Munix V.3.x drin ist, weiss ich nicht genau.
Auf jeden Fall kann man unter V.3.1 sowohl mit CTRL-H als auch mit DEL
das letze Zeichen loeschen.
>Da wir gerade dabei sind: Wenn man beim login den Benutzernamen mit dem
>kill-Zeichen '@' loescht, dann wird die Zeile tatsaechlich geloescht.
>warum klappt das nur beim login und nicht auch danach?
Das Kill Zeichen ist laut stty CTRL-X. Jedenfalls, wenn ich mit
der /bin/sh arbeite. Eventuell haben getty und login eine unterschiedliche
Auffasssung vom Kill-Zeichen.
Bis denn
Joerg
--
/ UUCP: lehners@uniol | Joerg Lehners \
| ...!uunet!unido!uniol!lehners | Fachbereich 10 Informatik ARBI |
| BITNET: 066065 AT DOLUNI1 | Universitaet Oldenburg |
\ Inhouse: aragorn!joerg | D-2900 Oldenburg /
Re: Schon wieder erase
Author: Stefan Stapelberg
Date: Fri, 08 Dec 1989 12:43
Date: Fri, 08 Dec 1989 12:43
41 lines
2416 bytes
2416 bytes
In article <1401@uniol.UUCP> lehners@uniol.UUCP (Joerg Lehners) writes: >Die CTRL-H Behandlung wird also immer durchgefuehrt, wenn der Canonical >Modus eingeschaltet ist. >Warum das so ist, weiss ich nicht genau. Moeglichweise haben die >Kernel Hacker bei PCS an Terminals gearbeitet, die nichtdeterministisch >DEL oder CTRL-H gesendet haben :-) Bei den VT220 sendet die Erase-Taste einen DEL-Code, bei den Bitmap-Terminals kommt ein BS. Wahrscheinlich wollte PCS seinen Benutzern den hochkomplizierten stty-Aufruf ersparen. ;-) >Ob dieser Hack auch noch in Munix V.3.x drin ist, weiss ich nicht genau. Sicher. >Auf jeden Fall kann man unter V.3.1 sowohl mit CTRL-H als auch mit DEL >das letze Zeichen loeschen. Ausser in den Programmen, die icanon wegnehmen und nicht ebenfalls das BS direkt bedienen, sondern nach c_cc[VERASE] gucken, wie sich das auch gehoert normalerweise. >Das Kill Zeichen ist laut stty CTRL-X. Jedenfalls, wenn ich mit >der /bin/sh arbeite. Eventuell haben getty und login eine unterschiedliche >Auffasssung vom Kill-Zeichen. Probier mal aus: Beim login ist das eingestellte kill-Zeichen zwar ^X, aber es funktioniert auch @ (bzw. # fuer erase). @ und # sind die Standardzeichen fuer kill und erase. Wie auch Bernard in seinem Artikel geschrieben hat, sind die beim getty hardverdrahtet. Das login-Programm, das von getty gestartet wird, kennt diese Zeichen schon nicht mehr. Warum mich das ganze eigentlich nervt, ist die Tatsache, dass Treiber- einstellungen, die ich am Bitmap vornehme, nach dem Start von X11 nicht mehr gelten. Ich hatte versucht, das EOF-Zeichen auf ^D und das erase- Zeichen auf BS umzustellen. Nach dem Start von X11 bekam ich wieder ^Z fuer EOF bzw. DEL fuer erase. :-( Tips hierzu?? Gruesse, Stefan
Re: Schon wieder erase
Author: Michael Elbel
Date: Tue, 12 Dec 1989 09:11
Date: Tue, 12 Dec 1989 09:11
42 lines
2171 bytes
2171 bytes
In article <581@shiva.systemware.de> stefan@shiva.systemware.de (Stefan Stapelberg) writes: Warum mich das ganze eigentlich nervt, ist die Tatsache, dass Treiber- einstellungen, die ich am Bitmap vornehme, nach dem Start von X11 nicht mehr gelten. Ich hatte versucht, das EOF-Zeichen auf ^D und das erase- Zeichen auf BS umzustellen. Nach dem Start von X11 bekam ich wieder ^Z fuer EOF bzw. DEL fuer erase. :-( Tips hierzu?? Hallo, Ich hatte das gleiche Problem (ja, auch hier gibt's Leute, die mit dem ^Z nicht gluecklich werden). Wenn man eine Shell hat, die beim Start ein bestimmtes script ausfuehrt (.cshrc oder so) kann man da ein 'stty' einbauen. Das ist allerdings nicht besonders elegant, da das stty dann auch bei jeder sub-shell mit durchkommt, emacs mag das z.B. nicht so gern. 'Ne einfache Loesung ist, die xterms als Login-shells aufzurufen: xterm -ls <was sonst noch so kommt> Damit jetzt aber nicht auch noch die sonstigen Einstellungen, die ich beim Einloggen so mache immer wieder kommen, schaut mein .profile ungefaehr so aus: if [ -z "$ALREADY_LOGGED_IN" ] ; then . .login # Pfad setzen, globale Variable definieren u.s.w. ALREADY_LOGGED_IN="aber sicher" ; export ALREADY_LOGGED_IN stty eof '^d' swtch '^z' erase '^h' intr '^c' TTY_SETS=`stty -g` ; export TTY_SETS else stty $TTY_SETS fi Ciao, Michael -- Michael (X) Elbel - me@dude.PCS.COM for the World, me@dude.PCS.DE for Europe
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads