From e87cdccaaa36b02ec50d511b9ffeda018135ea55 Mon Sep 17 00:00:00 2001
From: Leon Gaultier <leongaultier@gmail.com>
Date: Tue, 8 Apr 2014 06:49:28 +0200
Subject: [PATCH] sauberer Code an einigen stellen, die Dialoge verbessert,
 Ergebnisse von Funktionsaufrufen in Variablen geschrieben

---
 CAU_Installer               | 155 ++++++++++++++++++++++++++----------
 calibre-autoupdate          |  58 ++++++++------
 calibre-autoupdate.conf     |   4 +
 calibre-autoupdate.h        |  83 ++++++++++++++++++-
 calibre-autoupdate_checks.h |  36 ++++-----
 5 files changed, 244 insertions(+), 92 deletions(-)

diff --git a/CAU_Installer b/CAU_Installer
index 71b36b8..c75f248 100755
--- a/CAU_Installer
+++ b/CAU_Installer
@@ -1,19 +1,43 @@
 #!/bin/bash
+#  Calibre Auto Updater Installscript
+#    Copyright (C) 2013-2014  Leon Gaultier
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>
+
 
 # Programmversion
 PROGNAME=`basename $0`
-VERSION="0.13"
-QUIET=0
+VERSION="0.13.98"
 
-func_term_output () {
+##### Variablen deklaration #####
+# Downloadseite der Linuxinstallation
+DOWNLOAD_URL=https://github.com/kovidgoyal/calibre/raw/master/setup/linux-installer.py
+
+#################################
+
+
+
+func_term_output () {			# einheitliche Terminalausgabe
   ## Beginne mit der Ausgbe ##
   tty -s && clear
-  echo -e "\033[44m \033[0m\033[1m $PROGNAME the Calibre-Autoupdate-Installer Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n";
+  echo -e "\033[44m \033[0m\033[1m $PROGNAME the Calibre-Autoupdate-Installer Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n\e[m";
   return 0
 }
 
 func_usage ()    # Gibt Auskunft über Verwendung des Scriptes
 {
+    func_term_output
     echo "Verwendung: $PROGNAME [OPTION...]"
     echo -e "Verwende $PROGNAME --help oder $PROGNAME -h für mehr Informationen.\n"
 }
@@ -25,17 +49,17 @@ func_help ()     # Listet alle Optionsschalter auf
     echo "$PROGNAME -- Der Calibre-Autoupdate-Installer (CAUI)"
     echo ""
     echo "Options:"
-    echo "   -q, --quiet           ohne Konsolenausgabe"
-    echo "   -h, --help            zeigt die Hilfe an"
-    echo "   -V, --version         gibt die Programmversion aus"
-    echo "   -i, --install         installiert den Calibre-Autoupdater (CAU)"
-    #echo "   -u, --uninstall       deinstalliert den Calibre-Autoupdater (CAU), soll kommen "
+    echo "   -h, --help              zeigt die Hilfe an"
+    echo "   -V, --version           gibt die Programmversion aus"
+    echo "   -i, --install           installiert den Calibre-Autoupdater (CAU)"
+    echo "       --install_calibre   installiert Calibre in der aktuellsten Version"
     echo ""
     echo -e "Sende Fehler an <leongaultier@gmail.com>.\n";
 }
 
 func_version ()  # Versionsauskunft des Installers
 {
+    func_term_output
     echo "$PROGNAME: Der Calibre-Autoupdate-Installer (CAUI) v$VERSION"
     echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden,"
     echo "in der Hoffnung das es hilfreich ist, aber OHNR IRGENDEINE GARANTIE"
@@ -54,8 +78,7 @@ read -p "Wo befindet sich die Calibre Installation? [default /opt] " CALIBRE_INS
   if [ -z $CALIBRE_INSTALL_LOCATION ]; then
       CALIBRE_INSTALL_LOCATION=/opt      
   fi
-
-# Installationsfade in der Verzeichnishierarchie
+# Verzeichnishierarchie im Installationsort
 INC=$UPDATER_INSTALL_LOCATION/include/
 ETC=$UPDATER_INSTALL_LOCATION/etc/
 BIN=$UPDATER_INSTALL_LOCATION/bin/
@@ -64,8 +87,27 @@ BIN=$UPDATER_INSTALL_LOCATION/bin/
 func_check_dir()  # Install oder Update Calibre Updater, Check ob Calibre überhaupt installiert ist
 {
     if test ! -d $CALIBRE_INSTALL_LOCATION/calibre ; then
-        echo -e "\n\033[31mKeine Calibre Installation unter $CALIBRE_INSTALL_LOCATION gefunden. Installation des Updaters nicht möglich.\e[m\n"; >&2
-        exit 1
+        echo -e "\n\033[31mKeine Calibre Installation unter $CALIBRE_INSTALL_LOCATION gefunden.\033[1;34m"
+	while ((!gueltig)); do    # beginn der Ja/Nein Abfrage
+	echo -e "\033[1;34m"
+	read -sn1 -t 30 -p "Möchtest Du Calibre jetzt installieren? [j/n] " answer
+	echo -e "\e[m"
+	  case "$answer" in
+	      [JjYy])    result=1; gueltig=1 ;;
+	      [Nn])      result=0; gueltig=1 ;;
+	      "")        result=0; gueltig=1 ;;
+	      *)         gueltig=0 ;;
+	  esac
+	done
+	echo
+	if (( ! result )); then
+	    echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n"
+	    exit 1  
+	fi
+	echo -e "\033[1;34mNach der Calibre Installation wird die Installation des Calibre Autoupdaters durchgeführt\e[m"
+	sleep 3
+        func_install_calibre
+        exit 0
     fi
 
     if test -f $BIN/calibre-autoupdate ; then  # Updater bereits installiert?
