diff --git a/T/T b/T/T index f221923..71456ce 100755 --- a/T/T +++ b/T/T @@ -120,6 +120,7 @@ B(1), B(1) =cut find_tmp_dir() { + # Search for .tmp in all parent dirs dir="$1" if [ -d "$1"/.tmp ] ; then echo "$1"/.tmp @@ -134,73 +135,68 @@ find_tmp_dir() { fi } -tmpdir="$(find_tmp_dir .)" +oldversion() { + # Find $oldversion of $name + local tmpdir="$1" + local name="$2" + local oldversion="$3" + find "$tmpdir" -name "$name"-'[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]?[0-9][0-9]:[0-9][0-9]:[0-9][0-9]-[0-9]*' | + sort | + tail -n $oldversion | + head -n 1 +} + +#debug_log=/tmp/T-debug +debug_log=/dev/null + +tmpdir=$(find_tmp_dir .) mkdir -p "$tmpdir" -T_DIR="$tmpdir" +case "$1" in + (-[0-9]*) oldversion=${1:1} + shift + ;; +esac -#DEBUG_LOG=/tmp/T-debug -DEBUG_LOG=/dev/null - -if echo $1 | egrep '^-[0-9]+$' >/dev/null; then - T_BACK_NO=$(echo $1 | sed -e 's:-::') - shift - if [ -z "$1" ]; then - # No filename given. Default = tempfile - T_NO_SLASH=tempfile - else - # Map / to __ to avoid creating dirs in ~/.tmp - T_NO_SLASH=$(echo $1 | sed -e 's:/:__:g') - fi - T_TEMPFIL=$T_DIR/$T_NO_SLASH - T_BACK_FILENAME=$(find $T_DIR -name "$T_NO_SLASH"-'[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]?[0-9][0-9]:[0-9][0-9]:[0-9][0-9]-[0-9]*' \ - | sort | tail -n $T_BACK_NO | head -n 1) - if [ -z "$T_BACK_FILENAME" ]; then - T_TEMPFIL=$T_DIR/$T_NO_SLASH - else - T_TEMPFIL=$T_BACK_FILENAME - fi +if [ -z "$1" ]; then + name=tempfile else - if [ -z "$1" ]; then - # No filename given. Default = tempfile - T_TEMPFIL=$T_DIR/tempfile - else - # Map / to __ to avoid creating dirs in ~/.tmp - T_NO_SLASH=$(echo $1 | sed -e 's:/:__:g') - T_TEMPFIL=$T_DIR/$T_NO_SLASH - fi + name=$(echo "$1" | sed -e 's:/:__:g') fi +if [ -z "$oldversion" ]; then + readpathname="$tmpdir/$name" + writename="$name"-`date +"%Y-%m-%dT%H:%M:%S"`-$$ + writepathname="$tmpdir/$writename" +else + readpathname=$(oldversion "$tmpdir" "$name" "$oldversion") + writepathname="$readpathname" +fi -T_NY_FIL="$T_TEMPFIL"-`date +"%Y-%m-%dT%H:%M:%S"`-$$ - -mkdir $T_DIR 2>/dev/null +echo "$tmpdir $pathname $name $oldversion" >> $debug_log if tty -s ; then - # STDIN is terminal - # Don't care what STDOUT is - # T | cat => T= cat file - # T => T= cat file - echo cat "$T_TEMPFIL" >> $DEBUG_LOG - cat "$T_TEMPFIL" + # STDIN is terminal + # Don't care what STDOUT is + # T | cat => T= cat file + # T => T= cat file + echo cat "$readpathname" >> $debug_log + cat "$readpathname" else - # STDIN redir'ed - - if [ -t 1 ] ; then - # STDOUT = terminal - # cat | T => T= >file - echo cat '>' "$T_NY_FIL" >> $DEBUG_LOG - cat > "$T_NY_FIL" - else - # STDOUT redir'ed - # cat | T | cat => T= tee file - echo tee "$T_NY_FIL" >> $DEBUG_LOG - tee "$T_NY_FIL" - fi - - # Remove hardlink to most recent file - rm "$T_TEMPFIL" 2> /dev/null - - # make a hardlink to the most recent file - ln "$T_NY_FIL" "$T_TEMPFIL" + if [ -t 1 ] ; then + # STDOUT = terminal + # cat | T => T= >file + echo cat '>' "$writepathname" >> $debug_log + cat > "$writepathname" + else + # STDOUT redir'ed + # cat | T | cat => T= tee file + echo tee "$writepathname" >> $debug_log + tee "$writepathname" + fi + if [ -z "$oldversion" ]; then + echo ln -s "$writename" "$readpathname" >> $debug_log + # Replace symlink to most recent file + ln -fs "$writename" "$readpathname" + fi fi diff --git a/plotpipe/README b/plotpipe/README index 7bdac30..9fb3c2b 100644 --- a/plotpipe/README +++ b/plotpipe/README @@ -26,11 +26,11 @@ column, the line number is treated as the x-axis. Examples: seq 1 100 | plotpipe - seq 1 100 | shuf | plotpipe + seq 1 100 | shuf | plotpipe --smooth 10 --log y paste <(seq 1 100) <(seq 1 100) <(seq 1 100 | shuf) | plotpipe (echo "#Title"; echo "#Subtitle"; - printf "Column1\tColumn2\tColumn3"; - paste <(seq 1 100) <(seq 1 100) <(seq 1 100 | shuf) ) | plotpipe + printf "Column 1\tColumn 2\tColumn 3\n"; + paste <(seq 1 100) <(seq 51 150) <(seq 1 100 | shuf) ) | plotpipe Copyright (C) 2020-2021 Ole Tange, http://ole.tange.dk and Free Software Foundation, Inc.