bugfix: reopen tty if $STY is empty
[muttjump] / muttjump
index 4ba392f100ebafda2be6107c153ac8a1740458e5..4a1fd9324e32d400d5a37d7aab463cfa0382512b 100755 (executable)
--- a/muttjump
+++ b/muttjump
@@ -36,9 +36,6 @@ MUTTJUMP_USE_SCREEN=${MUTTJUMP_USE_SCREEN:-auto}
 #            for this to work!
 MUTTJUMP_MULTI_SCREEN_MODE=${MUTTJUMP_MULTI_SCREEN_MODE:-no}
 
-# name of the screen session (screen -S ...), leave blank for none
-MUTTJUMP_SCREEN_SESSION=${MUTTJUMP_SCREEN_SESSION:-}
-
 # function to create the screen window name from the full path of the mailbox
 if ! type MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE >/dev/null 2>&1 ; then
     function MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE () {
@@ -83,6 +80,15 @@ END
     exit 1
 }
 
+function reopen_tty () {
+    # Close message-stdin and open terminal-stdin instead.
+    # mutt behaves different if STDIN is no terminal
+    # TODO: Find cleaner solution (e.g. mutt command-line argument?)
+    exec 0<&-
+    term="/dev/$(ps -p$$ -otty=)"
+    exec < $term
+}
+
 
 # Check command-line arguments and STDIN
 search_header="Message-ID"
@@ -194,17 +200,16 @@ if [ "$MUTTJUMP_MULTI_SCREEN_MODE" = no ] ; then
 
     screen_opts=()
     if [ "$MUTTJUMP_USE_SCREEN" = yes ] ; then
-        [ -n "$STY" ] && screen_opts=("-X" "screen")
+        if [ -n "$STY" ] ; then
+            screen_opts=("-X" "screen")
+        else
+            reopen_tty
+        fi
         screen_window_name=$(MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE "$orig_maildir")
         screen_opts=("${screen_opts[@]}" "-t" "$screen_window_name")
     else
         SCREEN=""
-        # Close message-stdin and open terminal-stdin instead.
-        # mutt behaves different if STDIN is no terminal
-        # TODO: Find cleaner solution (e.g. mutt command-line argument?)
-        exec 0<&-
-        term="/dev/$(ps -p$$ -otty=)"
-        exec < $term
+        reopen_tty
     fi
 
     # start mutt, open original folder and jump to the original message
@@ -218,16 +223,6 @@ else
     fi
 
     screen_window_name=$(MUTTJUMP_SCREEN_WINDOW_NAME_MANGLE "$orig_maildir")
-    screen_opts=()
-    if [ -n "$MUTTJUMP_SCREEN_SESSION" ] ; then
-        screen_opts=("-S" "$MUTTJUMP_SCREEN_SESSION")
-        screen_opts_str="-S $(quote "$MUTTJUMP_SCREEN_SESSION")"
-    fi
-
-    $SCREEN "${screen_opts[@]}" -p "$screen_window_name" -X eval "select '$screen_window_name'" "stuff \"$jump_cmd\""
 
-    if [ $? != 0 ] ; then
-        die "You have to manually start a screen session with:
-$SCREEN $screen_opts_str -t $(quote "$screen_window_name") $MUTT -f $(quote "$orig_maildir")"
-    fi
+    $SCREEN -p "$screen_window_name" -X eval "select '$screen_window_name'" "stuff \"$jump_cmd\""
 fi

Benjamin Mako Hill || Want to submit a patch?