@@ -82,7 +124,7 @@ func_check_dir()  # Install oder Update Calibre Updater, Check ob Calibre überh
 	done
 	echo
 	if (( ! result )); then
-	    echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich beendet.\e[m\n"
+	    echo -e "\n\033[1;31mDie installation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n"
 	    exit 1  
 	fi
     fi
@@ -92,7 +134,7 @@ func_progressbar()
 {
     echo -e -n $'\033[34m------------------------------------------------------------------------- 100%\r'
     echo -e -n "\033[32m0% "
-    for ((i=0; i<61; i++)); do
+    for ((i=0; i<61; i++)); do	
 	echo -e -n "\033[32m="  
 	case $i in
 	      15)
@@ -109,21 +151,14 @@ func_progressbar()
     echo -e "\e[m"
 }
 
-func_install()    # Installiert den Calibre Updater
+func_install_noroot()
 {
-func_term_output
-func_change_install_dir  
-func_check_dir
-
-# Ersetzen der Platzhaltervatiablen für die Installationsverzeichnisvariablen
-
-    if [ -w "$BIN" ]; then
+# Die sed Befehle ersetzen in den Programmdateien Platzhalter für den Installationsort.
+# Grund hierfür sind die includes der Header unf Configfiles die den kompletten Fad benörigen
 	echo -e "\n\033[1;34mDer Calibre-Autoupdater wird nun unter $UPDATER_INSTALL_LOCATION installiert...\e[m";
-	echo -e "\n\033[1;32mProgrammdatei wird nach $BIN kopiert\e[m"
+	echo -e "\033[1;32mProgrammdatei wird nach $BIN kopiert\e[m"
 	cp calibre-autoupdate $BIN
-	sed -i "s/_-INC-_/${INC//\//\/}/g" $BIN"calibre-autoupdate"
-        sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate"
-        sed -i "s/_-BIN-_/${BIN//\//\/}/g" $BIN"calibre-autoupdate"
+        sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate" 
 	sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate"
 	chmod 755 $BIN/calibre-autoupdate
 	func_progressbar
@@ -133,17 +168,21 @@ func_check_dir
 	func_progressbar
 	echo -e "\n\033[1;32mDie Konfigurationsdatei wird nach $ETC kopiert\e[m"
 	cp calibre-autoupdate.conf $ETC
+	sed -i "s/_-INC-_/${INC//\//\/}/g" $ETC"calibre-autoupdate.conf"
+	sed -i "s/_-BIN-_/${BIN//\//\/}/g" $ETC"calibre-autoupdate.conf"
 	sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf"
 	chmod 644 $ETC/calibre-autoupdate.conf
 	func_progressbar
-	
-    else	     	     
+}
+
+func_install_root()
+{
+# Die sed Befehle ersetzen in den Programmdateien Platzhalter für den Installationsort.
+# Grund hierfür sind die includes der Header unf Configfiles die den kompletten Fad benörigen
 	echo -e "\n\033[1;34mDu hast kein Schreibrecht auf $UPDATER_INSTALL_LOCATION, daher wird SUDO versucht zu verwenden...\e[m";
-	sudo echo -e "\n\033[1;36mProgrammdatei wird nach $BIN kopiert\e[m\e[m"
-        sudo cp calibre-autoupdate $BIN
-	sudo sed -i "s/_-INC-_/${INC//\//\/}/g" $BIN"calibre-autoupdate"
+	sudo echo -e "\033[1;36mProgrammdatei wird nach $BIN kopiert\e[m\e[m"
+        sudo cp calibre-autoupdate $BIN	
 	sudo sed -i "s/_-ETC-_/${ETC//\//\/}/g" $BIN"calibre-autoupdate"
-	sudo sed -i "s/_-BIN-_/${BIN//\//\/}/g" $BIN"calibre-autoupdate"
 	sudo sed -i "s/_-VERSION-_/${VERSION//\//\/}/g" $BIN"calibre-autoupdate"
 	sudo chmod 755 $BIN"calibre-autoupdate"
 	func_progressbar
@@ -153,18 +192,47 @@ func_check_dir
 	func_progressbar
 	echo -e "\n\033[1;36mDie Konfigurationsdatei wird nach $ETC kopiert\e[m"
 	sudo cp calibre-autoupdate.conf $ETC
+	sudo sed -i "s/_-INC-_/${INC//\//\/}/g" $ETC"calibre-autoupdate.conf"
+	sudo sed -i "s/_-BIN-_/${BIN//\//\/}/g" $ETC"calibre-autoupdate.conf"
 	sudo sed -i "s/_-CALIBRE_INSTALL_LOCATION-_/${CALIBRE_INSTALL_LOCATION//\//\/}/g" $ETC"calibre-autoupdate.conf"
 	sudo chmod 644 $ETC"calibre-autoupdate.conf";
 	func_progressbar
+}
+
+func_install_process()    # Installiert den Calibre Updater
+{
+func_term_output
+func_change_install_dir  
+func_check_dir
+
+    if [ -w "$BIN" ]; then
+	func_install_noroot
+    else	     	     
+	func_install_root
     fi
-    echo -e "\n\n\n\033[1;36mDer Calibre-Autoupdater wurde erfolgreich installiert und"
+    echo -e "\n\n\033[1;36mDer Calibre-Autoupdater wurde erfolgreich installiert und"
     echo -e "kann nun mit calibre-update oder $BIN"calibre-update" aufgerufen werden\e[m\n"
 }
 
