🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

5 total messages Started by Stefan Stapelberg Fri, 01 Dec 1989 22:07
Schon wieder erase
#81
Author: Stefan Stapelberg
Date: Fri, 01 Dec 1989 22:07
23 lines
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
#82
Author: Bernard Sieloff
Date: Sat, 02 Dec 1989 15:44
29 lines
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
#83
Author: Joerg Lehners
Date: Mon, 04 Dec 1989 18:49
49 lines
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
#84
Author: Stefan Stapelberg
Date: Fri, 08 Dec 1989 12:43
41 lines
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
#85
Author: Michael Elbel
Date: Tue, 12 Dec 1989 09:11
42 lines
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