1# $NetBSD: pushd,v 1.9 2023/04/07 10:34:13 kre Exp $ 2# Copyright (c) 1991, 1993 3# The Regents of the University of California. All rights reserved. 4# 5# This code is derived from software contributed to Berkeley by 6# Kenneth Almquist. 7# 8# Redistribution and use in source and binary forms, with or without 9# modification, are permitted provided that the following conditions 10# are met: 11# 1. Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# 2. Redistributions in binary form must reproduce the above copyright 14# notice, this list of conditions and the following disclaimer in the 15# documentation and/or other materials provided with the distribution. 16# 17# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27# SUCH DAMAGE. 28# 29# @(#)pushd 8.2 (Berkeley) 5/4/95 30 31# pushd, popd, and dirs --- written by Chris Bertin 32# Pixel Computer Inc. ...!wjh12!pixel!pixutl!chris 33# as modified by Patrick Elam of GTRI and Kenneth Almquist at UW 34 35pushd () { 36 SAVE=`pwd` 37 if [ "$1" = "" ] 38 then if [ "$DSTACK" = "" ] 39 then echo "pushd: directory stack empty." 40 return 1 41 fi 42 set $DSTACK 43 cd $1 || return 44 shift 1 45 DSTACK="$*" 46 else cd $1 > /dev/null || return 47 fi 48 DSTACK="$SAVE $DSTACK" 49 dirs 50} 51 52popd () { 53 if [ "$DSTACK" = "" ] 54 then echo "popd: directory stack empty." 55 return 1 56 fi 57 set $DSTACK 58 cd $1 59 shift 60 DSTACK=$* 61 dirs 62} 63 64dirs () { 65 echo "`pwd` $DSTACK" 66 return 0 67} 68