home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CLIX - Fazer Clix Custa Nix
/
CLIX-CD.cdr
/
mac
/
lib
/
pwd.pl
< prev
next >
Wrap
Text File
|
1997-05-18
|
1KB
|
75 lines
;# pwd.pl - keeps track of current working directory in PWD environment var
;#
;# $RCSfile: pwd.pl,v $$Revision: 1.2 $$Date: 1997/04/07 20:52:01 $
;#
;# $Log: pwd.pl,v $
;# Revision 1.2 1997/04/07 20:52:01 neeri
;# Synchronized with MacPerl 5.1.4a1
;#
;# Revision 1.1.1.1 1997/04/06 21:06:29 neeri
;# Import of Perl 5.002
;#
;#
;# Usage:
;# require "pwd.pl";
;# &initpwd;
;# ...
;# &chdir($newdir);
package pwd;
sub main'initpwd {
if ($^O eq 'MacOS') {
chop($ENV{'PWD'} = `pwd`);
return;
}
if ($ENV{'PWD'}) {
local($dd,$di) = stat('.');
local($pd,$pi) = stat($ENV{'PWD'});
if ($di != $pi || $dd != $pd) {
chop($ENV{'PWD'} = `pwd`);
}
}
else {
chop($ENV{'PWD'} = `pwd`);
}
if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|) {
local($pd,$pi) = stat($2);
local($dd,$di) = stat($1);
if ($di == $pi && $dd == $pd) {
$ENV{'PWD'}="$2$3";
}
}
}
sub main'chdir {
local($newdir) = shift;
if ($^O eq 'MacOS') {
if (chdir $newdir) {
chop($ENV{'PWD'} = `pwd`);
}
return;
}
$newdir =~ s|/{2,}|/|g;
if (chdir $newdir) {
if ($newdir =~ m#^/#) {
$ENV{'PWD'} = $newdir;
}
else {
local(@curdir) = split(m#/#,$ENV{'PWD'});
@curdir = '' unless @curdir;
foreach $component (split(m#/#, $newdir)) {
next if $component eq '.';
pop(@curdir),next if $component eq '..';
push(@curdir,$component);
}
$ENV{'PWD'} = join('/',@curdir) || '/';
}
}
else {
0;
}
}
1;