diff options
Diffstat (limited to 'bin/mpc.pl')
-rwxr-xr-x | bin/mpc.pl | 93 |
1 files changed, 59 insertions, 34 deletions
diff --git a/bin/mpc.pl b/bin/mpc.pl index 56dd7152891..3ce48b22888 100755 --- a/bin/mpc.pl +++ b/bin/mpc.pl @@ -14,7 +14,6 @@ eval '(exit $?0)' && eval 'exec perl -w -S $0 ${1+"$@"}' use strict; use Cwd; -use Config; use File::Basename; if ( $^O eq 'VMS' ) { @@ -22,7 +21,7 @@ if ( $^O eq 'VMS' ) { import VMS::Filespec qw(unixpath); } -my($basePath) = getExecutePath($0) . '/MakeProjectCreator'; +my($basePath) = getExecutePath($0) . 'MakeProjectCreator'; unshift(@INC, $basePath . '/modules'); my($mpcroot) = $ENV{MPC_ROOT}; @@ -61,23 +60,31 @@ my(@creators) = ('GNUACEProjectCreator', # Subroutine Section # ************************************************************ -sub getBasePath { - return $mpcpath; -} - - sub which { - my($prog) = shift; - my($exec) = $prog; - - if (defined $ENV{'PATH'}) { - my($part) = ''; - my($envSep) = $Config{'path_sep'}; - foreach $part (split(/$envSep/, $ENV{'PATH'})) { - $part .= "/$prog"; - if ( -x $part ) { - $exec = $part; - last; + my($prog) = shift; + my($exec) = $prog; + my($part) = ''; + if ( $^O eq 'VMS' ) { + my($envSep) = ';'; + if (defined $ENV{'PATH'}) { + foreach $part (split(/$envSep/, $ENV{'PATH'})) { + $part .= "$prog"; + if ( -x $part ) { + $exec = $part; + last; + } + } + } + } + else { + my($envSep) = ($^O eq 'MSWin32' ? ';' : ':'); + if (defined $ENV{'PATH'}) { + foreach $part (split(/$envSep/, $ENV{'PATH'})) { + $part .= "/$prog"; + if ( -x $part ) { + $exec = $part; + last; + } } } } @@ -90,33 +97,51 @@ sub getExecutePath { my($prog) = shift; my($loc) = ''; - if ($prog ne basename($prog)) { - my($dir) = ($^O eq 'VMS' ? unixpath(dirname($prog)) : dirname($prog)); - if ($prog =~ /^[\/\\]/ || - $prog =~ /^[A-Za-z]:[\/\\]?/) { - $loc = $dir; + if ( $^O eq 'VMS' ) { + if ($prog ne basename($prog)) { + my($dir) = unixpath( dirname($prog) ); + if ($prog =~ /^[\/\\]/) { + $loc = $dir; + } + else { + $loc = unixpath(getcwd()) . $dir; + } } else { - $loc = ($^O eq 'VMS' ? unixpath(getcwd()) : getcwd()) . '/' . $dir; + $loc = unixpath( dirname(which($prog)) ); } - } - else { - $loc = dirname(which($prog)); - if ($^O eq 'VMS') { - $loc = unixpath($loc); + + if ($loc eq '.') { + $loc = unixpath( getcwd() ); } - } + } else { + if ($prog ne basename($prog)) { + if ($prog =~ /^[\/\\]/ || + $prog =~ /^[A-Za-z]:[\/\\]?/) { + $loc = dirname($prog); + } + else { + $loc = getcwd() . '/' . dirname($prog); + } + } + else { + $loc = dirname(which($prog)); + } + + $loc =~ s/\/\.$//; - $loc =~ s/\/\.$//; + if ($loc eq '.') { + $loc = getcwd(); + } - if ($loc eq '.') { - $loc = ($^O eq 'VMS' ? unixpath(getcwd()) : getcwd()); + if ($loc ne '') { + $loc .= '/'; + } } return $loc; } - # ************************************************************ # Main Section # ************************************************************ |