mktemp; Tabs entfernt; Env-var $MUDLIB persistent

Kleinere Schoenheitsoperationen:
- Temporaere Dateien werden jetzt via mktemp erstellt
- Tabs wurden durch vier Spaces ersetzt
- bei der Umgebungsvariable $MUDLIB wird vorher geprueft, ob diese
  bereits existiert und nur bei Nicht-Existenz durch ../mudlib ersetzt.

Change-Id: I38b7c1104de6d59f7f1b1380b1082e1cb5cdc958
diff --git a/check b/check
index 8af3bf3..9869965 100755
--- a/check
+++ b/check
@@ -12,7 +12,9 @@
 HEADERFILES="${CHECKERHOME}/HEADERFILES"
 #export LPCFILES="${HEADERFILES} ${CODEFILES}"
 LPCFILES="${CHECKERHOME}/LPCFILES"
-MUDLIB="../mudlib"
+# wenn $MUDLIB bereits als Umgebungsvariable existiert, muss man das nicht
+# ueberschreiben
+[[-z $MUDLIB]] && MUDLIB="../mudlib"
 LOGS="${CHECKERHOME}/logs"
 
 LEVEL1="change_required"
@@ -20,6 +22,9 @@
 LEVEL5="please_check"
 LEVEL10="cosmetics"
 
+CHECKTMP=$(mktemp --suffix=lpccheck) || exit
+CHECKTMP2=$(mktemp --suffix=lpccheck) || exit
+
 echo -ne "LPC-Source Checker V0.3 (2008-01-09)\n\n"
 
 usage() {
@@ -30,36 +35,36 @@
 # Parameter pruefen, ansonsten usage ausgeben
 if [ -z ${1} ] || [ -z ${2} ]
 then
-	usage
+    usage
 fi
 
 # gucken ob das Logverzeichnis da ist, wenn nein, dann anlegen
 if [ ! -d ${LOGS} ]
 then
-	mkdir -p ${LOGS}
+    mkdir -p ${LOGS}
 fi
 
 # rudimentaerer check ob die Mudlib da liegt, wo ${MUDLIB} hinzeigt
 if [ ! -d ${MUDLIB} ]
 then
-	echo -ne "No mudlib found in ${MUDLIB}\n"
-	exit
+    echo -ne "No mudlib found in ${MUDLIB}\n"
+    exit
 fi
 
 # alten Kram entsorgen
 if [ -f ${CODEFILES} ]
 then
-	rm ${CODEFILES}
+    rm ${CODEFILES}
 fi
 
 if [ -f ${HEADERFILES} ]
 then
-	rm ${HEADERFILES}
+    rm ${HEADERFILES}
 fi
 
 if [ -f ${LPCFILES} ]
 then
-	rm ${LPCFILES}
+    rm ${LPCFILES}
 fi
 
 echo -ne "Checking the MorgenGrauen Mudlib in ${MUDLIB}\n"
@@ -85,139 +90,136 @@
 echo -ne "\n\nPruefe auf Umlaute...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn '[üöäÜÖÄß]' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn '[üöäÜÖÄß]' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # lambda()
 echo -ne "\n\nPruefe auf lambda()...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn 'lambda(' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn 'lambda(' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # Pfade in /players/
 echo -ne "\n\nPruefe auf Pfade in /players/...\n" | tee -a ${LOGS}/${2}.${LEVEL1} 
 while read line
 do
-	grep -Hn '/players/' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1} 
+    grep -Hn '/players/' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1} 
 done < ${LPCFILES}
 
 # fehlende #pragma strong_types/strict_types
 echo -ne "\n\nFiles ohne #pragma strong_types oder strict_types...\n" | tee -a ${LOGS}/${2}.${LEVEL1} 
 while read line
 do
-	grep -L '#pragma.\(strong\|strict\)_types' $line | sort \
-		>> ${LOGS}/${2}.${LEVEL1} 
+    grep -L '#pragma.\(strong\|strict\)_types' $line | sort \
+        >> ${LOGS}/${2}.${LEVEL1} 
 done < ${CODEFILES}
 
 # direkte Verwendung von do_damage()
 echo -ne "\n\nPruefe auf direkte Verwendung von do_damage()...\n" |\
-	     tee -a ${LOGS}/${2}.${LEVEL1}
+         tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn 'do_damage(' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn 'do_damage(' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # Unerwuenschte oder obsolete lfuns
 echo -ne "\n\nPruefe auf unerwuenschte oder obsolete lfuns...\n" |\
-	tee -a ${LOGS}/${2}.${LEVEL1}
+    tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn -f ${CHECKERLIB}/bad_lfun.list $line >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn -f ${CHECKERLIB}/bad_lfun.list $line >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # Unerwuenschte oder obsolete efuns
 echo -ne "\n\nPruefe auf unerwuenschte oder obsolete efuns...\n" |\
