| line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
|
1
|
|
|
|
|
|
|
# By John Bazik |
|
2
|
|
|
|
|
|
|
# |
|
3
|
|
|
|
|
|
|
# This library is no longer being maintained, and is included for backward |
|
4
|
|
|
|
|
|
|
# compatibility with Perl 4 programs which may require it. |
|
5
|
|
|
|
|
|
|
# |
|
6
|
|
|
|
|
|
|
# In particular, this should not be used as an example of modern Perl |
|
7
|
|
|
|
|
|
|
# programming techniques. |
|
8
|
|
|
|
|
|
|
# |
|
9
|
|
|
|
|
|
|
# Suggested alternative: Cwd |
|
10
|
|
|
|
|
|
|
# |
|
11
|
|
|
|
|
|
|
# Usage: $cwd = &fastcwd; |
|
12
|
|
|
|
|
|
|
# |
|
13
|
|
|
|
|
|
|
# This is a faster version of getcwd. It's also more dangerous because |
|
14
|
|
|
|
|
|
|
# you might chdir out of a directory that you can't chdir back into. |
|
15
|
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
sub fastcwd { |
|
17
|
0
|
|
|
0
|
|
|
local($odev, $oino, $cdev, $cino, $tdev, $tino); |
|
18
|
0
|
|
|
|
|
|
local(@path, $path); |
|
19
|
0
|
|
|
|
|
|
local(*DIR); |
|
20
|
|
|
|
|
|
|
|
|
21
|
0
|
|
|
|
|
|
($cdev, $cino) = stat('.'); |
|
22
|
0
|
|
|
|
|
|
for (;;) { |
|
23
|
0
|
|
|
|
|
|
($odev, $oino) = ($cdev, $cino); |
|
24
|
0
|
|
|
|
|
|
chdir('..'); |
|
25
|
0
|
|
|
|
|
|
($cdev, $cino) = stat('.'); |
|
26
|
0
|
0
|
0
|
|
|
|
last if $odev == $cdev && $oino == $cino; |
|
27
|
0
|
|
|
|
|
|
opendir(DIR, '.'); |
|
28
|
0
|
|
|
|
|
|
for (;;) { |
|
29
|
0
|
|
|
|
|
|
$_ = readdir(DIR); |
|
30
|
0
|
0
|
|
|
|
|
next if $_ eq '.'; |
|
31
|
0
|
0
|
|
|
|
|
next if $_ eq '..'; |
|
32
|
|
|
|
|
|
|
|
|
33
|
0
|
0
|
|
|
|
|
last unless $_; |
|
34
|
0
|
|
|
|
|
|
($tdev, $tino) = lstat($_); |
|
35
|
0
|
0
|
0
|
|
|
|
last unless $tdev != $odev || $tino != $oino; |
|
36
|
|
|
|
|
|
|
} |
|
37
|
0
|
|
|
|
|
|
closedir(DIR); |
|
38
|
0
|
|
|
|
|
|
unshift(@path, $_); |
|
39
|
|
|
|
|
|
|
} |
|
40
|
0
|
|
|
|
|
|
chdir($path = '/' . join('/', @path)); |
|
41
|
0
|
|
|
|
|
|
$path; |
|
42
|
|
|
|
|
|
|
} |
|
43
|
|
|
|
|
|
|
1; |