#!%ORACLE_HOME%/perl/bin/perl

##############
#first go through and close all file descriptors greater than or equal to
#three.  this is a workaround for JVM bug 
#http://developer.java.sun.com/developer/bugParade/bugs/4843136.html
#where Java doesn't always close both ends of pipe in child.
##############
for($i = 3;$i < 1024; $i++)
{
    if (! open(TMPHANDLE, "<&=$i")) {
        close(TMPHANDLE);
    }

}

delete($ENV{"LD_LIBRARY_PATH"});
delete($ENV{"SHLIB_PATH"});
delete($ENV{"LIBPATH"});
delete($ENV{"DYLD_LIBRARY_PATH"});
delete($ENV{"NLS_LANG"});

#Bug#5066096, unset ORA_NLS*
foreach $ENV_VAR_KEY (keys(%ENV)) {
 $ORA_NLS_ENV_VAR=substr($ENV_VAR_KEY,0,7);
 if( $ORA_NLS_ENV_VAR eq "ORA_NLS" ) {
  delete($ENV{$ENV_VAR_KEY});
 }
}

delete($ENV{"CONSOLE_CFG"});

#bug 5748195 - removing PATH
delete($ENV{"PATH"});

if($ENV{"REMOTE_EMDROOT"} eq "")
{
    $ENV{"ORACLE_HOME"}="%ORACLE_HOME%";
    $ENV{"EMDROOT"}="%EMDROOT%";

    #Bug 4600813 - let emtgtctl compute EMSTATE using emctl getemhome
    delete($ENV{"EMSTATE"});
}
else
{
    $ENV{"ORACLE_HOME"} = $ENV{"REMOTE_EMDROOT"};
    $ENV{"EMDROOT"} = $ENV{"REMOTE_EMDROOT"};
}

#bug 5748195 - untainting the arguments passed to exec
$numArgs = $#ARGV + 1;

foreach $argnum (0 .. $#ARGV) {
   $data = $ARGV[$argnum];
   if ($data =~ /(.+)$/) {
       $data = $1;  # $data now untainted
       $newargs[$argnum] = $data;
   }
}

exec("$ENV{'EMDROOT'}/bin/emtgtctl2 @newargs");