-func_uninstall()
+func_install_calibre()
 {
-echo
-# ist geplant
+  if [ ! $CALIBRE_INSTALL_LOCATION ]; then
+    func_term_output
+    read -p "Wohin soll Calibre installiert werden? [default /opt] " CALIBRE_INSTALL_LOCATION
+  fi
+  if [ -z $CALIBRE_INSTALL_LOCATION ]; then
+      CALIBRE_INSTALL_LOCATION=/opt      
+  fi  
+  if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then
+    echo -e "\033[1;32mCalibre wird nun installiert...\n\e[m"
+    wget -nv -O- $DOWNLOAD_URL | python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('$CALIBRE_INSTALL_LOCATION')"
+  else	     	     
+    echo -e "\033[1;34mDu hast kein Schreibrecht auf $CALIBRE_INSTALL_LOCATION. Calibre wird mit SUDO installiert. Bitte gib hierzu Dein Userpasswort ein...\n\033[1;32m"
+    sudo -v && wget -nv -O- $DOWNLOAD_URL | sudo python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('$CALIBRE_INSTALL_LOCATION')"
+  fi
+  echo -e "\n\n\033[1;36mHerzlichen Glückwunsch. Calibre wurde installiert und kann nun mit "calibre" verwendet werden.\n\033[0m"
+  sleep 5
+  func_install_process
 }
 
 while test "$#" -gt 0
