summaryrefslogtreecommitdiff
path: root/bin/mpc.pl
diff options
context:
space:
mode:
Diffstat (limited to 'bin/mpc.pl')
-rwxr-xr-xbin/mpc.pl93
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
# ************************************************************