From c99883c2dceea4df797bb9f82c755a62cd4598d4 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 19 Jan 2024 10:14:52 -0800 Subject: Remove repetitive code from cdlog.swap. * cdlog.sh (cdlog.args): New function. (cdlog.swap): Use array to do swap in one case. --- cdlog.sh | 68 +++++++++++++++++++++++----------------------------------------- 1 file changed, 24 insertions(+), 44 deletions(-) diff --git a/cdlog.sh b/cdlog.sh index dfb51c2..645c483 100644 --- a/cdlog.sh +++ b/cdlog.sh @@ -21,6 +21,16 @@ cdlog.nicks() w=$c4 } +# Set state from args +cdlog.args() +{ + c1=$1; c2=$2; c3=$3 + c4=$4; c5=$5; c6=$6 + c7=$7; c8=$8; c9=$8 + + cdlog.nicks +} + # Change to directory: this is aliased to cd command. cdlog.chdir() { @@ -45,55 +55,25 @@ cdlog.swap() { local cur=$PWD local n=1 + local d=("" "$c1" "$c2" "$c3" "$c4" "$c5" "$c6" "$c7" "$c8" "$c9") + + unset d[0] if [ $# -eq 1 ]; then n=$1 fi case $n in - ( 1 | x ) - if command cd "$c1" ; then - c1=$cur - fi - ;; - ( 2 | y ) - if command cd "$c2" ; then - c2=$cur - fi - ;; - ( 3 | z ) - if command cd "$c3" ; then - c3=$cur - fi - ;; - ( 4 | w ) - if command cd "$c4" ; then - c4=$cur - fi - ;; - ( 5 ) - if command cd "$c5" ; then - c5=$cur - fi - ;; - ( 6 ) - if command cd "$c6" ; then - c6=$cur - fi - ;; - ( 7 ) - if command cd "$c7" ; then - c7=$cur - fi - ;; - ( 8 ) - if command cd "$c8" ; then - c8=$cur - fi - ;; - ( 9 ) - if command cd "$c9" ; then - c9=$cur + ( x ) n = 1 ;; + ( y ) n = 2 ;; + ( z ) n = 3 ;; + ( w ) n = 4 ;; + esac + + case $n in + ( [1-9] ) + if command cd "${d[$n]}" ; then + d[$n]=$cur fi ;; ( * ) @@ -101,7 +81,7 @@ cdlog.swap() ;; esac - cdlog.nicks + cdlog.args "${d[@]}" } # Change to most recent diretory in cdlog and remove it -- cgit v1.2.3