@@ -178,19 +246,18 @@ do
   esac
 
   case "$arg" in
-      --quiet | -q )
-	  QUIET=1 ;;
       --help | -h )
 	  func_help; exit 0 ;;
       --version | -V | -v )
 	  func_version; exit 0 ;;
-      --install | -i )
-	  func_install; exit 0 ;;
-      --uninstall | -u )
-	  func_uninstall; exit 0;;
+      --install | -i | -I )
+	  func_install_process; exit 0 ;;
+      --install_calibre )
+	  func_install_calibre; exit 0
   esac
 
 done
 func_term_output
 func_usage
-exit 0
+echo -e "\e[m"
+exit 0
\ No newline at end of file
diff --git a/calibre-autoupdate b/calibre-autoupdate
index e8ada84..da494eb 100644
--- a/calibre-autoupdate
+++ b/calibre-autoupdate
@@ -61,22 +61,31 @@
 #        Es wurden diverse Ausgabentexte sprachlich verbessert und Fehler beseitigt.
 #        !!! Das ist die erste Version welche eine reibungslose Installation und einen reibungslosen
 #        betrieb unter allen Linuxvarianten ermöglicht !!!
-# TODO	auslesen der Download URL von der Download Seite
-#       kontrolle ob alle benötigten programme für das skript vorhanden sind
+#
+# v0.13  Es wurden diverse Fehler bei eigentlichen Updateprozess bereinigt. Desweiteren wurden größere
+#        in kleine geteilt.
+#
+# v0.14  Uninstallfunktion für Calibre hinzugefügt. Hiermit kann Calibre von der Festplatte deinstalliert werden.
+#        Bei einer nicht vorhandenen Calibreinstallation wird vom Installsript des Updaters gefragt, ob Calibre
+#        installiert werden soll.
+#        Die Funktion Installation des Updaters wurde aufgeteilt in root_install und noroot_install
+#        Uninstall Funktion für den calibre-autoupdater mit gleichzeitiger nachfrage und eventueller
+#        deinstallation vom Calibre Programm
+#
+# TODO	 Auslesen der Download URL von der Download Seite
+#        kontrolle ob alle benötigten programme für das skript vorhanden sind
 #
 #
 ######################################
 ######################################
 
 # Installationsfade in der Verzeichnishierarchie
-INC=_-INC-_
 ETC=_-ETC-_
-BIN=_-BIN-_
+
 
 # Programmversion
 PROGNAME=`basename $0`
 VERSION="_-VERSION-_"
-QUIET=0
 
 #################################
 ######### CONFIGURATION #########
@@ -84,7 +93,8 @@ QUIET=0
 # bis Veränderungen auf der Internetseite durchgeführt wurden
 #################################
 
-# Einlesen des Configfiles mit den Constanten für die Calibre Downloadseite und Hauptseite
+# Einlesen des Configfiles mit den Variablen für die Calibre Downloadseite, Hauptseite
+# und den Installationsfaden in der Verzeichnishierarchie
 source $ETC/calibre-autoupdate.conf
 
 
