386BSD 0.1 development
[unix-history] / usr / othersrc / public / perl-4.019 / lib / pwd.pl
CommitLineData
3a01d88c
WJ
1;# pwd.pl - keeps track of current working directory in PWD environment var
2;#
3;# $Header: pwd.pl,v 4.0 91/03/20 01:26:03 lwall Locked $
4;#
5;# $Log: pwd.pl,v $
6;# Revision 4.0 91/03/20 01:26:03 lwall
7;# 4.0 baseline.
8;#
9;# Revision 3.0.1.2 91/01/11 18:09:24 lwall
10;# patch42: some .pl files were missing their trailing 1;
11;#
12;# Revision 3.0.1.1 90/08/09 04:01:24 lwall
13;# patch19: Initial revision
14;#
15;#
16;# Usage:
17;# require "pwd.pl";
18;# &initpwd;
19;# ...
20;# &chdir($newdir);
21
22package pwd;
23
24sub main'initpwd {
25 if ($ENV{'PWD'}) {
26 local($dd,$di) = stat('.');
27 local($pd,$pi) = stat($ENV{'PWD'});
28 return if $di == $pi && $dd == $pd;
29 }
30 chop($ENV{'PWD'} = `pwd`);
31}
32
33sub main'chdir {
34 local($newdir) = shift;
35 if (chdir $newdir) {
36 if ($newdir =~ m#^/#) {
37 $ENV{'PWD'} = $newdir;
38 }
39 else {
40 local(@curdir) = split(m#/#,$ENV{'PWD'});
41 @curdir = '' unless @curdir;
42 foreach $component (split(m#/#, $newdir)) {
43 next if $component eq '.';
44 pop(@curdir),next if $component eq '..';
45 push(@curdir,$component);
46 }
47 $ENV{'PWD'} = join('/',@curdir) || '/';
48 }
49 }
50 else {
51 0;
52 }
53}
54
551;