/usr/lib/tclx8.4/pushd.tcl is in tclx8.4 8.4.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #
# pushd.tcl --
#
# C-shell style directory stack procs.
#
#------------------------------------------------------------------------------
# Copyright 1992-1999 Karl Lehenbauer and Mark Diekhans.
#
# Permission to use, copy, modify, and distribute this software and its
# documentation for any purpose and without fee is hereby granted, provided
# that the above copyright notice appear in all copies. Karl Lehenbauer and
# Mark Diekhans make no representations about the suitability of this
# software for any purpose. It is provided "as is" without express or
# implied warranty.
#------------------------------------------------------------------------------
# $Id: pushd.tcl,v 1.2 2005/11/25 18:18:55 hobbs Exp $
#------------------------------------------------------------------------------
#
#@package: TclX-directory_stack pushd popd dirs
global TCLXENV(dirPushList)
set TCLXENV(dirPushList) ""
proc pushd {{new ""}} {
global TCLXENV
set current [pwd]
if {[string length $new]} {
set dirs [glob -nocomplain $new]
set count [llength $dirs]
if {$count == 0} {
error "no such directory: $new"
} elseif {$count != 1} {
error "ambiguous directory: $new: [join $dirs {, }]"
}
cd [lindex $dirs 0]
lvarpush TCLXENV(dirPushList) $current
} else {
if [lempty $TCLXENV(dirPushList)] {
error "directory stack empty"
}
cd [lindex $TCLXENV(dirPushList) 0]
lvarpop TCLXENV(dirPushList)
lvarpush TCLXENV(dirPushList) $current
}
return [pwd]
}
proc popd {} {
global TCLXENV
if {[lempty $TCLXENV(dirPushList)]} {
error "directory stack empty"
}
cd [lvarpop TCLXENV(dirPushList)]
return [pwd]
}
proc dirs {} {
global TCLXENV
return [linsert $TCLXENV(dirPushList) 0 [pwd]]
}
|