@@ -96,13 +106,6 @@ source $INC/calibre-autoupdate_checks.h
 
 
 
-func_term_output () {
-  ## Beginne mit der Ausgbe ##
-  tty -s && clear
-  echo -e "\033[44m \033[0m\033[1m $PROGNAME Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n";
-  return 0
-}
-
 
 #######################################################
 ####################################################### 
@@ -114,17 +117,17 @@ NOTIFY="echo"
 [ -n "$DISPLAY" ] && NOTIFY="notify-send -t 10000 -i /usr/share/icons/hicolor/256x256/apps/calibre-gui.png Calibre-Auto-Updater"
 
 
-func_term_output    # Funktion für Konsolenausgabe
+func_term_output    # ruft die Funktion für Konsolenausgabe auf
+func_check_stat  # ruft die Funktion "check Status Netzwerk und Downloadadressen" auf
 
-func_http_status_code	# Funktion hole einen http-status code
-
-func_check_stat  # Funktion check Status Netzwerk und Downloadadressen
-
-case $? in
+case "$?" in
     1)
        func_check_version
+       CHECK_STATE_RESULT="$1"
+echo $CHECK_STATE_RESULT
+sleep 1000
        func_vercomp $CURRENT_VERSION $LATEST_VERSION     # Funktion Versionvergleich
-       case $? in
+       case $CHECK_STATE_RESULT in
 	   0) 
 	     $NOTIFY "Deine Calibre Version ist auf dem aktuellsten Stand ($CURRENT_VERSION).";;
 	   1) 
@@ -136,11 +139,11 @@ case $? in
 	     
 	     if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then
 		$NOTIFY "Das Update wird nun installiert..."
-	        echo -e "\033[1;34m"
+	        echo -e "\033[34m"
 	        wget -nv -O- $DOWNLOAD_URL | python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('$CALIBRE_INSTALL_LOCATION')"
 	     else	     	     
 		$NOTIFY "Du hast kein Schreibrecht auf $CALIBRE_INSTALL_LOCATION. Das Update wird mit SUDO installiert. Bitte gib hierzu Dein Userpasswort im Terminalfenster ein..."
-		echo -e "\033[1;34m"
+		echo -e "\033[34m"
 		sudo -v && wget -nv -O- $DOWNLOAD_URL | sudo python -c "import sys; main=lambda x:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main('$CALIBRE_INSTALL_LOCATION')"	
 	     fi
 	     $NOTIFY "Calibre wurde auf die neuste Version aktuallisiert." 
@@ -158,6 +161,7 @@ case $? in
     $NOTIFY "Update und Versionsvergleich fehlgeschlagen!!! Kann kein Netzwerkinterface finden!"
     ;;
 esac
+echo -e "\e[m"
 }
 
 while test "$#" -gt 0
@@ -171,18 +175,20 @@ do
   esac
 
   case "$arg" in
-      --quiet | -q )
-	  QUIET=1 ;;
       --help | -h )
 	  func_help; exit 0 ;;
       --version | -V | -v )
 	  func_version; exit 0 ;;
       --check | -C | -c )
 	  func_check_prog; exit 0 ;;
+      --uninstall | -U | -u )
+	  func_uninstall; exit 0;;
+      --uninstall_calibre )
+	  func_uninstall_calibre; exit 0 ;;
   esac
 
 done
 func_check_prog
 func_update
-
-exit 0
+echo -e "\e[m"
+exit 0
\ No newline at end of file
diff --git a/calibre-autoupdate.conf b/calibre-autoupdate.conf
index 9648257..7a27e1a 100644
--- a/calibre-autoupdate.conf
+++ b/calibre-autoupdate.conf
@@ -19,3 +19,7 @@ CURL=/usr/bin/curl
 NOTIFY=/usr/bin/notify-send
 AWK=/usr/bin/awk
 
