summaryrefslogtreecommitdiff
path: root/src/net/sf/antcontrib/cpptasks/compiler/CaptureStreamHandler.java
diff options
context:
space:
mode:
authorMark Donszelmann <Mark.Donszelmann@gmail.com>2009-11-05 23:27:33 +0100
committerMark Donszelmann <Mark.Donszelmann@gmail.com>2009-11-05 23:27:33 +0100
commit254c4886d58979eebd0e352f4d16e391736f2a33 (patch)
tree8feca0cc1caa5177dd52a7b9b2dfd63502c941fd /src/net/sf/antcontrib/cpptasks/compiler/CaptureStreamHandler.java
parentef6f25ba42792d2d811fd6826c0dd528ad77b1e9 (diff)
downloadcpptasks-parallel-254c4886d58979eebd0e352f4d16e391736f2a33.tar.gz
cpptasks-parallel-254c4886d58979eebd0e352f4d16e391736f2a33.tar.bz2
cpptasks-parallel-254c4886d58979eebd0e352f4d16e391736f2a33.tar.xz
cpptasks-parallel-254c4886d58979eebd0e352f4d16e391736f2a33.zip
Reorganized source directories in line with cpptasks-1.0b5, for easier tracking
Diffstat (limited to 'src/net/sf/antcontrib/cpptasks/compiler/CaptureStreamHandler.java')
-rw-r--r--src/net/sf/antcontrib/cpptasks/compiler/CaptureStreamHandler.java168
1 files changed, 0 insertions, 168 deletions
diff --git a/src/net/sf/antcontrib/cpptasks/compiler/CaptureStreamHandler.java b/src/net/sf/antcontrib/cpptasks/compiler/CaptureStreamHandler.java
deleted file mode 100644
index f58ed8e..0000000
--- a/src/net/sf/antcontrib/cpptasks/compiler/CaptureStreamHandler.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- *
- * Copyright 2001-2004 The Ant-Contrib project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// BEGINFREEHEP, fully replaced with a runner with threads
-package net.sf.antcontrib.cpptasks.compiler;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.util.Vector;
-
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.ExecuteStreamHandler;
-
-/**
- * Implements ExecuteStreamHandler to capture the output of a Execute to an
- * array of strings
- *
- * @author Curt Arnold
- */
-public class CaptureStreamHandler implements ExecuteStreamHandler {
-
- String[] output;
-
- /**
- * Runs an executable and captures the output in a String array
- *
- * @param cmdline
- * command line arguments
- * @return output of process
- */
- public static String[] run(String[] cmdline) {
- CaptureStreamHandler handler = new CaptureStreamHandler();
- Execute exec = new Execute(handler);
- exec.setCommandline(cmdline);
- try {
- int status = exec.execute();
- } catch (IOException ex) {
- }
- return handler.getOutput() != null ? handler.getOutput() : new String[0];
- }
-
- private InputStream processErrorStream;
-
- private InputStream processOutputStream;
-
- public CaptureStreamHandler() {
- }
-
- public String[] getOutput() {
- return output;
- }
-
- static class Copier extends Thread {
- InputStream is;
-
- Vector lines;
-
- Copier(InputStream is) {
- this.is = is;
- lines = new Vector(10);
- }
-
- public void run() {
- try {
- BufferedReader reader = new BufferedReader( new InputStreamReader(is) );
- while ( true ) {
- String line = reader.readLine();
- if ( line == null )
- break;
- lines.addElement( line );
- }
- } catch (IOException e) {
- // Ignore
- }
- }
-
- public Vector getLines() {
- return lines;
- }
- }
-
- /**
- * Reads concurrently both the process standard output and standard error.
- * The standard error - if not empty - is copied to the output string array field. Otherwise
- * the standard output is copied to the output field. The output field is set to an empty array
- * in case of any error.
- */
- public void gatherOutput() {
- try {
- Copier errorCopier = new Copier(processErrorStream);
- Copier outputCopier = new Copier(processOutputStream);
- errorCopier.start();
- outputCopier.start();
- errorCopier.join();
- outputCopier.join();
- if (errorCopier.getLines().size() > 0) {
- output = new String[errorCopier.getLines().size()];
- errorCopier.getLines().copyInto(output);
- } else {
- output = new String[outputCopier.getLines().size()];
- outputCopier.getLines().copyInto(output);
- }
- } catch (Exception e) {
- output = new String[0];
- }
- }
-
- /**
- * Install a handler for the error stream of the subprocess.
- *
- * @param is
- * input stream to read from the error stream from the subprocess
- */
- public void setProcessErrorStream(InputStream is) throws IOException {
- processErrorStream = is;
- }
-
- /**
- * Install a handler for the input stream of the subprocess.
- *
- * @param os
- * output stream to write to the standard input stream of the
- * subprocess
- */
- public void setProcessInputStream(OutputStream os) throws IOException {
- os.close();
- }
-
- /**
- * Install a handler for the output stream of the subprocess.
- *
- * @param is
- * input stream to read from the error stream from the subprocess
- */
- public void setProcessOutputStream(InputStream is) throws IOException {
- processOutputStream = is;
- }
-
- /**
- * Start handling of the streams.
- */
- public void start() throws IOException {
- gatherOutput();
- }
-
- /**
- * Stop handling of the streams - will not be restarted.
- */
- public void stop() {
- }
-// ENDFREEHEP
-}