#!/bin/ash

# Auswerten (vor ggf. Loeschen) des alten Systems nach config-Infos
# Wird im neuen System fuer Textmodus, KDE, lilo/kernel verwendet
# Kann ggf mehrfach aufgerufen werden, am Anfang mit der Partition die als bootbar * gekennzeichnet ist
# (und spaeter evtl. geloescht wird), dann ggf. nochmal mit einer vorherigen SYS-Installierung um deren Werte zu benutzen
# LANG0, KBD0 sind die Namen von Sprache / Tastatur in KDE, werden , falls im alten System vhd, direkt ins neue KDE uebernommen

# OLDSYS0 vor ggf. loeschen, OLDSYS nach loeschen der Partitionen dann ggf nicht mehr da           
echo " Vor ggf Loeschen von Partitionen, Auswerten vom alten System" $OLDSYS 

read OLDSYS KBD KBD0 LANG LANG0 USER00 USER0 CHAP1 CHAP2 PAP1 PAP2 REST < userconf    # fuer alle vor erstem Aufruf was vorgeben 
read FESTPLATTEN < festplatten

# OLDSYS=-

OBSYSTEM=0        # Kriterium:  falls weder /root noch /Windows vorhanden, kein brauchbares System .

# Primaer:  System mit * in Part.Tafel  
fdisk -l  > scr  ; grep -v 'Disk' scr  > scr0    ; grep '/dev/' scr0  > scr    ;  grep '*' scr  > scr0                
if test $? -eq 0 ; then read OLDSYS REST < scr0   ; fi ;     # Partition mit boot -Label  
echo "alte boot-Partition : " $OLDSYS  
OLDSYS0=${OLDSYS#/dev/}  ; mkdir -p /$OLDSYS0 ; umount /$OLDSYS0 ; mount /dev/$OLDSYS0 /$OLDSYS0       # /dev/OLDSYS0 = OLDSYS 
if test -d /$OLDSYS0/root ; then OBSYSTEM=1 ; fi ; if test -d /$OLDSYS0/Windows ; then OBSYSTEM=1 ; fi ;
if test $OBSYSTEM = 0 ; then OLDSYS=- ; fi ;
#  hilfsweise wird erste Partition genommen
#if test $OLDSYS = - ; then read OLDSYS REST < scr  ; if test $? -eq 0 ; then OLDSYS=$OLDSYS  ; else  OLDSYS=- ; OLDSYSNR=0 ; fi ;fi ;     # Partition mit boot -Label  
#echo "2 OLDSYS : " $OLDSYS  $LOG 

for I0 in $FESTPLATTEN ; do         # POST-Inkrement:  vorgegebenes zuerst testen, falls erfolglos dann diese.  
for J0 in 1 2 3 4 5 ; do
if test $OLDSYS = - ; then         # Falls die jetzt zu testende Partition da ist
OLDSYS=$I0$J0     
OLDSYS0=${OLDSYS#/dev/}  ; mkdir -p /$OLDSYS0 ; umount /$OLDSYS0 ; mount /dev/$OLDSYS0 /$OLDSYS0       # /dev/OLDSYS0 = OLDSYS 
if test -d /$OLDSYS0/root ; then OBSYSTEM=1 ; fi ;    if test -d /$OLDSYS0/Windows ; then OBSYSTEM=1 ; fi ;
if test $OBSYSTEM = 0 ; then OLDSYS=- ; fi ;
fi ;    # OLDSYS -ne -
done ; done 

echo " ###  gefunden: OLDSYS: " $OLDSYS 




grep "Language=" /$OLDSYS0/root/.kde/share/config/kdeglobals > scr  ; IERR=$? 
if test $IERR = 0 ; then read LANG0 REST < scr   ; IERR=$? ; fi ;
if test $IERR = 0 ; then echo "Sprache gemaess KDE : " $LANG0 ;  LANG=${LANG0#Language=} ; fi ;
echo "Sprache : " $LANG "Sprache von altem KDE : " $LANG0  

ls -1 /$OLDSYS0/Windows/Help/Help > scr  ; IERR=$?                   # WiVi zBsp Ordner ../fr-FR 
echo "scr: " ; cat scr 
# cp -f scr scr0 ; if test $IERR = 0 ; then grep "/" scr0 > scr   ; IERR=$? ; fi ;   Bei ash haben Ordner hinten wohl kein / ...
# echo "scr: " ; cat scr 
if test $IERR = 0 ; then read LANG0 REST < scr   ; IERR=$? ; fi ;
echo "2 LANG0: " $LANG0  
if test $IERR = 0 ; then LANG=${LANG0%%-*} ; LANG0="Language="$LANG ; fi ;
echo "LANG : " $LANG $LANG0  

# In WiXP sind configs in /windows/setuplog.txt und /windows/system32/$winnt$.inf 
# Bsp.:  /windows/system32/$winnt$.inf  :   Language=XXXX , TimeZone=YYY
# Bsp.: /windows/setuplog.txt : C:\WINDOWS\system32\fr-fr\mstsc.exe.mui.  mstscax.dll.mui.  aaclient.dll.mui.
#        dgl.      C:\Program Files\Internet Explorer\fr-fr\iexplore.exe.mui.
find  /$OLDSYS0/windows/system32  mstsc.exe.mui  | grep "mstsc.exe.mui" > scr  ; IERR=$?   
if test $IERR = 0 ; then read LANG0 REST < scr   ; IERR=$? ; fi ;
echo "4 LANG0: " $LANG0  
if test $IERR = 0 ; then LANG0=${LANG0#*/windows/system32/} ; echo "41 LANG0: " $LANG0 ; LANG0=${LANG0%%/mstsc.exe.mui*} ; echo "42 LANG0: " $LANG0 ; fi ;                # kein \ vor }
#if test $IERR != 0 ; then  
#grep "mstsc.exe.mui" scr0 > scr   ; IERR=$?
#cat scr
#grep -o "mstsc.exe.mui" scr0 > scr   ; IERR=$?
#cat scr
#if test $IERR = 0 ; then read LANG0 REST < scr   ; IERR=$? ; fi ;
#echo "5 LANG0: " $LANG0  
#if test $IERR = 0 ; then LANG0=${LANG0##*system32/} ; echo "43 LANG0: " $LANG0 ; LANG0=${LANG0%%/mstsc.exe.mui*} ; echo "41 LANG0: " $LANG0 ; fi ;
#fi ;
if test $IERR = 0 ; then LANG=${LANG0%%-*} ; LANG0="Language="$LANG ; fi ;
echo "Sprache LANG : " $LANG " Sprache fuer KDE verwendet LANG0 : " $LANG0  


grep "LayoutList=" /$OLDSYS0/root/.kde/share/config/kxkbrc > scr   ; IERR=$? 
IERRLOADKEYS=1
if test $IERR = 0 ; then read KBD0 REST < scr  ; IERR=$? ; fi ; 
if test $IERR = 0 ; then 
if test $KBD0 = LayoutList=br_abnt2 ; then KBD0="LayoutList=br(abnt2)"  ; fi ;
echo "Tastatur gemaess KDE : "  $KBD0 ;  KBD=${KBD0#LayoutList=} 
echo $KBD " " > scr ; sed 's/)/ /g' scr > scr0 ; sed 's/(/-/g' scr0 > scr ; sed 's/_/-/g' scr > scr0 ; sed 's/(/-/g' scr0 > scr 
read KBD REST < scr    # br(abnt2) --> br-abnt2 
echo "Tastatur hoffentlich gut fuer loadkeys  KBD : " $KBD
loadkeys $KBD  ; IERRLOADKEYS=$? ; echo "Fehlermeldung von loadkeys" $KBD   " IERRLOADKEYS : " $IERRLOADKEYS
if test $IERRLOADKEYS != 0 ; then
sed 's/-/ /g' scr > scr0 ; read KBD REST < scr0 ; echo " Suchen nach: " $KBD " in kbd-Liste"
ls -1R /usr/share/kbd/keymaps/* | grep ^$KBD | grep -v defkeymap > scr 
echo " aehnliche Dateien in der kbd-Liste, die erste wird genommen :" ; cat scr
read KBD REST < scr 
loadkeys $KBD  ; IERRLOADKEYS=$? ; echo "Fehlermeldung von loadkeys" $KBD   " IERRLOADKEYS : " $IERRLOADKEYS
fi ; fi ;
# loadkeys kann auch mit default gehen, soll dann aber gemaess Sprache gewaehlt werden, ebenso wie wenn loadkeys nicht geht
if test $KBD0 = - ; then  if test $LANG0 != - ; then  KBD0="LayoutList=$LANG" ; KBD=$LANG ; fi ; fi ;  # kbd=lang falls lang vorgegeben aber kbd nicht 
echo "Tastatur KBD : " $KBD " Tastatur fuer KDE verwendet KBD0 : "  $KBD0  

IERR=-1 ; rm -f scr   
grep ":500:100:" /$OLDSYS0/etc/passwd >> scr   ; IERR0=$? ; if test $IERR0 = 0 ; then IERR=0 ; fi ; 
grep ":501:100:" /$OLDSYS0/etc/passwd >> scr   ; IERR0=$? ; if test $IERR0 = 0 ; then IERR=0 ; fi ; 
grep ":500:" /$OLDSYS0/etc/passwd >> scr   ; IERR0=$? ; if test $IERR0 = 0 ; then IERR=0 ; fi ; 
grep ":501:" /$OLDSYS0/etc/passwd >> scr   ; IERR0=$? ; if test $IERR0 = 0 ; then IERR=0 ; fi ; 
echo "Kandidaten fuer Benutzer: " ; cat scr 
# Kandidaten fuer normale Benutzer sind 500, 501, erst Gruppe 100=user, hilfsweise irgendeine Gruppe
if test $IERR = 0 ; then read USER0 REST < scr   ; IERR=$? ; fi ; 
if test $IERR = 0 ; then USER00=${USER0%%:*} ; fi ;
if test $IERR != 0 ; then USER0=- ; USER00=- ; fi ; 

grep -v "#" /$OLDSYS0/etc/ppp/chap-secrets > scr ; IERR=$? ; if test $IERR = 0 ; then 
sed 's/*/:/g' scr > scr0  ;  read CHAP1 UNW CHAP2 REST < scr0  ; IERR=$? ; fi ;
#echo "gelesene CHAP -Zeile: " ; cat scr0 
if test $IERR != 0 ; then CHAP1=- ; CHAP2=- ; fi ;  if test $CHAP1 = ':' ; then CHAP1=- ; CHAP2=- ; fi ;
grep -v "#" /$OLDSYS0/etc/ppp/pap-secrets > scr ; IERR=$? ; if test $IERR = 0 ; then 
sed 's/*/:/g' scr > scr0  ; read PAP1 UNW PAP2 REST < scr0 ; IERR=$? ; fi ;
#echo "gelesene PAP -Zeile: " ; cat scr0 
if test $IERR != 0 ; then PAP1=- ; PAP2=- ; fi ;  if test $PAP1 = ':' ; then PAP1=- ; PAP2=- ; fi ;

# Dateien die vom alten System kopiert werden sollen
mkdir -p tmp/oldconf
cp /$OLDSYS0/etc/rc.d/rc.inet1.conf  tmp/oldconf/rc.inet1.conf
cp /$OLDSYS0/etc/rc.d/rc.wireless.conf  tmp/oldconf/rc.wireless.conf


umount /$OLDSYS    # oder OLDSYS0 

echo " === Gefundene Konfiguration des alten Systemes ==="  
echo " Keyboard: " $KBD0 " , Sprache: " $LANG0 " , Benutzer: " $USER00   
echo " Internet:  CHAP: " $CHAP1 " * " $CHAP2 ; echo " Internet:  PAP: " $PAP1 " * " $PAP2   
echo $OLDSYS $KBD $KBD0 $LANG $LANG0 $USER00 $USER0 $CHAP1 $CHAP2 $PAP1 $PAP2 
echo $OLDSYS $KBD $KBD0 $LANG $LANG0 $USER00 $USER0 $CHAP1 $CHAP2 $PAP1 $PAP2 > userconf 






# Falls fuer LANG0 , KBD0 nichts vorgegeben also - , werden die Werte vom gepackten SYS unveraendert gelassen,
# falls nachfolgend was vorgegeben, werden diese defaults verwendet 
if test $KBD0 = - ; then KBD0="LayoutList=br(abnt2)" ; KBD="br-abnt2" ; fi ;
if test $LANG0 = - ; then LANG0="Language=pt_BR" ; LANG="pt_BR" ; fi ;
CHAP01="<nome-do-acesso-dado-pela-providora/Internet-Name-gegeben-vom-Provider>" ; PAP01=$CHAP01  
CHAP02="<mot-de-pass-dado-pela-providora/Internet-Passwort-gegeben-vom-Provider>"  ; PAP02=$CHAP02 
if test $CHAP1 = - ; then CHAP1=$CHAP01 ;  CHAP2=$CHAP02 ; fi ; 
if test $PAP1 = - ; then PAP1=$PAP01 ;  PAP2=$PAP02 ; fi ; 

echo " === Angenommene Konfiguration des alten Systemes ==="  
echo " Keyboard: " $KBD0 " , Sprache: " $LANG0 " , Benutzer: " $USER00   
echo " Internet:  CHAP: " $CHAP1 " * " $CHAP2 ; echo " Internet:  PAP: " $PAP1 " * " $PAP2   
echo $OLDSYS $KBD $KBD0 $LANG $LANG0 $USER00 $USER0 $CHAP1 $CHAP2 $PAP1 $PAP2 
echo $OLDSYS $KBD $KBD0 $LANG $LANG0 $USER00 $USER0 $CHAP1 $CHAP2 $PAP1 $PAP2 > userconf 


exit 

