1N/A# By Brandon S. Allbery
1N/A#
1N/A# This library is no longer being maintained, and is included for backward
1N/A# compatibility with Perl 4 programs which may require it.
1N/A#
1N/A# In particular, this should not be used as an example of modern Perl
1N/A# programming techniques.
1N/A#
1N/A# Suggested alternative: Cwd
1N/A#
1N/A#
1N/A# Usage: $cwd = &getcwd;
1N/A
1N/Asub getcwd
1N/A{
1N/A local($dotdots, $cwd, @pst, @cst, $dir, @tst);
1N/A
1N/A unless (@cst = stat('.'))
1N/A {
1N/A warn "stat(.): $!";
1N/A return '';
1N/A }
1N/A $cwd = '';
1N/A do
1N/A {
1N/A $dotdots .= '/' if $dotdots;
1N/A $dotdots .= '..';
1N/A @pst = @cst;
1N/A unless (opendir(getcwd'PARENT, $dotdots)) #'))
1N/A {
1N/A warn "opendir($dotdots): $!";
1N/A return '';
1N/A }
1N/A unless (@cst = stat($dotdots))
1N/A {
1N/A warn "stat($dotdots): $!";
1N/A closedir(getcwd'PARENT); #');
1N/A return '';
1N/A }
1N/A if ($pst[$[] == $cst[$[] && $pst[$[ + 1] == $cst[$[ + 1])
1N/A {
1N/A $dir = '';
1N/A }
1N/A else
1N/A {
1N/A do
1N/A {
1N/A unless (defined ($dir = readdir(getcwd'PARENT))) #'))
1N/A {
1N/A warn "readdir($dotdots): $!";
1N/A closedir(getcwd'PARENT); #');
1N/A return '';
1N/A }
1N/A unless (@tst = lstat("$dotdots/$dir"))
1N/A {
1N/A # warn "lstat($dotdots/$dir): $!";
1N/A # closedir(getcwd'PARENT); #');
1N/A # return '';
1N/A }
1N/A }
1N/A while ($dir eq '.' || $dir eq '..' || $tst[$[] != $pst[$[] ||
1N/A $tst[$[ + 1] != $pst[$[ + 1]);
1N/A }
1N/A $cwd = "$dir/$cwd";
1N/A closedir(getcwd'PARENT); #');
1N/A } while ($dir ne '');
1N/A chop($cwd);
1N/A $cwd;
1N/A}
1N/A
1N/A1;