X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCwd.pm;h=7f8ef6543b9ed0eda68135ef78ab4c5fa6a58be3;hb=3b0db4f96671dacfd3421850abb588b84e2ce6da;hp=24ad1e2969e25e6288f670f34cfc221dac42f49d;hpb=680d0beb650bdbbd6136e2939d2d4288dac7df6c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/Cwd.pm b/lib/Cwd.pm index 24ad1e2..7f8ef65 100644 --- a/lib/Cwd.pm +++ b/lib/Cwd.pm @@ -192,15 +192,20 @@ foreach my $try (qw(/bin/pwd /usr/bin/pwd)) { last; } } -$pwd_cmd ||= 'pwd'; +unless ($pwd_cmd) { + if (-x '/QOpenSys/bin/pwd') { # OS/400 PASE. + $pwd_cmd = '/QOpenSys/bin/pwd' ; + } else { + # Isn't this wrong? _backtick_pwd() will fail if somenone has + # pwd in their path but it is not /bin/pwd or /usr/bin/pwd? + # See [perl #16774]. --jhi + $pwd_cmd = 'pwd'; + } +} # The 'natural and safe form' for UNIX (pwd may be setuid root) sub _backtick_pwd { - local $ENV{PATH}; - local $ENV{IFS}; - local $ENV{CDPATH}; - local $ENV{ENV}; - local $ENV{BASH_ENV}; + local @ENV{qw(PATH IFS CDPATH ENV BASH_ENV)}; my $cwd = `$pwd_cmd`; # Belt-and-suspenders in case someone said "undef $/". local $/ = "\n";