summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/File/Which.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/File/Which.pm')
-rw-r--r--Master/tlpkg/tlperl/lib/File/Which.pm254
1 files changed, 0 insertions, 254 deletions
diff --git a/Master/tlpkg/tlperl/lib/File/Which.pm b/Master/tlpkg/tlperl/lib/File/Which.pm
deleted file mode 100644
index 69e336b03bd..00000000000
--- a/Master/tlpkg/tlperl/lib/File/Which.pm
+++ /dev/null
@@ -1,254 +0,0 @@
-package File::Which;
-
-use 5.004;
-use strict;
-use Exporter ();
-use File::Spec ();
-
-use vars qw{$VERSION @ISA @EXPORT @EXPORT_OK};
-BEGIN {
- $VERSION = '1.09';
- @ISA = 'Exporter';
- @EXPORT = 'which';
- @EXPORT_OK = 'where';
-}
-
-use constant IS_VMS => ($^O eq 'VMS');
-use constant IS_MAC => ($^O eq 'MacOS');
-use constant IS_DOS => ($^O eq 'MSWin32' or $^O eq 'dos' or $^O eq 'os2');
-
-# For Win32 systems, stores the extensions used for
-# executable files
-# For others, the empty string is used
-# because 'perl' . '' eq 'perl' => easier
-my @PATHEXT = ('');
-if ( IS_DOS ) {
- # WinNT. PATHEXT might be set on Cygwin, but not used.
- if ( $ENV{PATHEXT} ) {
- push @PATHEXT, split ';', $ENV{PATHEXT};
- } else {
- # Win9X or other: doesn't have PATHEXT, so needs hardcoded.
- push @PATHEXT, qw{.com .exe .bat};
- }
-} elsif ( IS_VMS ) {
- push @PATHEXT, qw{.exe .com};
-}
-
-sub which {
- my ($exec) = @_;
-
- return undef unless $exec;
-
- my $all = wantarray;
- my @results = ();
-
- # check for aliases first
- if ( IS_VMS ) {
- my $symbol = `SHOW SYMBOL $exec`;
- chomp($symbol);
- unless ( $? ) {
- return $symbol unless $all;
- push @results, $symbol;
- }
- }
- if ( IS_MAC ) {
- my @aliases = split /\,/, $ENV{Aliases};
- foreach my $alias ( @aliases ) {
- # This has not been tested!!
- # PPT which says MPW-Perl cannot resolve `Alias $alias`,
- # let's just hope it's fixed
- if ( lc($alias) eq lc($exec) ) {
- chomp(my $file = `Alias $alias`);
- last unless $file; # if it failed, just go on the normal way
- return $file unless $all;
- push @results, $file;
- # we can stop this loop as if it finds more aliases matching,
- # it'll just be the same result anyway
- last;
- }
- }
- }
-
- my @path = File::Spec->path;
- if ( IS_DOS or IS_VMS or IS_MAC ) {
- unshift @path, File::Spec->curdir;
- }
-
- foreach my $base ( map { File::Spec->catfile($_, $exec) } @path ) {
- for my $ext ( @PATHEXT ) {
- my $file = $base.$ext;
-
- # We don't want dirs (as they are -x)
- next if -d $file;
-
- if (
- # Executable, normal case
- -x _
- or (
- # MacOS doesn't mark as executable so we check -e
- IS_MAC
- ||
- (
- IS_DOS
- and
- grep {
- $file =~ /$_\z/i
- } @PATHEXT[1..$#PATHEXT]
- )
- # DOSish systems don't pass -x on
- # non-exe/bat/com files. so we check -e.
- # However, we don't want to pass -e on files
- # that aren't in PATHEXT, like README.
- and -e _
- )
- ) {
- return $file unless $all;
- push @results, $file;
- }
- }
- }
-
- if ( $all ) {
- return @results;
- } else {
- return undef;
- }
-}
-
-sub where {
- # force wantarray
- my @res = which($_[0]);
- return @res;
-}
-
-1;
-
-__END__
-
-=pod
-
-=head1 NAME
-
-File::Which - Portable implementation of the `which' utility
-
-=head1 SYNOPSIS
-
- use File::Which; # exports which()
- use File::Which qw(which where); # exports which() and where()
-
- my $exe_path = which('perldoc');
-
- my @paths = where('perl');
- - Or -
- my @paths = which('perl'); # an array forces search for all of them
-
-=head1 DESCRIPTION
-
-C<File::Which> was created to be able to get the paths to executable programs
-on systems under which the `which' program wasn't implemented in the shell.
-
-C<File::Which> searches the directories of the user's C<PATH> (as returned by
-C<File::Spec-E<gt>path()>), looking for executable files having the name
-specified as a parameter to C<which()>. Under Win32 systems, which do not have a
-notion of directly executable files, but uses special extensions such as C<.exe>
-and C<.bat> to identify them, C<File::Which> takes extra steps to assure that
-you will find the correct file (so for example, you might be searching for
-C<perl>, it'll try F<perl.exe>, F<perl.bat>, etc.)
-
-=head1 Steps Used on Win32, DOS, OS2 and VMS
-
-=head2 Windows NT
-
-Windows NT has a special environment variable called C<PATHEXT>, which is used
-by the shell to look for executable files. Usually, it will contain a list in
-the form C<.EXE;.BAT;.COM;.JS;.VBS> etc. If C<File::Which> finds such an
-environment variable, it parses the list and uses it as the different
-extensions.
-
-=head2 Windows 9x and other ancient Win/DOS/OS2
-
-This set of operating systems don't have the C<PATHEXT> variable, and usually
-you will find executable files there with the extensions C<.exe>, C<.bat> and
-(less likely) C<.com>. C<File::Which> uses this hardcoded list if it's running
-under Win32 but does not find a C<PATHEXT> variable.
-
-=head2 VMS
-
-Same case as Windows 9x: uses C<.exe> and C<.com> (in that order).
-
-=head1 Functions
-
-=head2 which($short_exe_name)
-
-Exported by default.
-
-C<$short_exe_name> is the name used in the shell to call the program (for
-example, C<perl>).
-
-If it finds an executable with the name you specified, C<which()> will return
-the absolute path leading to this executable (for example, F</usr/bin/perl> or
-F<C:\Perl\Bin\perl.exe>).
-
-If it does I<not> find the executable, it returns C<undef>.
-
-If C<which()> is called in list context, it will return I<all> the
-matches.
-
-=head2 where($short_exe_name)
-
-Not exported by default.
-
-Same as C<which($short_exe_name)> in array context. Same as the
-C<`where'> utility, will return an array containing all the path names
-matching C<$short_exe_name>.
-
-=head1 BUGS AND CAVEATS
-
-Not tested on VMS or MacOS, although there is platform specific code
-for those. Anyone who haves a second would be very kind to send me a
-report of how it went.
-
-File::Spec adds the current directory to the front of PATH if on
-Win32, VMS or MacOS. I have no knowledge of those so don't know if the
-current directory is searced first or not. Could someone please tell
-me?
-
-=head1 SUPPORT
-
-Bugs should be reported via the CPAN bug tracker at
-
-L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=File-Which>
-
-For other issues, contact the maintainer.
-
-=head1 AUTHOR
-
-Adam Kennedy E<lt>adamk@cpan.orgE<gt>
-
-Per Einar Ellefsen E<lt>pereinar@cpan.orgE<gt>
-
-Originated in F<modperl-2.0/lib/Apache/Build.pm>. Changed for use in DocSet
-(for the mod_perl site) and Win32-awareness by me, with slight modifications
-by Stas Bekman, then extracted to create C<File::Which>.
-
-Version 0.04 had some significant platform-related changes, taken from
-the Perl Power Tools C<`which'> implementation by Abigail with
-enhancements from Peter Prymmer. See
-L<http://www.perl.com/language/ppt/src/which/index.html> for more
-information.
-
-=head1 COPYRIGHT
-
-Copyright 2002 Per Einar Ellefsen.
-
-Some parts copyright 2009 Adam Kennedy.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-L<File::Spec>, L<which(1)>, Perl Power Tools:
-L<http://www.perl.com/language/ppt/index.html>.
-
-=cut