-	tee -a ${LOGS}/${2}.${LEVEL1}
+    tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn -f ${CHECKERLIB}/bad_efun.list $line >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn -f ${CHECKERLIB}/bad_efun.list $line >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # Unerwuenschte oder obsolete Properties
 echo -ne "\n\nPruefe auf unerwuenschte oder obsolete Properties...\n" |\
-	tee -a ${LOGS}/${2}.${LEVEL1}
+    tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn -f ${CHECKERLIB}/bad_prop.list $line >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn -f ${CHECKERLIB}/bad_prop.list $line >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # Unerwuenschte Events
 echo -ne "\n\nPruefe auf unerwuenschte Eventnamen...\n" | tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn -f ${CHECKERLIB}/bad_events.list $line >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn -f ${CHECKERLIB}/bad_events.list $line >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # Keine clones von /std/thing
 echo -ne "\n\nPruefe auf Clones von /std/thing...\n" |\
-	     tee -a ${LOGS}/${2}.${LEVEL1}
+         tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn 'clone_object(.*/std/thing.*)' $line | cut -d : -f 1-2 \
-	     >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn 'clone_object(.*/std/thing.*)' $line | cut -d : -f 1-2 \
+         >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # ueberschriebenes move()
 echo -ne "\n\nPruefe auf ueberschriebenes move() (deprecated)...\n" |\
-	    tee -a ${LOGS}/${2}.${LEVEL1}
+        tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn 'int.*move(.*mixed.*int.*)' $line | cut -d : -f 1-2 \
-	     >> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn 'int.*move(.*mixed.*int.*)' $line | cut -d : -f 1-2 \
+         >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # wird geerbtes PreventMove gerufen?
 echo -ne "\n\nUeberschriebenes PreventMove() ohne geerbetes zu rufen...\n" |\
-	     tee -a ${LOGS}/${2}.${LEVEL1}
+         tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep 'PreventMove(.*object.*object.*int.*)' $line > ${CHECKERHOME}/check.tmp
-	grep -L '::PreventMove(' $line > ${CHECKERHOME}/check.tmp2
+    grep 'PreventMove(.*object.*object.*int.*)' $line > $CHECKTMP
+    grep -L '::PreventMove(' $line > $CHECKTMP2
 done  < ${LPCFILES}
 # nur Zeilen ausgeben, die nicht im 2. File vorkommen
-grep -v -f ${CHECKERHOME}/check.tmp2 ${CHECKERHOME}/check.tmp | \
-	tee -a ${LOGS}/${2}.${LEVEL1}
-rm ${CHECKERHOME}/check.tmp*
+grep -v -f $CHECKTMP2 $CHECKTMP | \
+    tee -a ${LOGS}/${2}.${LEVEL1}
 
 echo -ne "\n\nUeberschriebenes init() ohne geerbtes zu rufen...\n" |\
-	     tee -a ${LOGS}/${2}.${LEVEL1}
+         tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep 'init(\(object.*\)\?)' $line > ${CHECKERHOME}/check.tmp
-	grep -L '::init(' $line > ${CHECKERHOME}/check.tmp2
+    grep 'init(\(object.*\)\?)' $line > $CHECKTMP
+    grep -L '::init(' $line > $CHECKTMP2
 done < ${LPCFILES}
-grep -v -f ${CHECKERHOME}/check.tmp2 ${CHECKERHOME}/check.tmp \
-	>> ${LOGS}/${2}.${LEVEL1}
-rm ${CHECKERHOME}/check.tmp*
+grep -v -f $CHECKTMP2 $CHECKTMP \
+    >> ${LOGS}/${2}.${LEVEL1}
 
 echo -ne "\n\nUeberschriebenes NotifyMove() ohne geerbetes zu rufen...\n" |\
-	     tee -a ${LOGS}/${2}.${LEVEL1}
+         tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep 'NotifyMove(.*object.*object.*int.*)' $line > ${CHECKERHOME}/check.tmp
-	grep -L '::NotifyMove(' $line > ${CHECKERHOME}/check.tmp2
+    grep 'NotifyMove(.*object.*object.*int.*)' $line > $CHECKTMP
+    grep -L '::NotifyMove(' $line > $CHECKTMP2
 done < ${LPCFILES}
-grep -v -f ${CHECKERHOME}/check.tmp2 ${CHECKERHOME}/check.tmp \
-	>> ${LOGS}/${2}.${LEVEL1}
-rm ${CHECKERHOME}/check.tmp*
+grep -v -f $CHECKTMP2 $CHECKTMP \
+    >> ${LOGS}/${2}.${LEVEL1}
 
 # call_other(x, "???") ist obsolet
 echo -ne "\n\nPruefe auf call_other(x, "???") (obsolet)...\n" |\
