OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-re Date: 10-Oct-2003 20:07:44
Branch: HEAD Handle: 2003101019074400
Modified files:
openpkg-re openpkg-dev
Log:
Ok, finally commit my "cd -" and "cd +" patches. This allows you to go
back arbitrary directory steps (not just a single one as the usual "cd
-" does) and even allows you to undo the going back with "cd +" in case
you went back too much. This is a very convinient functionality
if you have to switch forth and back between directories.
Summary:
Revision Changes Path
1.144 +38 -7 openpkg-re/openpkg-dev
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-re/openpkg-dev
============================================================================
$ cvs diff -u -r1.143 -r1.144 openpkg-dev
--- openpkg-re/openpkg-dev 2 Oct 2003 14:41:00 -0000 1.143
+++ openpkg-re/openpkg-dev 10 Oct 2003 18:07:44 -0000 1.144
@@ -672,17 +672,48 @@
}
# prompt to indicate openpkg-dev bash environment
+ declare -a DIRSTACKREV=()
cd () {
- if [ ".\$1" = . ]; then
- if [ ".\${OPENPKG_SPEC}" = . ]; then
- workdir="\${OPENPKG_WORK}"
+ if [ ".\$1" = .- ]; then
+ # go to previous working directory on forward directory stack
+ # and move this directory onto the reverse directory stack
+ if [ \${#DIRSTACK[*]} -gt 1 ]; then
+ workdir="\${DIRSTACK[0]}"
+ DIRSTACKREV[\${#DIRSTACKREV[*]}]="\${workdir}"
+ popd >/dev/null
+ else
+ echo "cd: no more previous working directories on forward directory
stack" 1>&2
+ return 1
+ fi
+ elif [ ".\$1" = .+ ]; then
+ # go to previous working directory on reverse directory stack
+ # and move this directory onto the forward directory stack
+ if [ \${#DIRSTACKREV[*]} -gt 0 ]; then
+ local i=\$((\${#DIRSTACKREV[*]} - 1))
+ eval "pushd \${DIRSTACKREV[\$i]} >/dev/null"
+ unset DIRSTACKREV[\$i]
else
- workdir="\`command \${OPENPKG_WORK}/re/openpkg-dev package -query
workdir \${OPENPKG_SPEC}\`"
+ echo "cd: no more previous working directories on reverse directory
stack" 1>&2
+ return 1
fi
else
- workdir="\$1"
+ # go to next working directory
+ # and move this directory onto the forward directory stack
+ if [ ".\$1" = . ]; then
+ if [ ".\${OPENPKG_SPEC}" = . ]; then
+ workdir="\${OPENPKG_WORK}"
+ else
+ workdir="\`command \${OPENPKG_WORK}/re/openpkg-dev package
-query workdir \${OPENPKG_SPEC}\`"
+ fi
+ else
+ workdir="\$1"
+ fi
+ pushd \${workdir} >/dev/null
+ if [ \${#DIRSTACK[*]} -ge 2 -a \${DIRSTACK[0]} = \${DIRSTACK[1]} ]; then
+ popd >/dev/null
+ fi
+ DIRSTACKREV=()
fi
- builtin cd \${workdir}
P=\`command \${OPENPKG_WORK}/re/openpkg-dev package\`
# P holds detection
@@ -779,7 +810,7 @@
fi
fi
# E has ultimate content
-
+
CD_FUNC_IX=""
if [ ".\$CD_FUNC_PX" != . ]; then
CD_FUNC_IX="\${CD_FUNC_IX}\${CD_FUNC_IX:+ }\${CD_FUNC_PX}"
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]