Matej Habrnal 0b651c
From 2d19dcd4dd4f937e48fb1e4ebd440ac99754d68a Mon Sep 17 00:00:00 2001
Matej Habrnal 0b651c
From: Jakub Filak <jfilak@redhat.com>
Matej Habrnal 0b651c
Date: Mon, 15 Sep 2014 08:40:05 +0200
Matej Habrnal 0b651c
Subject: [PATCH] cli: robustize abrt-console-notification.sh
Matej Habrnal 0b651c
Matej Habrnal 0b651c
- don't show any notifications without a terminal connected to stdout
Matej Habrnal 0b651c
- don't continue without writable $HOME directory
Matej Habrnal 0b651c
- forward all error messages to /dev/null
Matej Habrnal 0b651c
Matej Habrnal 0b651c
Resolves rhbz#1141485
Matej Habrnal 0b651c
Related to rhbz#1139001
Matej Habrnal 0b651c
Matej Habrnal 0b651c
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Matej Habrnal 0b651c
---
Matej Habrnal 0b651c
 src/cli/abrt-console-notification.sh | 30 ++++++++++++++++++++++++------
Matej Habrnal 0b651c
 1 file changed, 24 insertions(+), 6 deletions(-)
Matej Habrnal 0b651c
Matej Habrnal 0b651c
diff --git a/src/cli/abrt-console-notification.sh b/src/cli/abrt-console-notification.sh
Matej Habrnal 0b651c
index 937abb0..0090747 100755
Matej Habrnal 0b651c
--- a/src/cli/abrt-console-notification.sh
Matej Habrnal 0b651c
+++ b/src/cli/abrt-console-notification.sh
Matej Habrnal 0b651c
@@ -1,21 +1,39 @@
Matej Habrnal 0b651c
+# If shell is not connect to a terminal, exit immediately, because this script
Matej Habrnal 0b651c
+# should print out ABRT's status and it is senseless to continue without
Matej Habrnal 0b651c
+# terminal.
Matej Habrnal 0b651c
+tty -s || exit 0
Matej Habrnal 0b651c
+
Matej Habrnal 0b651c
+# If $HOME is not set, a non human user is logging in to shell but this script
Matej Habrnal 0b651c
+# should provide information to human users, therefore exiting immediately
Matej Habrnal 0b651c
+# without showing the notification.
Matej Habrnal 0b651c
+if [ -z "$HOME" ]; then
Matej Habrnal 0b651c
+    exit 0
Matej Habrnal 0b651c
+fi
Matej Habrnal 0b651c
+
Matej Habrnal 0b651c
+if [ -z "$ABRT_DEBUG_LOG" ]; then
Matej Habrnal 0b651c
+    ABRT_DEBUG_LOG="/dev/null"
Matej Habrnal 0b651c
+fi
Matej Habrnal 0b651c
+
Matej Habrnal 0b651c
 LPATHDIR="$HOME/.cache/abrt"
Matej Habrnal 0b651c
 SINCEFILE="$LPATHDIR/lastnotification"
Matej Habrnal 0b651c
 
Matej Habrnal 0b651c
 if [ ! -f "$LPATHDIR" ]; then
Matej Habrnal 0b651c
-    mkdir -p "$LPATHDIR"
Matej Habrnal 0b651c
+    # It might happen that user doesn't have write access on his home.
Matej Habrnal 0b651c
+    mkdir -p "$LPATHDIR" &> "$ABRT_DEBUG_LOG" || exit 0
Matej Habrnal 0b651c
 fi
Matej Habrnal 0b651c
 
Matej Habrnal 0b651c
-TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> /dev/null`
Matej Habrnal 0b651c
+TMPPATH=`mktemp --tmpdir="$LPATHDIR" lastnotification.XXXXXXXX 2> "$ABRT_DEBUG_LOG"`
Matej Habrnal 0b651c
 
Matej Habrnal 0b651c
 SINCE=0
Matej Habrnal 0b651c
 if [ -f "$SINCEFILE" ]; then
Matej Habrnal 0b651c
-    SINCE=`cat $SINCEFILE 2> /dev/null`
Matej Habrnal 0b651c
+    SINCE=`cat $SINCEFILE 2> "$ABRT_DEBUG_LOG"`
Matej Habrnal 0b651c
 fi
Matej Habrnal 0b651c
 
Matej Habrnal 0b651c
 # always update the lastnotification
Matej Habrnal 0b651c
 if [ -f "$TMPPATH" ]; then
Matej Habrnal 0b651c
-    date +%s > "$TMPPATH"
Matej Habrnal 0b651c
-    mv -f "$TMPPATH" "$SINCEFILE"
Matej Habrnal 0b651c
+    # Be quite in case of errors and don't scare users by strange error messages.
Matej Habrnal 0b651c
+    date +%s > "$TMPPATH" 2> "$ABRT_DEBUG_LOG"
Matej Habrnal 0b651c
+    mv -f "$TMPPATH" "$SINCEFILE" &> "$ABRT_DEBUG_LOG"
Matej Habrnal 0b651c
 fi
Matej Habrnal 0b651c
 
Matej Habrnal 0b651c
-abrt-cli status --since="$SINCE" 2> /dev/null
Matej Habrnal 0b651c
+abrt-cli status --since="$SINCE" 2> "$ABRT_DEBUG_LOG"
Matej Habrnal 0b651c
-- 
Matej Habrnal 0b651c
1.9.3
Matej Habrnal 0b651c