+# Installationsfade in der Verzeichnishierarchie
+INC=_-INC-_
+BIN=_-BIN-_
+
diff --git a/calibre-autoupdate.h b/calibre-autoupdate.h
index f1b9c28..b0168d2 100644
--- a/calibre-autoupdate.h
+++ b/calibre-autoupdate.h
@@ -15,16 +15,19 @@ func_help ()
     echo "$PROGNAME -- Der Calibre! Linux Edition calibre-autoupdater (CAU)"
     echo ""
     echo "Options:"
-    echo "   -q, --quiet           ohne Konsolenausgabe"
-    echo "   -h, --help            zeigt die Hilfe an"
-    echo "   -V, --version         gibt die Programmversion aus"
-    echo "   -c, --check           kontrolliert ob benötigte Programme vorhanden sind"
+    echo "   -q, --quiet                  ohne Konsolenausgabe"
+    echo "   -h, --help                   zeigt die Hilfe an"
+    echo "   -V, --version                gibt die Programmversion aus"
+    echo "   -c, --check                  kontrolliert ob benötigte Programme vorhanden sind"
+    echo "   -u, --uninstall              deinstalliert den Calibre-Autoupdater"
+    echo "       --uninstall_calibre      deinstalliert das Calibre Programm"
     echo ""
     echo -e "Sende Fehler an <leongaultier@gmail.com>.\n";
 }
 
 func_version ()
 {
+    func_term_output
     echo "$PROGNAME: Der Calibre! autoupdater v$VERSION"
     echo "Leon Gaultier 2013-2014. Das Programm darf verteilt werden,"
     echo "in der Hoffnung das es hilfreich ist, aber OHNR IRGENDEINE GARANTIE"
@@ -62,6 +65,13 @@ func_vercomp () {            # Funktion zum Versionsvergleich
     return 0
 }
 
+func_term_output () {
+  ## Beginne mit der Ausgbe ##
+  tty -s && clear
+  echo -e "\033[44m \033[0m\033[1m $PROGNAME Version $VERSION\033[0m\n\033[44m \033[0m 2013-2014 by Leon Gaultier\n\e[m";
+  return 0
+}
+
 func_progressbar()
 {
     echo -e -n $'\033[34m------------------------------------------------------------------------- 100%\r'
@@ -81,4 +91,69 @@ func_progressbar()
     sleep 0.03
     done
     echo -e "\e[m"
+    return 0
+}
+func_uninstall()
+{
+  func_term_output
+  while ((!gueltig)); do    # beginn der Ja/Nein Abfrage
+    echo -e "\033[1;34m"
+    read -sn1 -t 30 -p "Möchtest Du den Calibre-Autoupdater wirklich DeInstallieren?  [j/n] " answer
+    echo -e "\e[m"
+    case "$answer" in
+	[JjYy])    result=1; gueltig=1 ;;
+	[Nn])      result=0; gueltig=1 ;;
+	"")        result=0; gueltig=1 ;;
+	*)         gueltig=0 ;;
+    esac
+  done
+  echo
+    if (( ! result )); then
+	echo -e "\033[1;31mDie DeInstallation des Calibre-Autoupdaters wurde durch Dich abgebrochen.\e[m\n"
+	exit 1  
+    fi
+    echo -e "\033[1;31mDer Calibre-Autoupdater wird nun deinstalliert.\e[m"
+    if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then
+	rm -rf $INC"calibre-autoupdate.h" $INC"calibre-autoupdate_checks.h"; >&2
+	rm -rf $ETC"calibre-autoupdate.conf"; >&2
+	rm -rf $BIN"calibre-autoupdate"; >&2
+    else	     	     
+	sudo rm -rf $INC"calibre-autoupdate.h" $INC"calibre-autoupdate_checks.h"; >&2
+	sudo rm -rf $ETC"calibre-autoupdate.conf"; >&2
+	sudo rm -rf $BIN"calibre-autoupdate"; >&2
+    fi   
+    func_progressbar
+    echo -e "\n\033[1;32mDer Calibre-Autoupdater wurde deinstalliert. Schade das Du ihn nicht weiter verwendest\n\e[m"
+}
+func_uninstall_calibre()
+{
+  func_term_output
+  if test ! -d $CALIBRE_INSTALL_LOCATION/calibre ; then
+    echo -e "\033[1;31mEs konnte keine Calibre Installation gefunden werden. Die DeInstallation wurde abgebrochen\e[m\n"
+    exit 1
+  fi
+  while ((!gueltig)); do    # beginn der Ja/Nein Abfrage
+    echo -e "\033[1;34mMöchtest Du Calibre wirklich DeInstallieren? Calibre kann dann nicht mehr verwendet werden!"
+    read -sn1 -t 30 -p "Deine Bücher und die Calibre Bibliothek bleiben erhalten.  [j/n] " answer
+    echo -e "\e[m"
+    case "$answer" in
+	[JjYy])    result=1; gueltig=1 ;;
+	[Nn])      result=0; gueltig=1 ;;
+	"")        result=0; gueltig=1 ;;
+	*)         gueltig=0 ;;
+    esac
+  done
+  echo
+    if (( ! result )); then
+	echo -e "\n\033[1;31mDie DeInstallation von Calibre wurde durch Dich abgebrochen.\e[m\n"
+	exit 1  
+    fi
+    echo -e "\033[1;34mCalibre wird nun deinstalliert.\e[m"    
+    if [ -w "$CALIBRE_INSTALL_LOCATION" ]; then
+	calibre-uninstall
+    else	     	     
+	sudo calibre-uninstall
+    fi
+  echo -e "\n\n\033[1;32mCalibre würde DeInstalliert! Schade es ist ein tolles Programm zur eBookverwaltung :-)\e[m"
+  return 0
 }
