xref: /netbsd-src/bin/sh/funcs/popd (revision 0827e1f954e8b2f9629bd2144f99e35ea6d92a54)
1#	$NetBSD: popd,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#	@(#)popd	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