init.app/getty.app/login.app/gemsh.app

authors: Ulrich Kaiser (kaiser.do@noell.de)
         Holger Kleinschmidt (holgerkl@cs.tu-berlin.de)

state: freeware, no warranty, use at your own risk


introduction:
-------------
Mit	Hilfe von init.app	kann  man  sich	 unter	GEM	 einloggen und als z.B.
non-root arbeiten.	Die	 Environmentvariable  $HOME	 wird  entsprechend	des
gerade eingeloggten Benutzers gesetzt.


installation:
-------------
Experten knnen die folgenden Zeilen berspringen:

{\begin novice}
Zuerst sollte eine einigermaen	 UNIX-hnliche Verzeichnisstruktur angelegt
werden. Zu diesem Zweck kopieren Sie einfach die Verzeichnisse

bin
usr
etc
var
home

aus	dem	GEM-init-Archiv	 in	 das  Wurzelverzeichnis	 eines Laufwerkes Ihrer
Wahl (am besten eine Minixfs-Partition), nennen wir es einmal Laufwerk m:

SOLLTEN	DIESE  VERZEICHNISSE  UND  AUCH	 DARIN	BEFINDLICHE	 DATEIEN  SCHON
VORHANDEN SEIN,	 SO	 ERGNZEN  SIE	DIE	 NOCH  FEHLENDEN  VERZEICHNISSE	UND
DATEIEN STCK UM STCK, OHNE DATEIEN ZU BERSCHREIBEN.

Sodann mssen diese	 Verzeichnisse	auch  im  Laufwerk	u: erscheinen. Dies
geschieht durch Einfgen folgender Zeilen in MiNT.Cnf:

# m: is assumed to be a Minixfs partition
echo setting symbolic links...
sln m:\bin u:\bin
sln m:\usr u:\usr
sln m:\home u:\home
sln m:\etc u:\etc
sln m:\var u:\var

und	anschlieendem Booten.	Wenn  Sie  alles  richtig gemacht haben, sollte
also   z.B.	  die	 Datei	 ...irgendwo...\GEM-init\usr\sbin\init.app	 in
u:\usr\sbin\init.app liegen.
{\end novice}

KGMD User brauchen nur folgende Dateien kopieren:
{\begin poweruser}
Primitives Script zum "Ausschneiden":
---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
pwd
cd GEM-init # <- anpassen!
cd usr/sbin
pwd
cp -v * /usr/sbin
cd ../local/bin
cp -v * /usr/local/bin
cd ../../bin
pwd
cp -v *.app /usr/bin
cp -v login.rsc /usr/bin
cp -v *.ttp /usr/bin
cp -v *.gtp /usr/bin
cd ../etc
pwd
cp -v getty.app /usr/etc
cd ../../bin
pwd
cp -v gemsh.* /bin
cp -v loginsh /bin
echo messages window
cp -v messages /bin
echo make a copy of MiniWin and rename it to /bin/terminal.app
cd ../etc
pwd
cp -v ttytab.gem /etc
cp -v init.wav /etc
cp -v rc.gem /etc
cp -v motd /etc #if you like a new /etc/motd
cd ../home/root
pwd
cp -v *.wav $HOME
cp -v .gemrc $HOME
cd $HOME
pwd
mkdir Clipboard
---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---8<---
{\end poweruser}

Lieblingsdesktop  (natrlich  Thing:-)	 samt	zugehriger	  Dateien  nach
/usr/sbin kopieren.	Dort Kopie	oder  Link mit Namen "desktop.app" anlegen.
Alternativ kann	der	 vollstndige  Pfad	 des  Desktops in gemsh.rsc	(freier
String		"DESKTOP")		 eingetragen	   werden	   (Voreinstellung:
u:\usr\sbin\desktop.app). Alternativ kann  auch	 der  vollstndige Pfad	des
Desktops ~/.desktop eingetragen werden.

Eine korrekte /etc/passwd und /etc/group Datei mu vorhanden sein.

Sicherheitshalber sollte man init.app  immer  mit gesetztem	s-Bit (chmod +s
init.app) installieren, falls GEM nicht von der root gestartet wird. Dann:

