/js/lib/Socket.IO-node/support/expresso/deps/jscoverage/js/config/fastcwd.pl
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;