|
@@ -18,7 +18,8 @@ LOG_DIR="$LOG_ROOT"/"$PROG"/"$SUBPROG"/"$TIMESTAMP"
|
|
|
|
|
|
mkdir -p "$LOG_DIR"
|
|
|
|
|
|
-PTY="$LOG_DIR"/pty
|
|
|
+PTYA="$LOG_DIR"/ptyA
|
|
|
+PTYB="$LOG_DIR"/ptyB
|
|
|
OUT="$LOG_DIR"/stdout
|
|
|
ERR="$LOG_DIR"/stderr
|
|
|
DAT="$LOG_DIR"/dat
|
|
@@ -38,5 +39,18 @@ EOF
|
|
|
trap 'info' EXIT
|
|
|
|
|
|
exec 2> >(tee -a "$DAT" "$ERR")
|
|
|
-exec 1> >(tee -a "$DAT" "$OUT")
|
|
|
+if which socat 1>/dev/null 2>&1 && ! [ "$PROG" = "sudo" ]
|
|
|
+then
|
|
|
+ socat PTY,rawer,link="$PTYA" PTY,rawer,link="$PTYB" &
|
|
|
+ socat="$!"
|
|
|
+ for pty in "$PTYA" "$PTYB"
|
|
|
+ do
|
|
|
+ while ! [ -e "$pty" ]; do sleep 0.01; done
|
|
|
+ stty -F "$pty" rows "$LINES" cols "$COLUMNS"
|
|
|
+ done
|
|
|
+ tee -a "$DAT" "$OUT" 2>/dev/null < "$PTYB" &
|
|
|
+ exec 1> "$PTYA"
|
|
|
+else
|
|
|
+ exec 1> >(tee -a "$DAT" "$OUT")
|
|
|
+fi
|
|
|
"$@"
|