a) SingleAES:
   init.app als GEM-AUTO-Start-Programm anmelden:
   #Z 01 U:\USR\SBIN\INIT.APP@ in NEWDESK.INF

   in MINT.CNF Eintrge fr INIT= und GEM= wegkommentieren
   im AUTO-Ordner keinesfalls MINT.PRG, sondern MINTNP.PRG aktivieren

b) AES 4.x:
   init.app mit nachfolgender Zeile in GEM.CNF als Shell anmelden:
   shell u:\usr\sbin\init.app

   NICHT ALS GEM AUTO START PROGRAMM ANMELDEN!   

   darauf achten, da in MINT.CNF in der Zeile mit GEM= der vollstndige
   Pfad zu AES 4.x steht; die Zeile mit INIT= wegkommentieren

c) Geneva 5.x:
   init.app mit nachfolgender Zeile in GEM.CNF als Shell anmelden:
   shell u:\usr\sbin\init.app

   NICHT ALS GEM AUTO START PROGRAMM ANMELDEN!   

   darauf achten, da in MINT.CNF in der Zeile mit INIT= der vollstndige
   Pfad zu Geneva 5.x steht; die Zeile mit GEM= wegkommentieren

d) N.AES:
   init.app mit nachfolgender Zeile in N_AES.CNF als Shell anmelden:
   shell u:\usr\sbin\init.app

   darauf achten, da in MINT.CNF in der Zeile mit GEM= der vollstndige
   Pfad zu N.AES steht; die Zeile mit INIT= wegkommentieren

e) XaAES:
   init.app mit folgender Zeile in XAAES.CNF starten:
   run u:\usr\sbin\init.app

f) oAESis:
   init.app mit	nachfolgender Zeile in OAESIS.CNF als Shell anmelden:
   shell u:\usr\sbin\init.app

g) MagiC: init.app mit nachfolgender Zeile in MAGX.INF als Shell anmelden:
   #_SHL u:\usr\sbin\init.app
   und   zwar noch vor  der   Zeile mit #_CTR   (Kontrollfeld-Eintrge)
   (allerdings bentigen Sie hier entweder   eine  MagiC-Version   fr den
   Einsatz unter MiNT bzw. es reicht u.U ein Desktop, der unter MagiC+MiNT
   Programme starten kann (z.B. Thing), oder eine MiNT-Version fr den
   Einsatz unter MagiC oder eine MagiC-Version, welche alle relevanten
   MiNT-Aufrufe beherrscht, oder ein passendes Patch-Programm...)

h) MiNA, sonstwas: wer wei hier Bescheid?

Fr	Fortgeschrittene: natrlich	kann  man  in  MINT.CNF	 auch  etwas in	die
Zeile mit INIT=	hineinschreiben.  Um  aber	ins	 GEM  und damit	GEM-init zu
gelangen, mu das "INIT="-Programm entweder	beendbar sein oder man kann	von
dort aus (ggf. mittels spezieller GEM-Start-Programme) AES hochfahren.

Fr	noch weiter	Fortgeschrittene (KGMD-) User,	deren Rechner ppig	mit	RAM
ausgestattet ist: selbstverstndlich  kann	die	 KGMD-Konfiguration, in	der
AES	4.x	in /etc/ttytab als "getty" fr die console eingetragen ist:
console "/usr/etc/execmtos"	st52 on	secure
beibehalten	werden.	Man	kehrt beim	Ausloggen  unter GEM-init aber nicht zu
(KGMD-)init, sondern nur zu	GEM-init.app  zurck  (es sei denn,	man	schafft
es, AES sauber zu beenden).

init.app  ist  zwingend	 auf  die	Datei  /etc/ttytab.gem	angewiesen.	 In
ttytab.gem	wird  festgelegt,  welches	Programm  fr  welche Schnittstelle
zustndig ist. Es sollte mindestens ein Eintrag fr die console existieren:

console "/usr/etc/getty.app console" vt52 on secure

