wilde@1139: #-*-sh-*- wilde@1139: rm_empty_dirs() wilde@1139: { wilde@1139: # Args: $1 - DIRECTORY wilde@1139: # wilde@1139: # Recursively remove DIRECTORY and all it _parent_ directories as wilde@1139: # long as they are empty. wilde@1139: local directory="$1" wilde@1139: while [ -d "$directory" -a -z "$(ls 2>/dev/null -A "$directory")" ] ; do wilde@1139: getxt "Deleting empty directory '%s' ...\n" "$directory" wilde@1139: rmdir "$directory" wilde@1139: directory=`dirname "$directory"` wilde@1139: done wilde@1139: } wilde@1139: wilde@1139: rm_files() wilde@1139: { wilde@1139: for file in "$@" ; do wilde@1139: if [ -e "$file" ] ; then wilde@1139: getxt "Deleting '%s' ...\n" "$file" wilde@1139: rm "$file" wilde@1139: fi wilde@1139: done wilde@1139: } wilde@1139: wilde@1139: remove_cronjob() wilde@1139: { wilde@1139: setup_cronjob deinstall wilde@1139: } wilde@1139: wilde@1139: deinstall_certs() wilde@1139: { wilde@1139: local cinst="${oldinstcfg[PREFIX]}/bin/cinst" wilde@1139: local certlist=`ls 2>/dev/null -1 ${instdata_path}/list-installed.txt` wilde@1139: wilde@1139: getxt "Uninstalling certificates ...\n" wilde@1139: wilde@1139: if [ "$certlist" ] ; then wilde@1139: getxt "Using certificate list '%s'.\n" "$certlist" wilde@1139: if [ -x "$cinst" ] ; then wilde@1139: "$cinst" "list=$certlist" "choices=uninstall" wilde@1139: else wilde@1139: getxt >&2 "WARNING: can't execute %s for certificate deinstallation.\n" "$cinst" wilde@1139: fi wilde@1139: else wilde@1139: getxt "No certificate list found. Nothing to do.\n" wilde@1139: fi wilde@1139: } wilde@1139: wilde@1139: deinstall_etc() wilde@1139: { wilde@1139: getxt "Removing cron job ...\n" wilde@1139: remove_cronjob wilde@1139: wilde@1139: # FIXME: delete all files created by the application. wilde@1139: local tbcfg_files=( "${instcfg_path}/TrustBridge.ini" wilde@1139: "${instcfg_path}/trustbridge-tray-starter.cfg" wilde@1139: "$instcfg_file" ) wilde@1139: wilde@1139: getxt "Removing certificate lists from: %s:\n" "$instdata_path" wilde@1139: rm_files "$instdata_path"/list-*.txt wilde@1139: wilde@1139: getxt "Removing PID file from: %s:\n" "$instdata_path" wilde@1139: rm_files "$instdata_path"/*.pid wilde@1139: rm_empty_dirs "$instdata_path" wilde@1139: wilde@1139: getxt "Removing configuration files:\n" wilde@1139: rm_files "${tbcfg_files[@]}" wilde@1139: rm_empty_dirs "$instcfg_path" wilde@1139: wilde@1139: getxt "Removing TrustBridge from autostart\n" wilde@1139: rm_files "${autostart_path}/trustbridge.desktop" wilde@1139: update-desktop-database 2>&1 || true wilde@1139: wilde@1139: getxt "Removing TrustBridge from start menu\n" wilde@1139: rm_files "${startmenu_path}/trustbridge.desktop" wilde@1139: } wilde@1139: wilde@1139: deinstall() wilde@1139: { wilde@1139: if [ "${oldinstcfg[PREFIX]}" ] ; then wilde@1139: getxt "Really deinstall TrustBridge from '%s'? [y/n]\n" "${oldinstcfg[PREFIX]}" wilde@1139: yorn || exit 0 wilde@1139: deinstall_certs wilde@1139: local deinstdir="${oldinstcfg[PREFIX]}/bin" wilde@1139: getxt "Deinstalling from '%s'.\n" "${oldinstcfg[PREFIX]}" wilde@1139: for file in $BINNAMES ; do wilde@1139: local path="${deinstdir}/$file" wilde@1139: getxt "Deleting '%s' ...\n" "$path" wilde@1139: rm "$path" || getxt >&2 "WARNING: Could not delete: '%s'!\n" "$path" wilde@1139: done wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: wilde@1139: # images wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share/doc/trustbridge/_images" wilde@1139: for file in $HELPNAMES_IMG; do wilde@1139: local path="${deinstdir}/$file" wilde@1139: if [ -f "$path" ]; then wilde@1139: getxt "Deleting '%s' ...\n" "$path" wilde@1139: rm "$path" || getxt >&2 "WARNING: Could not delete: '%s'!\n" "$path" wilde@1139: fi wilde@1139: done wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: wilde@1139: # Javascript sources wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share/doc/trustbridge/_sources" wilde@1139: for file in $HELPNAMES_SOURCES; do wilde@1139: local path="${deinstdir}/$file" wilde@1139: if [ -f "$path" ]; then wilde@1139: getxt "Deleting '%s' ...\n" "$path" wilde@1139: rm "$path" || getxt >&2 "WARNING: Could not delete: '%s'!\n" "$path" wilde@1139: fi wilde@1139: done wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: wilde@1139: # Static files wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share/doc/trustbridge/_static" wilde@1139: for file in $HELPNAMES_STATIC; do wilde@1139: local path="${deinstdir}/$file" wilde@1139: if [ -f "$path" ]; then wilde@1139: getxt "Deleting '%s' ...\n" "$path" wilde@1139: rm "$path" || getxt >&2 "WARNING: Could not delete: '%s'!\n" "$path" wilde@1139: fi wilde@1139: done wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: wilde@1139: # The actual html wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share/doc/trustbridge" wilde@1139: for file in $HELPNAMES; do wilde@1139: local path="${deinstdir}/$file" wilde@1139: if [ -f "$path" ]; then wilde@1139: getxt "Deleting '%s' ...\n" "$path" wilde@1139: rm "$path" || getxt >&2 "WARNING: Could not delete: '%s'!\n" "$path" wilde@1139: fi wilde@1139: done wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share/pixmaps/trustbridge" wilde@1139: getxt "Deinstalling from '%s'.\n" "${oldinstcfg[PREFIX]}" wilde@1139: for file in $ICONNAME; do wilde@1139: local path="${deinstdir}/$file" wilde@1139: getxt "Deleting '%s' ...\n" "$path" wilde@1139: rm "$path" || getxt >&2 "WARNING: Could not delete: '%s'!\n" "$path" wilde@1139: done wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share/pixmaps/trustbridge" wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share/pixmaps" wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: deinstdir="${oldinstcfg[PREFIX]}/share" wilde@1139: rm_empty_dirs "$deinstdir" wilde@1139: deinstall_etc wilde@1139: getxt "Deinstallation finished.\n" wilde@1139: else wilde@1139: getxt "No current installation found! No harm done.\n" wilde@1139: fi wilde@1139: }