PageRenderTime 207ms CodeModel.GetById 81ms app.highlight 47ms RepoModel.GetById 74ms app.codeStats 0ms

/js/lib/Socket.IO-node/support/expresso/deps/jscoverage/js/config/fastcwd.pl

http://github.com/onedayitwillmake/RealtimeMultiplayerNodeJs
Perl | 66 lines | 26 code | 3 blank | 37 comment | 11 complexity | 670cac70316b9ccbd76366c054b55897 MD5 | raw file
 1#!perl5
 2#
 3# ***** BEGIN LICENSE BLOCK *****
 4# Version: MPL 1.1/GPL 2.0/LGPL 2.1
 5#
 6# The contents of this file are subject to the Mozilla Public License Version
 7# 1.1 (the "License"); you may not use this file except in compliance with
 8# the License. You may obtain a copy of the License at
 9# http://www.mozilla.org/MPL/
10#
11# Software distributed under the License is distributed on an "AS IS" basis,
12# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13# for the specific language governing rights and limitations under the
14# License.
15#
16# The Original Code is mozilla.org code.
17#
18# The Initial Developer of the Original Code is
19# Netscape Communications Corporation.
20# Portions created by the Initial Developer are Copyright (C) 1998
21# the Initial Developer. All Rights Reserved.
22#
23# Contributor(s):
24#
25# Alternatively, the contents of this file may be used under the terms of
26# either of the GNU General Public License Version 2 or later (the "GPL"),
27# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28# in which case the provisions of the GPL or the LGPL are applicable instead
29# of those above. If you wish to allow use of your version of this file only
30# under the terms of either the GPL or the LGPL, and not to allow others to
31# use your version of this file under the terms of the MPL, indicate your
32# decision by deleting the provisions above and replace them with the notice
33# and other provisions required by the GPL or the LGPL. If you do not delete
34# the provisions above, a recipient may use your version of this file under
35# the terms of any one of the MPL, the GPL or the LGPL.
36#
37# ***** END LICENSE BLOCK *****
38
39sub fastcwd {
40	local($odev, $oino, $cdev, $cino, $tdev, $tino);
41	local(@path, $path);
42	local(*DIR);
43
44	($cdev, $cino) = stat('.');
45	for (;;) {
46		($odev, $oino) = ($cdev, $cino);
47		chdir('..');
48		($cdev, $cino) = stat('.');
49		last if $odev == $cdev && $oino == $cino;
50		opendir(DIR, '.');
51		for (;;) {
52			$_ = readdir(DIR);
53			next if $_ eq '.';
54			next if $_ eq '..';
55
56			last unless $_;
57			($tdev, $tino) = lstat($_);
58			last unless $tdev != $odev || $tino != $oino;
59		}
60		closedir(DIR);
61		unshift(@path, $_);
62	}
63	chdir($path = '/' . join('/', @path));
64	$path;
65}
661;