Fr	die	console	 ist  also	/usr/etc/getty.app	zustndig,	fr	die	anderen
Schnittstellen z.B.	/usr/etc/getty aus der	KGMD. Der Parameter	vt52 sollte
- wenn alles korrekt abluft - in der Environmentvariable $TERM	erscheinen.
Es kann	 dort  auch	 etwas	anderes	 stehen,  z.B.	tt52  oder	vt100. Aber
eigentlich ist es Aufgabe des Terminalfensters,	$TERM selber auf einen Wert
mit	dem	es zurecht kommt zu	setzen.	 MiniWin scheint irgendwie tw, tw52	und
st52 zu setzen oder auszuwerten.

Falls noch nicht  vorhanden,  sollten  zwei	 zunchst  leere Dateien namens
/etc/utmp  und	/var/adm/wtmp  angelegt	 werden,  sonst	 funktionieren	die
UNIX-Programme who, ac und last nicht.

In	der	 Datei	/etc/hostname  sollten	Sie	 den  Kosenamen	 Ihres Rechners
hinterlegen.

Weiterhin sollte sich im  Verzeichnis  /bin	 eine  UNIX-Shell  mit Namen sh
befinden.

Hinweis: falls (unter  SingleAES)  das	Starten	 von sog. Overlays (Desktop
"auslagern"	o..) untersttzt werden soll,	mu	der	Desktop	unbedingt unter
seinem originalem Namen	vorhanden sein.	So mu	z.B. der Name von Ease 4.00
unbedingt EASE.PRG lauten und gro geschrieben sein.

Man	kann sich das Umbenennen  des  Desktops	in desktop.app oder	den	Eintrag
in gemsh.rsc auch sparen. In diesem	 Fall  erscheint dann ein Alert	und	man
kann ber " ffne... ^O " per Fileselektor den Desktop "von Hand" starten.


related files:
--------------
init.app, getty.app, login.app und	gemsh.app  greifen auf folgende	Dateien
zu:

/etc/passwd
/etc/group
/etc/hostname
/etc/utmp
/etc/shells                             geplant
/etc/desktops                           geplant
/etc/rc.gem   
/etc/motd    
/etc/ttytab.gem
/etc/init.{snd,au,svx,avr,iff,hsn,wav,voc,sam}
/var/adm/wtmp
/var/adm/lastlog                    
/var/spool/mail/*         
/dev/console
/dev/tty?                               gem /etc/ttytab.gem
/pipe/log                               geplant
/bin/sh
/bin/terminal.app                       nur unter AES 4.x
/bin/messages                           nur unter AES 4.x
/usr/etc/getty                          gem /etc/ttytab.gem
/usr/share/locale/<country>/RSC/*.rsc
/usr/local/bin/showaudio
~/.gemrc
~/.gemshrc                              geplant
~/.desktop        
~/login.{snd,au,svx,avr,iff,hsn,wav,voc,sam}
~/logout.{snd,au,svx,avr,iff,hsn,wav,voc,sam}

Nur zur Information: getty (nicht jedoch getty.app) greift auf folgende
Dateien zu:

/etc/gettytab
/usr/bin/login
/bin/sh


department of rights:
---------------------
Folgende Zugriffsrechte werden empfohlen:

file            owner group mode       comment
----------------------------------------------------------------------
/etc            root  root  drwxrwxr-x
/bin            root  root  drwxrwxr-x
   init.app     root  root  srwx--x--- (srwx--x--x bei beendbarem AES)
   init.rsc     root  root   rw-rw---- ( rw-rw-r-- bei beendbarem AES)
/etc/passwd     root  root   rw-r-----
/etc/group      root  root   rw-r-----
/etc/hostname   root  root   rw-r--r--
/etc/utmp       root  root   rw-rw-rw-
/etc/ttytab.gem root  root   rw-rw-r--
/var/adm/wtmp   root  root   rw-rw-rw-
/etc/rc.gem     root  root   rw-rw----
/etc/desktops   root  root   rw-rw-r--
/etc/shells     root  root   rw-rw-r--
  getty.app     root  root   rwx--x--x
  getty.rsc     root  root   rw-rw-r--
  login.app     root  root   rwx--x--x
  login.rsc     root  root   rw-rw-r--
  gemsh.app     root  root   rwx--x--x
  gemsh.rsc     root  root   rw-rw-r--
desktop.app     root  root   rwx--x--x
desktop.*       root  root   rw-rw-r--
~               user  user  drwx------
~/.gemrc        user  user   rw-------
~/$SCRAPDIR     user  user  drwx------


working:
--------
init.app startet  ber	getty.app  in  einer  Endlosschleife  immer	 wieder
login.app.	 login.app	 liest	 /etc/passwd   ein	 und   vergleicht	die
Dialogeingaben mit den Eintrgen  in  /etc/passwd. Nach	erfolgreichem login
wird $HOME gesetzt und gemsh.app gestartet.	gemsh.app startet dann zunchst
die	login shell, danach	den	 Desktop.  Nach	 Beenden des Desktops kann sich
der nchste User einloggen. Das ganze Prozedere graphisch dargestellt:

    root: init
           |
    root: spawn(WAIT,/bin/sh,/etc/rc.gem)
           |
   ------->|
  |        |
  | root: fork()----------
  |        |              |
  | root: wait()  root: exec(/usr/etc/getty.app) (->/etc/ttytab.gem)
  |        |              |
  | root: wait()  root: fork()----------
  |        |              |             |
  | root: wait()               root: exec(/usr/bin/login.app)
  |        |                            |
  | root: wait()                root: setsid()
  |        |                            |
  | root: wait()                root: setgid()
  |        |                            |
  | root: wait()                root: setuid()
  |        |                            |
  | root: wait()                user: fork()----------
  |        |                            |             |
  | root: wait()                             user: exec(/bin/gemsh.app)                  
  |        |                                          |
  | root: wait()                              user: spawn(WAIT,login shell,~/.gemrc) *)
  |        |                                          |
  | root: wait()                              user: spawn(WAIT,desktop)
  |        |                                          |
  |        |<-----------------------------------------
  |        |
   --------

*) unter AES 4.x lautet der Aufruf hier:
   
   user: shel_write(/bin/loginsh)
             |             |
             |     user: fork()----------
             |             |             |
             |                  user: exec(login shell)
             |                                   |
   user: shel_write(desktop)                     |
             |         |                         |


Zudem versucht init.app noch /bin/terminal.app /bin/messages zu starten.

             
environmentals:
---------------
$LINES    in MiNT.Cnf setzen (optional)
$COLUMNS  in MiNT.Cnf setzen (optional)
$ROWS     kann alternativ zu $LINES benutzt werden
$HOME     wird von init.app gem /etc/passwd gesetzt
$PATH     wird z.Zt. von gemsh.app auf feste Werte gesetzt, zuerst in
          UNIX-, dann in GEMDOS-Schreibweise:
          /bin:/usr/bin:/usr/local/bin:/usr/ucb:.
          C:\;.;u:\usr\sbin
          Das AES-$PATH-Environment wird nicht angetastet
$SHELL    wird von init.app gesetzt und enthlt den Pfad der login shell
$TOSRUN   in GEM.Cnf/N_AES.Cnf setzen, zur Zeit aber nicht genutzt
$UNIXMODE in MiNT.Cnf setzen, beeinflut unix2dos()
$CLIPBRD  wird von gemsh.app gesetzt,  enthlt _benutzerspezifischen_
          GEM-Clipboard-Pfad
$SCRAPDIR s. $CLIPBRD
$THINGDIR wird z.Zt. von gemsh.app auf $HOME gesetzt
$HOSTNAME wenn diese Environmentvariable existiert, wird /etc/hostname
          _nicht_ ausgewertet
$LOGNAME  enthlt den login Namen (ist bei uid-Dupletten sonst spter
          nicht mehr ermittelbar)
$FULLNAME enthlt den vollen Benutzernamen gem /etc/passwd (pw_gecos)
$TZ       in MiNT.Cnf setzen (optional)
$TERM     wird von init.app gem /etc/ttytab.gem gesetzt
$NLSPATH  in MiNT.Cnf setzen (optional)

Das	KGMD login setzt brigens auch noch	 eine Variable namens $USER	auf	den
gleichen Wert wie $LOGNAME.

Achtung:  wird	neben  MiNTnp  noch	  ein	Programm  zum  Setzen  des	GEM
Environments gebootet (Programme  wie  SETENV.PRG  o..),  kann	 es	je nach
Programm und physikalischer	Reihenfolge	 im	 AUTO  Ordner passieren, da in
MiNT.Cnf  gesetzte	Environmentvariablen  ignoriert	 werden.  Abhilfe:	auf
Environment	 Setter	 verzichten	 und   alle	  Variablen	 in	 MiNT.Cnf  bzw.
GEM.Cnf/N_AES.Cnf setzen.


tips & tricks:
--------------
Da unter SingleAES	init.app  im  NEWDESK.INF  angemeldet  werden mu, aber
unter MultiAES nicht in	 NEWDESK.INF  eingetragen  sein	 darf, und man aber
abwechselnd	SingleAES und MultiAES	booten	mchte,	 empfiehlt es sich,	mit
Hilfe eines	Dateimonitors in der  Programmdatei	 von  AES 4.x (GEM.SYS)	die
Zeichenkette  NEWDESK.INF	(kommt	 zweimal   vor)	  beispielsweise  durch
NEWDESK.CNF zu ersetzen.

Hat	zwar nichts	mit	init.app oder gemsh.app	zu tun,	aber trotzdem: wird	ein
GEM-Programm auf einem	minixfs	 gestartet	und	 kann  es sein Resourcefile
nicht finden, hilft	in den meisten Fllen, den Dateinamen des Resourcefiles
in	Grobuchstaben	umzubenennen.	Der	  Fehler  liegt	 am	 entsprechenden
GEM-Programm.

Gehrt auch	nicht hierher, aber:  wer  MiNTnp  und MiNTNet und diverse .XFS
unter SingleAES	laufen lassen  mchte,	mu	 unbedingt NoHog.Acc mitbooten.
SingleAES luft	mit	Vorliebe  im  Supervisormodus  und verhindert auf diese
Weise MiNT-Kontextwechsel. NoHog  schaltet	immer  wieder  in den Usermodus
zurck.

Auf	GEM-Applikationen,	die	 auf  GEMDOS-Partitions	 liegen, haben non-root
user i.d.R.	keinen Zugriff.	 Die  root	mu	 mit  Hilfe	 von chmod erst	die
Zugrifffsrechte	aller  betreffenden	 Directories,  Programme  und eventuell
Dateien	(sofern	man	nicht in  MiNT.Cnf	ein	 globales "exec	u:\bin\chmod -v
664	u:\g" aufgerufen hat, wobei	 g	eine GEMDOS-Partition ist) ndern. Dies
kann in MiNT.Cnf erfolgen, aber auch in /etc/rc.gem, z.B.:
echo unlocking user applications...
/bin/ln -sv /g/CAB /home/guest/cab
/bin/chmod -v 777 /home/guest/cab

Die	mupfel kommt auch mit  /  statt	 \	zurecht,  wenn man in /etc/profile,
welches von der mupfel eingelesen wird, schreibt (siehe auch set.1m):
echo /etc/profile...
set -S

Wen	das	Eselsohr  im  Login-Dialog	strt,	der	 mag  es per RCS verstecken
(HIDETREE-Flag setzen), jedoch keinesfalls lschen.

Es ist zur Zeit	nicht empfehlenswert, unter	AES	4.x	oder N.AES irgendwelche
Programme aus GEM.CNF  bzw.	 N_AES.CNF	per	 run-Befehl	zu starten.	Erstens
laufen solche Programme	immer mit  root-Rechten	 -	sofern AES von der root
gestartet wurde.  Zweitens	berleben  solche  Programme  den  ersten login
nicht. Siehe auch unter "problems".

Gehrt auch	wieder nicht hierher, aber doch	wichtig: ab	N.AES 1.1.0	gibt es
in N_AES.CNF die Option	numapps. Steht diese  auf einen	anderen	Wert als -1
meldet	MINWIN	"MINIWIN   requires	  MultiTOS."   Offenbar	 fragt	MINIWIN
global->ap_count == -1 statt global->ap_count > 1 ab:-(

Gehrt auch	wieder nicht hierher, aber	wenn  es unter N.AES bei Anwahl	der
Menzeile z.B. von CAT oder	Papyrus	zu einem Systemstillstand kommt, sollte
man schleunigst den Wert fr qsbchars in N_AES.CNF erhhen

Man	kann die bash auch in  /bin/sh	umbenennen	oder dahin linken. Die bash
erkennt	 dies  und	liest  dann	 als  login	 shell	($0	 beginnt  mit einem
Minuszeichen)  /etc/profile	 und  ~/.profile  ein.	Achtung:  diese	Scripts
mssen dann UNIX-Zeilenenden haben!


features:
---------
- Untersttzung der aktuellen AES-Sprache in den Fehleralerts, z.Zt.
  Englisch, Deutsch, Franzsisch, Niederlndisch, Schwedisch, Spanisch,
  Italienisch;
  es wird davon ausgegangen, da
  Franzsisch    der AES-Sprache 2 und
  Niederlndisch der AES-Sprache 7 entspricht

- die Lnge der Eingabemaske fr login und password kann per RCS
  vergrert werden, maximal bis 79 Zeichen; in utmp und wtmp werden
  jedoch aus Kompatibilittsgrnden	nur die ersten 7 Zeichen des
  Loginnamens abgelegt; vom password werden nur die ersten acht Zeichen zur
  Verschlsselung benutzt

- falls	/etc/rc.gem	existiert, wird	diese  Datei einmal	nach dem Booten	von
  /bin/sh ausgefhrt (/bin/sh ist nicht in diesem Paket enthalten)

- falls	~/.gemrc existiert,	 wird  diese  Datei	 mit  Hilfe	der	login shell
  ausgefhrt (nicht unter AES 4.x)

- Untersttzung von TOS2GEM unter SingleAES, dabei Untersttzung von $ROWS,
  $LINES und $COLUMNS (zuerst wird nach $LINES gesucht; wird $LINES nicht
  gefunden, wird $ROWS gesucht)

- in ~/.desktop kann der zu startende Desktop angegeben werden. Das Format
  dieser Datei lautet:  
  <TOSRUN_program>;<user_desktop>;<start_dir>
  Beispiel:
  /bin/gem/MINIWIN.APP;/usr/sbin/thing.app;u:\usr\sbin\
  /bin/gem/MINIWIN.APP;/usr/sbin/EASE.PRG;/usr/sbin/
  \bin\gem\toswin.app;\usr\sbin\gemini.app;\usr\sbin

- die Gre des Environments darf maximal 64 kB betragen

- die Tastatutshortcuts von gemsh.rsc knnen verndert werden; man mu
  jedoch dafr Sorge tragen, da der Scancode des Shortcuts auch in dem
  Objektbaum SCANCODE eingetragen ist

- unter einem MultiAES werden beim Ausloggen die Accessories vom Bildschirm
  gerumt


problems:
---------
- es ist mglich, da der Lieblingsdesktop keine (negativen	oder positiven)
Returncodes	zurckgibt,	falls  er  Probleme	 beim  Start hat (Resourcedatei
nicht gefunden,	etc.). GEMINI 1.A ist  z.B.	ein	solcher	Kandidat. In diesem
Fall gibt es leider	eine  Endlosschleife.  Abhilfe:	 den Autor des Desktops
mit Hilfe einer Geldspende zum Einbau von Returncodes berreden...

- in /etc/passwd wird  der	Pfad  zum  Homedirectory  normalerweise	mit	"/"
geschrieben, z.B. "/home/guest". Das  pat	aber den meisten GEM-Programmen
nicht. Diese erwarten in aller	Regel  einen mit "\" geschriebenen Pfad	zum
Homedirectory, meistens	 dann  auch	 noch  mit	Laufwerksangabe.  Zur  Zeit
wandelt	gemsh vor dem Start	des	Desktops alle  "/" in "\" um und setzt auch
noch "u:" vor den Pfad

- Accessories werden gestartet,	bevor  sich	 der erste User	einloggen kann.
Aus	diesem Grund werden	Accessories, die irgendwelche Dateien in $HOME oder
$PATH suchen, entweder diese Environmentvariablen gar nicht	vorfinden oder,
falls	sie	  auf	MiNT-Ebene	  oder	  in   GEM.CNF	 oder	mit	  einem
GEM-Environment-Setter	gesetzt	 wurden,  nicht	  unbedingt	 die  korrekten
Informationen enthalten. Es	gibt,  auer  bei AES 4.x mittels shel_write(),
auch keine Mglichkeit von init	 aus  ein Environment zu "vererben". Selbst
unter AES 4.x mten dann Accessories vor jedem	entsprechenden Dateizugriff
$PATH und $HOME	neu	einlesen,  da  sie	sich  ja  durch	das	Einloggen eines
anderen	Benutzers  gendert	 haben	knnten...	oder  aber	init killt beim
Ausloggen alle Accessories (appl_search() sollte da	behilflich sein), merkt
sich welche das waren und startet diese per AES 4.x-shel_write() neu

- unter	SingleAES  kann	 es	 passieren,	 da  frisch  nach	dem	Booten oder
Einloggen die Tastenkombination	^Q (i.A.  Beenden) keine Wirkung zeigt.	Der
Grund  ist	darin	zu	 suchen,   da	 dieses	 Kontrollzeichen  von  MiNT
interpretiert wird.	SingleAES  wird	 von  MiNTnp  mit  der	console	im sog.
cooked	mode  gestartet.  AES  4.x	liest  dagegen	seine  Tastendrcke	aus
/dev/AES_BIOS. Als Abhilfe wurde vorgeschlagen,	einfach	die	console	mittels
Fcntl()	in den sog.	raw	mode zu	schalten.  Das hat den Nachteil, da in	von
GEM	gestarteten	TOS/TTP-Programmen ^Q,	^S	usw.  nicht	mehr funktionieren.
Besser ist es, einfach	irgendwelche  anderen  Tasten,	z.B. ^W	zu drcken,
danach sollte ^Q wieder	erkannt	werden.	Weiterhin sollte man sich unbedingt
davor hten, direkt	nach  Start	 von  Thing	 ^C	 zu	 drcken,  um z.B. eine
Auswahl	ins	Klemmbrett zu kopieren.	Abhilfe: zuerst	^W drcken,	dann sollte
^C und ^V funktionieren

- unter	MTOS mu init.app  in  GEM.Cnf als Shell angemeldet	werden.	Dadurch
kann  bei  einem  entsprechenden  Aufruf  von  appl_search()  init.app	als
vermeintlicher	Desktop	 ermittelt	werden.	  init.app	kann  dann	unntze
SH_WDRAW - Meldungen  erhalten,	 die  es  an  den  richtigen, von gemsh.app
gestarteten Desktop per appl_write() weiterleiten mte

- ist 1stGuide	oder  vielleicht  auch	ein	 anderer  Dateiviewer auf *.GEM
angemeldet,	so fhrt ein Doppelklick  auf  /etc/rc.gem zu einem	Absturz, da
1stGuide nicht berprft, ob  es  sich	auch  wirklich	um ein GEM-Metafile
handelt. Abhilfe: entweder aufpassen  oder	/etc/rc.gem	lschen	oder in	der
Programmdatei init.app patchen oder	abwarten,  bis der Pfad	von	/etc/rc.gem
in init.rsc konfigurierbar ist

- whlt	man	unter N.AES	 einen	Applikationsmeneintrag	mit	gedrckem Alt +
Ctrl an, so	wird die Applikation gekillt.  Das gilt	auch, wenn ein non-root
user eingeloggt	ist. Er	kann ohne Weiteres den root-Proze init.app	killen.
Und SIG_KILL kann nicht abgefangen werden...


trouble shooting:
-----------------

Fehlermeldung              mgliche Ursache
---------------------------------------------------------------------------
Diese Anwendung kann das   login.app/login.rsc nicht gefunden
angegebene Objekt nicht    login shell nicht gefunden
finden.                    gemsh.app/gemsh.rsc nicht gefunden
                           init.app hat init.rsc nicht gefunden
                           init.app hat /etc/ttytab.gem nicht gefunden
                           gemsh.app hat /bin/loginsh nicht gefunden
                           gemsh.app hat den Desktop nicht gefunden

Unbekannter Fehler.        Thing hat seine Resourcedatei nicht gefunden

Durch Signal unterbrochen. Desktop ist abgestrzt
                           login shell wurde mit ^C abgebrochen
                           ein Terminal hat aufgelegt

Ungltige Funktionsnummer. kein MiNT kompatibles System

Zugriff verweigert.        login shell steht z.B. auf rw-rw-rw
                           Desktop steht z.B. auf --x--x---
                           HOME-Verzeichnis hat falsche Zugriffsrechte

Fehler.                    allgemeiner Fehler, z.B. steht desktop.app oder
                           das TOSRUN-Programm (unter AES 4.x per
                           shel_write() gestartet) auf rw-rw-rw statt
                           rwxrwx--x                              
                           unter AES 4.x ls guest eingeloggt und /bin steht
                           auf drwx------ oder /bin/sh auf rwx------

Der Speicherplatz reicht   kein Speicher fr Resourcedatei
fr diese Anwendung nicht. kein Speicher fr Environmentbuffer

Nicht ausfhrbar.          Datei enthlt keinen Programmcode - entspricht
                           dem berchtigten "TOS-Fehler #35"

Datei nicht gefunden.      siehe unter "Diese Anwendung kann das..."

Kein Verzeichnis.          in ~/.desktop wurde ein Startverzeichnis
                           angegeben, das nicht existiert


todo:
-----
- Meldungen an den syslogd schicken?
- Eintrag in /etc/utmp nach Ausloggen lschen?
- Mitzhlen der Sitzungen und ggf. Aufforderung zum Passwordwechsel
- login-Shell mit Eintrgen in /etc/shells vergleichen
- Ausgabe von /etc/motd auch unter single AES
- prfen, ob mail vorliegt (/var/spool/mail/<user>) auch unter single AES
- TOSRUN-Programm aus ~/.desktop auslesen
- restore_desk.app ffnet Accessories an ihrer letzten Position
- SH_WDRAW-Meldungen an Desktop weiterleiten?
- Datum im login-Dialog anzeigen
- auch GEM-Applikationen vor shel_write() zuvor in $PATH suchen?


thanksgiving:
-------------
Eric R. "MiNT" Smith fr sein grandioses Betriebssystem
Stephen "MINTOS" Usher fr sein MINTOS 1.4.1 und Beantwortung meiner Fragen
Holger "HKLib" Kleinschmidt fr seine wunderbare POSIX-Lib, seine Tips zu
               fork+exec, seine Erluterungen zu UNIX sessions und seine
               Bugreports und Bugfixes und, und, und...
Eric "fcrypt" Young fr seine DES-Routinen
Kay "MintNet" Rmer fr sein MiNTNet und seine Hinweise rund um MiNT und
               MiNTNet
Christer "oAESis" Gustavsson fr sein Versprechen, sich um die missing
               features von shel_write() zu kmmern
Thomas "TOS2GEM" Binder fr sein TOS2GEM, seine Kritik, Bugreports und
               geduldiges Beantworten meiner zahlreichen Fragen und
               natrlich ganz besonders fr die Weiterentwicklung von Thing
Dirk "POVRay" Klemmt fr seine TOS2GEM Library und fr die Einbindung von
               GEM-init in seine WWW-Seiten
Dirk "Chatwin" Haun fr einige wertvolle Hinweise zu MTOS
Arno "Thing" Welzel fr seinen tollen MiNT-aware Desktop
Jens "N.AES" Hiescher fr sein tolles AES
Alexander "Closure" Lorenz fr seine Hinweise zum AES-shutdown
Guido "xgemtext()" Flohr fr den Hinweis auf den su-Bug, fr seine Tests
               und Anregungen
Christian "qed" Felsch fr sein Versprechen, die MyDials an prop. AES-     
               Fonts anzupassen und fr qed, der unter N.AES mit prop. AES-               
               Fonts ganz gut luft; Dank auch fr seinen Hinweis zu
               CH_EXIT; und zuletzt auch Dank fr seine TOSWIN-Modifikation
Frank "HDPilot & HDPStack" Storm fr den Terminaltest mit Win95
Uwe "lps" Reder fr seine Erlaubnis lps (das leider nicht mp-safe ist)
               beilegen zu drfen
Gtz "GEMJing" Hoffart fr sein Bemhen um einen lps-Ersatz
