diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2024-01-19 10:14:52 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2024-01-19 10:14:52 -0800 |
commit | c99883c2dceea4df797bb9f82c755a62cd4598d4 (patch) | |
tree | b2da255e0a3885cc72b41be0309c6e0c97501caa | |
parent | dffe701e9d9091c25aea1dec5859a8619d1e8ee6 (diff) | |
download | cdlog-c99883c2dceea4df797bb9f82c755a62cd4598d4.tar.gz cdlog-c99883c2dceea4df797bb9f82c755a62cd4598d4.tar.bz2 cdlog-c99883c2dceea4df797bb9f82c755a62cd4598d4.zip |
Remove repetitive code from cdlog.swap.
* cdlog.sh (cdlog.args): New function.
(cdlog.swap): Use array to do swap in
one case.
-rw-r--r-- | cdlog.sh | 68 |
1 files changed, 24 insertions, 44 deletions
@@ -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 |