\ No newline at end of file
diff --git a/calibre-autoupdate_checks.h b/calibre-autoupdate_checks.h
index 15220e2..c53bd07 100644
--- a/calibre-autoupdate_checks.h
+++ b/calibre-autoupdate_checks.h
@@ -3,21 +3,21 @@
 #
 
 func_http_status_code () {
-  echo -e "\033[1;34m Hole Status Code von $CHECK_CALIBRE_DOWNLOAD_PAGE. Bitte warten.";
+  echo -e "\033[1;34m Hole Status Code von $CHECK_CALIBRE_DOWNLOAD_PAGE. Bitte warten.\e[m"
   stat_1=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_CALIBRE_DOWNLOAD_PAGE)
   func_progressbar
-  echo -e "\033[32m Status Codes von $CHECK_CALIBRE_DOWNLOAD_PAGE erhalten";
-  echo -e "\n\033[1;34m Hole Status Code von $CHECK_DOWNLOAD_URL. Bitte warten.";
+  echo -e "\033[32m Status Codes von $CHECK_CALIBRE_DOWNLOAD_PAGE erhalten\e[m"
+  echo -e "\n\033[1;34m Hole Status Code von $CHECK_DOWNLOAD_URL. Bitte warten.\e[m"
   stat_2=$(curl -o /dev/null --silent --head --write-out '%{http_code}' $CHECK_DOWNLOAD_URL)
   func_progressbar
