You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by do...@apache.org on 2001/12/19 12:50:49 UTC

cvs commit: jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec Execute.java

donaldp     01/12/19 03:50:49

  Modified:    proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec
                        Execute.java
  Log:
  Move inner classes to top level classes.
  
  Revision  Changes    Path
  1.3       +68 -489   jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute.java
  
  Index: Execute.java
  ===================================================================
  RCS file: /home/cvs/jakarta-ant/proposal/myrmidon/src/main/org/apache/tools/ant/taskdefs/exec/Execute.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Execute.java	2001/12/17 10:47:19	1.2
  +++ Execute.java	2001/12/19 11:50:49	1.3
  @@ -12,11 +12,8 @@
   import java.io.File;
   import java.io.IOException;
   import java.io.StringReader;
  -import java.lang.reflect.InvocationTargetException;
  -import java.lang.reflect.Method;
   import java.util.Locale;
   import java.util.Vector;
  -import org.apache.avalon.excalibur.io.FileUtil;
   import org.apache.myrmidon.api.TaskException;
   import org.apache.myrmidon.framework.Os;
   import org.apache.tools.ant.Project;
  @@ -35,29 +32,29 @@
        */
       public final static int INVALID = Integer.MAX_VALUE;
   
  -    private static String antWorkingDirectory = System.getProperty( "user.dir" );
  -    private static CommandLauncher vmLauncher;
  -    private static CommandLauncher shellLauncher;
  -    private static Vector procEnvironment;
  +    private static String c_antWorkingDirectory = System.getProperty( "user.dir" );
  +    private static CommandLauncher c_vmLauncher;
  +    private static CommandLauncher c_shellLauncher;
  +    private static Vector c_procEnvironment;
   
       /**
        * Used to destroy processes when the VM exits.
        */
  -    private static ProcessDestroyer processDestroyer = new ProcessDestroyer();
  +    private static ProcessDestroyer c_processDestroyer = new ProcessDestroyer();
   
  -    private String[] cmdl = null;
  -    private String[] env = null;
  -    private int exitValue = INVALID;
  -    private File workingDirectory = null;
  -    private Project project = null;
  -    private boolean newEnvironment = false;
  +    private String[] m_command;
  +    private String[] m_environment;
  +    private int m_exitValue = INVALID;
  +    private File m_workingDirectory;
  +    private Project m_project;
  +    private boolean m_newEnvironment;
   
       /**
        * Controls whether the VM is used to launch commands, where possible
        */
  -    private boolean useVMLauncher = true;
  -    private ExecuteStreamHandler streamHandler;
  -    private ExecuteWatchdog watchdog;
  +    private boolean m_useVMLauncher = true;
  +    private ExecuteStreamHandler m_streamHandler;
  +    private ExecuteWatchdog m_watchdog;
   
       /**
        * Builds a command launcher for the OS and JVM we are running under
  @@ -70,7 +67,7 @@
               // Try using a JDK 1.3 launcher
               try
               {
  -                vmLauncher = new Java13CommandLauncher();
  +                c_vmLauncher = new Java13CommandLauncher();
               }
               catch( NoSuchMethodException exc )
               {
  @@ -80,12 +77,12 @@
               if( Os.isFamily( "mac" ) )
               {
                   // Mac
  -                shellLauncher = new MacCommandLauncher( new CommandLauncher() );
  +                c_shellLauncher = new MacCommandLauncher( new CommandLauncher() );
               }
               else if( Os.isFamily( "os/2" ) )
               {
                   // OS/2 - use same mechanism as Windows 2000
  -                shellLauncher = new WinNTCommandLauncher( new CommandLauncher() );
  +                c_shellLauncher = new WinNTCommandLauncher( new CommandLauncher() );
               }
               else if( Os.isFamily( "windows" ) )
               {
  @@ -110,15 +107,15 @@
                   if( osname.indexOf( "nt" ) >= 0 || osname.indexOf( "2000" ) >= 0 )
                   {
                       // Windows 2000/NT
  -                    shellLauncher = new WinNTCommandLauncher( baseLauncher );
  +                    c_shellLauncher = new WinNTCommandLauncher( baseLauncher );
                   }
                   else
                   {
                       // Windows 98/95 - need to use an auxiliary script
  -                    shellLauncher = new ScriptCommandLauncher( "bin/antRun.bat", baseLauncher );
  +                    c_shellLauncher = new ScriptCommandLauncher( "bin/antRun.bat", baseLauncher );
                   }
               }
  -            else if( ( new Os( "netware" ) ).eval() )
  +            else if( (new Os( "netware" )).eval() )
               {
                   // NetWare.  Need to determine which JDK we're running in
                   CommandLauncher baseLauncher;
  @@ -133,12 +130,12 @@
                       baseLauncher = new CommandLauncher();
                   }
   
  -                shellLauncher = new PerlScriptCommandLauncher( "bin/antRun.pl", baseLauncher );
  +                c_shellLauncher = new PerlScriptCommandLauncher( "bin/antRun.pl", baseLauncher );
               }
               else
               {
                   // Generic
  -                shellLauncher = new ScriptCommandLauncher( "bin/antRun", new CommandLauncher() );
  +                c_shellLauncher = new ScriptCommandLauncher( "bin/antRun", new CommandLauncher() );
               }
           }
           catch( TaskException e )
  @@ -177,8 +174,8 @@
        */
       public Execute( ExecuteStreamHandler streamHandler, ExecuteWatchdog watchdog )
       {
  -        this.streamHandler = streamHandler;
  -        this.watchdog = watchdog;
  +        this.m_streamHandler = streamHandler;
  +        this.m_watchdog = watchdog;
       }
   
       /**
  @@ -189,10 +186,10 @@
       public static synchronized Vector getProcEnvironment()
           throws TaskException
       {
  -        if( procEnvironment != null )
  -            return procEnvironment;
  +        if( c_procEnvironment != null )
  +            return c_procEnvironment;
   
  -        procEnvironment = new Vector();
  +        c_procEnvironment = new Vector();
           try
           {
               ByteArrayOutputStream out = new ByteArrayOutputStream();
  @@ -211,7 +208,7 @@
               String var = null;
               String line;
               String lineSep = System.getProperty( "line.separator" );
  -            while( ( line = in.readLine() ) != null )
  +            while( (line = in.readLine()) != null )
               {
                   if( line.indexOf( '=' ) == -1 )
                   {
  @@ -231,20 +228,20 @@
                       // New env var...append the previous one if we have it.
                       if( var != null )
                       {
  -                        procEnvironment.addElement( var );
  +                        c_procEnvironment.addElement( var );
                       }
                       var = line;
                   }
               }
               // Since we "look ahead" before adding, there's one last env var.
  -            procEnvironment.addElement( var );
  +            c_procEnvironment.addElement( var );
           }
           catch( IOException exc )
           {
               exc.printStackTrace();
               // Just try to see how much we got
           }
  -        return procEnvironment;
  +        return c_procEnvironment;
       }
   
       /**
  @@ -335,7 +332,7 @@
       public void setAntRun( Project project )
           throws TaskException
       {
  -        this.project = project;
  +        this.m_project = project;
       }
   
       /**
  @@ -345,7 +342,7 @@
        */
       public void setCommandline( String[] commandline )
       {
  -        cmdl = commandline;
  +        m_command = commandline;
       }
   
       /**
  @@ -355,7 +352,7 @@
        */
       public void setEnvironment( String[] env )
       {
  -        this.env = env;
  +        this.m_environment = env;
       }
   
       /**
  @@ -365,7 +362,7 @@
        */
       public void setNewenvironment( boolean newenv )
       {
  -        newEnvironment = newenv;
  +        m_newEnvironment = newenv;
       }
   
       /**
  @@ -378,7 +375,7 @@
        */
       public void setVMLauncher( boolean useVMLauncher )
       {
  -        this.useVMLauncher = useVMLauncher;
  +        this.m_useVMLauncher = useVMLauncher;
       }
   
       /**
  @@ -392,10 +389,10 @@
        */
       public void setWorkingDirectory( File wd )
       {
  -        if( wd == null || wd.getAbsolutePath().equals( antWorkingDirectory ) )
  -            workingDirectory = null;
  +        if( wd == null || wd.getAbsolutePath().equals( c_antWorkingDirectory ) )
  +            m_workingDirectory = null;
           else
  -            workingDirectory = wd;
  +            m_workingDirectory = wd;
       }
   
       /**
  @@ -405,7 +402,7 @@
        */
       public String[] getCommandline()
       {
  -        return cmdl;
  +        return m_command;
       }
   
       /**
  @@ -416,8 +413,8 @@
       public String[] getEnvironment()
           throws TaskException
       {
  -        if( env == null || newEnvironment )
  -            return env;
  +        if( m_environment == null || m_newEnvironment )
  +            return m_environment;
           return patchEnvironment();
       }
   
  @@ -429,7 +426,7 @@
        */
       public int getExitValue()
       {
  -        return exitValue;
  +        return m_exitValue;
       }
   
       /**
  @@ -441,43 +438,43 @@
       public int execute()
           throws IOException, TaskException
       {
  -        CommandLauncher launcher = vmLauncher != null ? vmLauncher : shellLauncher;
  -        if( !useVMLauncher )
  +        CommandLauncher launcher = c_vmLauncher != null ? c_vmLauncher : c_shellLauncher;
  +        if( !m_useVMLauncher )
           {
  -            launcher = shellLauncher;
  +            launcher = c_shellLauncher;
           }
   
  -        final Process process = launcher.exec( project, getCommandline(), getEnvironment(), workingDirectory );
  +        final Process process = launcher.exec( m_project, getCommandline(), getEnvironment(), m_workingDirectory );
           try
           {
  -            streamHandler.setProcessInputStream( process.getOutputStream() );
  -            streamHandler.setProcessOutputStream( process.getInputStream() );
  -            streamHandler.setProcessErrorStream( process.getErrorStream() );
  +            m_streamHandler.setProcessInputStream( process.getOutputStream() );
  +            m_streamHandler.setProcessOutputStream( process.getInputStream() );
  +            m_streamHandler.setProcessErrorStream( process.getErrorStream() );
           }
           catch( IOException e )
           {
               process.destroy();
               throw e;
           }
  -        streamHandler.start();
  +        m_streamHandler.start();
   
           // add the process to the list of those to destroy if the VM exits
           //
  -        processDestroyer.add( process );
  +        c_processDestroyer.add( process );
   
  -        if( watchdog != null )
  -            watchdog.start( process );
  +        if( m_watchdog != null )
  +            m_watchdog.start( process );
           waitFor( process );
   
           // remove the process to the list of those to destroy if the VM exits
           //
  -        processDestroyer.remove( process );
  +        c_processDestroyer.remove( process );
   
  -        if( watchdog != null )
  -            watchdog.stop();
  -        streamHandler.stop();
  -        if( watchdog != null )
  -            watchdog.checkException();
  +        if( m_watchdog != null )
  +            m_watchdog.stop();
  +        m_streamHandler.stop();
  +        if( m_watchdog != null )
  +            m_watchdog.checkException();
           return getExitValue();
       }
   
  @@ -489,12 +486,12 @@
        */
       public boolean killedProcess()
       {
  -        return watchdog != null && watchdog.killedProcess();
  +        return m_watchdog != null && m_watchdog.killedProcess();
       }
   
  -    protected void setExitValue( int value )
  +    private void setExitValue( final int value )
       {
  -        exitValue = value;
  +        m_exitValue = value;
       }
   
       protected void waitFor( Process process )
  @@ -518,443 +515,25 @@
           throws TaskException
       {
           Vector osEnv = (Vector)getProcEnvironment().clone();
  -        for( int i = 0; i < env.length; i++ )
  +        for( int i = 0; i < m_environment.length; i++ )
           {
  -            int pos = env[ i ].indexOf( '=' );
  +            int pos = m_environment[ i ].indexOf( '=' );
               // Get key including "="
  -            String key = env[ i ].substring( 0, pos + 1 );
  +            String key = m_environment[ i ].substring( 0, pos + 1 );
               int size = osEnv.size();
               for( int j = 0; j < size; j++ )
               {
  -                if( ( (String)osEnv.elementAt( j ) ).startsWith( key ) )
  +                if( ((String)osEnv.elementAt( j )).startsWith( key ) )
                   {
                       osEnv.removeElementAt( j );
                       break;
                   }
               }
  -            osEnv.addElement( env[ i ] );
  +            osEnv.addElement( m_environment[ i ] );
           }
           String[] result = new String[ osEnv.size() ];
           osEnv.copyInto( result );
           return result;
       }
   
  -    /**
  -     * A command launcher for a particular JVM/OS platform. This class is a
  -     * general purpose command launcher which can only launch commands in the
  -     * current working directory.
  -     *
  -     * @author RT
  -     */
  -    private static class CommandLauncher
  -    {
  -        /**
  -         * Launches the given command in a new process.
  -         *
  -         * @param project The project that the command is part of
  -         * @param cmd The command to execute
  -         * @param env The environment for the new process. If null, the
  -         *      environment of the current proccess is used.
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env )
  -            throws IOException, TaskException
  -        {
  -            if( project != null )
  -            {
  -                project.log( "Execute:CommandLauncher: " +
  -                             Commandline.toString( cmd ), Project.MSG_DEBUG );
  -            }
  -            return Runtime.getRuntime().exec( cmd, env );
  -        }
  -
  -        /**
  -         * Launches the given command in a new process, in the given working
  -         * directory.
  -         *
  -         * @param project The project that the command is part of
  -         * @param cmd The command to execute
  -         * @param env The environment for the new process. If null, the
  -         *      environment of the current proccess is used.
  -         * @param workingDir The directory to start the command in. If null, the
  -         *      current directory is used
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env, File workingDir )
  -            throws IOException, TaskException
  -        {
  -            if( workingDir == null )
  -            {
  -                return exec( project, cmd, env );
  -            }
  -            throw new IOException( "Cannot execute a process in different directory under this JVM" );
  -        }
  -    }
  -
  -    /**
  -     * A command launcher that proxies another command launcher. Sub-classes
  -     * override exec(args, env, workdir)
  -     *
  -     * @author RT
  -     */
  -    private static class CommandLauncherProxy extends CommandLauncher
  -    {
  -
  -        private CommandLauncher _launcher;
  -
  -        CommandLauncherProxy( CommandLauncher launcher )
  -        {
  -            _launcher = launcher;
  -        }
  -
  -        /**
  -         * Launches the given command in a new process. Delegates this method to
  -         * the proxied launcher
  -         *
  -         * @param project Description of Parameter
  -         * @param cmd Description of Parameter
  -         * @param env Description of Parameter
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env )
  -            throws IOException, TaskException
  -        {
  -            return _launcher.exec( project, cmd, env );
  -        }
  -    }
  -
  -    /**
  -     * A command launcher for JDK/JRE 1.1 under Windows. Fixes quoting problems
  -     * in Runtime.exec(). Can only launch commands in the current working
  -     * directory
  -     *
  -     * @author RT
  -     */
  -    private static class Java11CommandLauncher extends CommandLauncher
  -    {
  -        /**
  -         * Launches the given command in a new process. Needs to quote arguments
  -         *
  -         * @param project Description of Parameter
  -         * @param cmd Description of Parameter
  -         * @param env Description of Parameter
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env )
  -            throws IOException, TaskException
  -        {
  -            // Need to quote arguments with spaces, and to escape quote characters
  -            String[] newcmd = new String[ cmd.length ];
  -            for( int i = 0; i < cmd.length; i++ )
  -            {
  -                newcmd[ i ] = Commandline.quoteArgument( cmd[ i ] );
  -            }
  -            if( project != null )
  -            {
  -                project.log( "Execute:Java11CommandLauncher: " +
  -                             Commandline.toString( newcmd ), Project.MSG_DEBUG );
  -            }
  -            return Runtime.getRuntime().exec( newcmd, env );
  -        }
  -    }
  -
  -    /**
  -     * A command launcher for JDK/JRE 1.3 (and higher). Uses the built-in
  -     * Runtime.exec() command
  -     *
  -     * @author RT
  -     */
  -    private static class Java13CommandLauncher extends CommandLauncher
  -    {
  -
  -        private Method _execWithCWD;
  -
  -        public Java13CommandLauncher()
  -            throws NoSuchMethodException
  -        {
  -            // Locate method Runtime.exec(String[] cmdarray, String[] envp, File dir)
  -            _execWithCWD = Runtime.class.getMethod( "exec", new Class[]{String[].class, String[].class, File.class} );
  -        }
  -
  -        /**
  -         * Launches the given command in a new process, in the given working
  -         * directory
  -         *
  -         * @param project Description of Parameter
  -         * @param cmd Description of Parameter
  -         * @param env Description of Parameter
  -         * @param workingDir Description of Parameter
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env, File workingDir )
  -            throws IOException, TaskException
  -        {
  -            try
  -            {
  -                if( project != null )
  -                {
  -                    project.log( "Execute:Java13CommandLauncher: " +
  -                                 Commandline.toString( cmd ), Project.MSG_DEBUG );
  -                }
  -                Object[] arguments = {cmd, env, workingDir};
  -                return (Process)_execWithCWD.invoke( Runtime.getRuntime(), arguments );
  -            }
  -            catch( InvocationTargetException exc )
  -            {
  -                Throwable realexc = exc.getTargetException();
  -                if( realexc instanceof ThreadDeath )
  -                {
  -                    throw (ThreadDeath)realexc;
  -                }
  -                else if( realexc instanceof IOException )
  -                {
  -                    throw (IOException)realexc;
  -                }
  -                else
  -                {
  -                    throw new TaskException( "Unable to execute command", realexc );
  -                }
  -            }
  -            catch( Exception exc )
  -            {
  -                // IllegalAccess, IllegalArgument, ClassCast
  -                throw new TaskException( "Unable to execute command", exc );
  -            }
  -        }
  -    }
  -
  -    /**
  -     * A command launcher for Mac that uses a dodgy mechanism to change working
  -     * directory before launching commands.
  -     *
  -     * @author RT
  -     */
  -    private static class MacCommandLauncher extends CommandLauncherProxy
  -    {
  -        MacCommandLauncher( CommandLauncher launcher )
  -        {
  -            super( launcher );
  -        }
  -
  -        /**
  -         * Launches the given command in a new process, in the given working
  -         * directory
  -         *
  -         * @param project Description of Parameter
  -         * @param cmd Description of Parameter
  -         * @param env Description of Parameter
  -         * @param workingDir Description of Parameter
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env, File workingDir )
  -            throws IOException, TaskException
  -        {
  -            if( workingDir == null )
  -            {
  -                return exec( project, cmd, env );
  -            }
  -
  -            System.getProperties().put( "user.dir", workingDir.getAbsolutePath() );
  -            try
  -            {
  -                return exec( project, cmd, env );
  -            }
  -            finally
  -            {
  -                System.getProperties().put( "user.dir", antWorkingDirectory );
  -            }
  -        }
  -    }
  -
  -    /**
  -     * A command launcher that uses an auxiliary perl script to launch commands
  -     * in directories other than the current working directory.
  -     *
  -     * @author RT
  -     */
  -    private static class PerlScriptCommandLauncher extends CommandLauncherProxy
  -    {
  -        private String _script;
  -
  -        PerlScriptCommandLauncher( String script, CommandLauncher launcher )
  -        {
  -            super( launcher );
  -            _script = script;
  -        }
  -
  -        /**
  -         * Launches the given command in a new process, in the given working
  -         * directory
  -         *
  -         * @param project Description of Parameter
  -         * @param cmd Description of Parameter
  -         * @param env Description of Parameter
  -         * @param workingDir Description of Parameter
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env, File workingDir )
  -            throws IOException, TaskException
  -        {
  -            if( project == null )
  -            {
  -                if( workingDir == null )
  -                {
  -                    return exec( project, cmd, env );
  -                }
  -                throw new IOException( "Cannot locate antRun script: No project provided" );
  -            }
  -
  -            // Locate the auxiliary script
  -            String antHome = project.getProperty( "ant.home" );
  -            if( antHome == null )
  -            {
  -                throw new IOException( "Cannot locate antRun script: Property 'ant.home' not found" );
  -            }
  -            String antRun = FileUtil.
  -                resolveFile( project.getBaseDir(), antHome + File.separator + _script ).toString();
  -
  -            // Build the command
  -            File commandDir = workingDir;
  -            if( workingDir == null && project != null )
  -            {
  -                commandDir = project.getBaseDir();
  -            }
  -
  -            String[] newcmd = new String[ cmd.length + 3 ];
  -            newcmd[ 0 ] = "perl";
  -            newcmd[ 1 ] = antRun;
  -            newcmd[ 2 ] = commandDir.getAbsolutePath();
  -            System.arraycopy( cmd, 0, newcmd, 3, cmd.length );
  -
  -            return exec( project, newcmd, env );
  -        }
  -    }
  -
  -    /**
  -     * A command launcher that uses an auxiliary script to launch commands in
  -     * directories other than the current working directory.
  -     *
  -     * @author RT
  -     */
  -    private static class ScriptCommandLauncher extends CommandLauncherProxy
  -    {
  -
  -        private String _script;
  -
  -        ScriptCommandLauncher( String script, CommandLauncher launcher )
  -        {
  -            super( launcher );
  -            _script = script;
  -        }
  -
  -        /**
  -         * Launches the given command in a new process, in the given working
  -         * directory
  -         *
  -         * @param project Description of Parameter
  -         * @param cmd Description of Parameter
  -         * @param env Description of Parameter
  -         * @param workingDir Description of Parameter
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env, File workingDir )
  -            throws IOException, TaskException
  -        {
  -            if( project == null )
  -            {
  -                if( workingDir == null )
  -                {
  -                    return exec( project, cmd, env );
  -                }
  -                throw new IOException( "Cannot locate antRun script: No project provided" );
  -            }
  -
  -            // Locate the auxiliary script
  -            String antHome = project.getProperty( "ant.home" );
  -            if( antHome == null )
  -            {
  -                throw new IOException( "Cannot locate antRun script: Property 'ant.home' not found" );
  -            }
  -            String antRun = FileUtil.
  -                resolveFile( project.getBaseDir(), antHome + File.separator + _script ).toString();
  -
  -            // Build the command
  -            File commandDir = workingDir;
  -            if( workingDir == null && project != null )
  -            {
  -                commandDir = project.getBaseDir();
  -            }
  -
  -            String[] newcmd = new String[ cmd.length + 2 ];
  -            newcmd[ 0 ] = antRun;
  -            newcmd[ 1 ] = commandDir.getAbsolutePath();
  -            System.arraycopy( cmd, 0, newcmd, 2, cmd.length );
  -
  -            return exec( project, newcmd, env );
  -        }
  -    }
  -
  -    /**
  -     * A command launcher for Windows 2000/NT that uses 'cmd.exe' when launching
  -     * commands in directories other than the current working directory.
  -     *
  -     * @author RT
  -     */
  -    private static class WinNTCommandLauncher extends CommandLauncherProxy
  -    {
  -        WinNTCommandLauncher( CommandLauncher launcher )
  -        {
  -            super( launcher );
  -        }
  -
  -        /**
  -         * Launches the given command in a new process, in the given working
  -         * directory.
  -         *
  -         * @param project Description of Parameter
  -         * @param cmd Description of Parameter
  -         * @param env Description of Parameter
  -         * @param workingDir Description of Parameter
  -         * @return Description of the Returned Value
  -         * @exception IOException Description of Exception
  -         */
  -        public Process exec( Project project, String[] cmd, String[] env, File workingDir )
  -            throws IOException, TaskException
  -        {
  -            File commandDir = workingDir;
  -            if( workingDir == null )
  -            {
  -                if( project != null )
  -                {
  -                    commandDir = project.getBaseDir();
  -                }
  -                else
  -                {
  -                    return exec( project, cmd, env );
  -                }
  -            }
  -
  -            // Use cmd.exe to change to the specified directory before running
  -            // the command
  -            final int preCmdLength = 6;
  -            String[] newcmd = new String[ cmd.length + preCmdLength ];
  -            newcmd[ 0 ] = "cmd";
  -            newcmd[ 1 ] = "/c";
  -            newcmd[ 2 ] = "cd";
  -            newcmd[ 3 ] = "/d";
  -            newcmd[ 4 ] = commandDir.getAbsolutePath();
  -            newcmd[ 5 ] = "&&";
  -            System.arraycopy( cmd, 0, newcmd, preCmdLength, cmd.length );
  -
  -            return exec( project, newcmd, env );
  -        }
  -    }
   }
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>