-	tee -a ${LOGS}/${2}.${LEVEL1}
+    tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn 'call_other(.*???.*)' $line | cut -d : -f 1-2 \
-	>> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn 'call_other(.*???.*)' $line | cut -d : -f 1-2 \
+    >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # Alte Syntax der Inline-Closures
 echo -ne "\n\nPruefe auf obsolete Inline-Closures ( (: :) )...\n" | \
-	     tee -a ${LOGS}/${2}.${LEVEL1}
+         tee -a ${LOGS}/${2}.${LEVEL1}
 while read line
 do
-	grep -Hn '(: ' $line | cut -d : -f 1-2 \
-			>> ${LOGS}/${2}.${LEVEL1}
+    grep -Hn '(: ' $line | cut -d : -f 1-2 \
+            >> ${LOGS}/${2}.${LEVEL1}
 done < ${LPCFILES}
 
 # LEVEL 2 CHECKS
@@ -225,14 +227,14 @@
 echo -ne "\n\nPruefe auf Tabulatoren...\n" | tee -a ${LOGS}/${2}.${LEVEL2}
 while read line
 do
-	grep -Hn $'\t' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
+    grep -Hn $'\t' $line | cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
 done < ${LPCFILES}
 
 # Zeilen > 78 Zeichen
 echo -ne "\n\nPruefe auf Zeilen > 78 Zeichen...\n" | tee -a ${LOGS}/${2}.${LEVEL2}
 while read line
 do
-	grep -Hn '.\{79,\}' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
+    grep -Hn '.\{79,\}' $line| cut -d : -f 1-2 >> ${LOGS}/${2}.${LEVEL2}
 done < ${LPCFILES}
 
 # LEVEL 5 CHECKS
@@ -240,16 +242,16 @@
 echo -ne "\n\nHeader (*.h) mit #pragmas...\n" | tee -a ${LOGS}/${2}.${LEVEL5}
 while read line
 do
-	grep -l '#pragma' $line >> ${LOGS}/${2}.${LEVEL5}
+    grep -l '#pragma' $line >> ${LOGS}/${2}.${LEVEL5}
 done < ${HEADERFILES}
 
 # efuns, Verwendung beachten
 echo -ne "\n\nPruefe auf efuns, deren Verwendung beobachtet werden sollte...\n" |\
-	    tee -a ${LOGS}/${2}.${LEVEL5}
+        tee -a ${LOGS}/${2}.${LEVEL5}
 while read line
 do
-	grep -Hn -f ${CHECKERLIB}/warn_efun.list $line \
-	>> ${LOGS}/${2}.${LEVEL5}
+    grep -Hn -f ${CHECKERLIB}/warn_efun.list $line \
+    >> ${LOGS}/${2}.${LEVEL5}
 done < ${LPCFILES}
 
 # Properties, Verwendung beachten
@@ -257,30 +259,34 @@
 sollte...\n" | tee -a ${LOGS}/${2}.${LEVEL5}
 while read line
 do
-	grep -EHn -f ${CHECKERLIB}/warn_prop.list $line \
-	>> ${LOGS}/${2}.${LEVEL5}
+    grep -EHn -f ${CHECKERLIB}/warn_prop.list $line \
+    >> ${LOGS}/${2}.${LEVEL5}
 done < ${LPCFILES}
-	
+    
 # Pruefung auf static -> protected
 echo -ne "\n\nPruefe auf 'static' (-> 'protected')...\n" |\
-	    tee -a ${LOGS}/${2}.${LEVEL5}
+        tee -a ${LOGS}/${2}.${LEVEL5}
 while read line
 do
-	grep -Hn 'static' $line >> ${LOGS}/${2}.${LEVEL5}
+    grep -Hn 'static' $line >> ${LOGS}/${2}.${LEVEL5}
 done < ${LPCFILES}
 
 
 # LEVEL 10 CHECKS
 # Alte Rechtschreibung rules
 echo -ne "\n\nKleingeschriebenes Du/Dir/Dich...\n" |\
-	tee -a ${LOGS}/${2}.${LEVEL10}
+    tee -a ${LOGS}/${2}.${LEVEL10}
 while read line
 do
-	grep -Hn ' \(du\|dich\|dir\) ' $line | cut -d : -f 1-2 | sort | \
-	uniq >> ${LOGS}/${2}.${LEVEL10}
+    grep -Hn ' \(du\|dich\|dir\) ' $line | cut -d : -f 1-2 | sort | \
+    uniq >> ${LOGS}/${2}.${LEVEL10}
 done < ${LPCFILES}
 
 # Pfadnamen bereinigen
 sed -i -e 's#.//#/#g' ${LOGS}/${2}.*
 
 echo -ne "\nCheck finished!\n"
+
+# cleanup
+rm $CHECKTMP
+rm $CHECKTMP2