-  echo -e "\033[32m Status Codes von $CHECK_DOWNLOAD_URL erhalten";
+  echo -e "\033[32m Status Codes von $CHECK_DOWNLOAD_URL erhalten\e[m"
   return 0
 }
 
 func_check_stat () {          # Funktion zum Check Verfügbarkeit der Downloadseiten und der Internetverbindung
 # Test for network conection
-echo -e "\n\033[1;34m Ich schau dann mal ob Dein Computer überhaupt ein Netzwerk hat :-)";
-for INTERFACE in $(ls /sys/class/net/ | grep -v lo);
+echo -e "\n\033[1;34m Suche nach vorhandenen Netzwerk für die Verbindung zum Internet :-)\e[m"
+for INTERFACE in $(ls /sys/class/net/ | grep -v lo)
 do
   if [[ $(cat /sys/class/net/$INTERFACE/carrier) = 1 ]]; then 
    ONLINE=1
@@ -25,8 +25,8 @@ do
 done
 func_progressbar
 if [ $ONLINE ]; then
-      echo -e "\n\033[32m Oh Wunder! Habe ein Netzwerk gefunden. Verbinde über Interface $INTERFACE,
- was nicht heißt das es geht :-P\n";
+      echo -e "\033[32m Es wurde ein Netzwerkinterface gefunden. Verbinde über Interface $INTERFACE\n\e[m"
+      func_http_status_code
       if [[ $stat_1 -eq 200 && $stat_2 -eq 200 ]]; then
 	  return 1
       elif [[ $stat_1 -eq !200 ]]; then
@@ -35,7 +35,7 @@ if [ $ONLINE ]; then
 	  return 3
       fi
 else
-    echo -e "\n\033[31m Fehler!!! Bitte schau Dir die Desktop Benachrichtigung an!";
+    echo -e "\n\033[31m Fehler!!! Bitte schau Dir die Desktop Benachrichtigung an!\e[m"
     return 4
 fi
 }
@@ -43,14 +43,14 @@ fi
 func_check_run_calibre () {
   CALIBRE_PID=`ps ax | grep /opt/calibre/bin/calibre | grep -v grep | awk '{printf $1}'`
 
-  while [ $CALIBRE_PID ]; 
+  while [ $CALIBRE_PID ]
   do
     $NOTIFY "Um das Update installieren zu können, muss Calibre beendet werden. Calibre wird in einer Minute vom Update Service beendet. !!!Bitte speichere alle wichtigen Daten!!!"
     sleep 3
     echo ""
-    for (( i=60; i>0; i-- ));
+    for (( i=60; i>0; i-- ))
     do
-      echo -e -n "\033[31m noch \033[32m>>$i<< \033[31m Sekunden bis zum Calibre Programmende\r"
+      echo -e -n "\033[31m noch \033[32m>>$i<< \033[31m Sekunden bis zum Calibre Programmende\r\e[m"
       sleep 1
     done
     kill -15 $CALIBRE_PID
@@ -71,21 +71,21 @@ func_check_version () {
 func_check_prog () {
   func_term_output  
   if test ! -f $CURL ; then
-    echo -e "\033[31mDu hast Curl nich installiert, es wird aber für die Updatefunktion benötigt\n"; >&2
+    $NOTIFY "Du hast Curl nich installiert, es wird aber für die Updatefunktion benötigt"
     exit 1
   fi
   
   if test ! -f $AWK ; then
-    echo -e "\033[31mDu hast AWK nich installiert, es wird aber für die Updatefunktion benötigt\n"; >&2
+    $NOTIFY "Du hast AWK nich installiert, es wird aber für die Updatefunktion benötigt"
     exit 1
   
   if test ! -f $NOTIFY ; then
-    echo -e "\e[0;33mDu hast Notify-Send nich installiert, das Programm ist optional und wird"; >&2
-    echo -e "für die Upatefunktion nicht unbedingt benötigt\n"; >&2
+    echo -e "\e[0;33mDu hast Notify-Send nich installiert, das Programm ist optional und wird\e[m"
+    echo -e "für die Upatefunktion nicht unbedingt benötigt\n\e[m"
     sleep 10
   fi
   
   fi  
     echo -e "\033[32mAlle benötigten Programme sind installiert. Starte $PROGNAME ohne Optionen und"
-    echo -e "es wird nach einer aktuellen Calibre Version geschaut\n";
-}
+    echo -e "es wird nach einer aktuellen Calibre Version gesucht\n\e[m";
+}
\ No newline at end of file