Initial bulk commit for "Git on MSys"
[msysgit/historical-msysgit.git] / lib / perl5 / 5.6.1 / getcwd.pl
blobeca6ba1127ed159b1592db7e725c82dd81b1aa32
1 # By Brandon S. Allbery
3 # This library is no longer being maintained, and is included for backward
4 # compatibility with Perl 4 programs which may require it.
6 # In particular, this should not be used as an example of modern Perl
7 # programming techniques.
9 # Suggested alternative: Cwd
12 # Usage: $cwd = &getcwd;
14 sub getcwd
16 local($dotdots, $cwd, @pst, @cst, $dir, @tst);
18 unless (@cst = stat('.'))
20 warn "stat(.): $!";
21 return '';
23 $cwd = '';
26 $dotdots .= '/' if $dotdots;
27 $dotdots .= '..';
28 @pst = @cst;
29 unless (opendir(getcwd'PARENT, $dotdots)) #'))
31 warn "opendir($dotdots): $!";
32 return '';
34 unless (@cst = stat($dotdots))
36 warn "stat($dotdots): $!";
37 closedir(getcwd'PARENT); #');
38 return '';
40 if ($pst[$[] == $cst[$[] && $pst[$[ + 1] == $cst[$[ + 1])
42 $dir = '';
44 else
48 unless (defined ($dir = readdir(getcwd'PARENT))) #'))
50 warn "readdir($dotdots): $!";
51 closedir(getcwd'PARENT); #');
52 return '';
54 unless (@tst = lstat("$dotdots/$dir"))
56 # warn "lstat($dotdots/$dir): $!";
57 # closedir(getcwd'PARENT); #');
58 # return '';
61 while ($dir eq '.' || $dir eq '..' || $tst[$[] != $pst[$[] ||
62 $tst[$[ + 1] != $pst[$[ + 1]);
64 $cwd = "$dir/$cwd";
65 closedir(getcwd'PARENT); #');
66 } while ($dir ne '');
67 chop($cwd);
68 $cwd;