### Eclipse Workspace Patch 1.0 #P org.eclipse.cdt.make.core Index: src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCScannerInfoConsoleParser.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.cdt-build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCScannerInfoConsoleParser.java,v retrieving revision 1.29 diff -u -r1.29 GCCScannerInfoConsoleParser.java --- src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCScannerInfoConsoleParser.java 14 Sep 2007 11:43:52 -0000 1.29 +++ src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCScannerInfoConsoleParser.java 14 Sep 2007 14:06:41 -0000 @@ -53,14 +53,14 @@ return fUtil; } - protected boolean processCommand(String[] tokens) { + protected int processCommand(String[] tokens) { int compilerInvocationIdx= findCompilerInvocation(tokens); if (compilerInvocationIdx<0) { - return false; + return PC_COMPILERNOTFOUND; } if (compilerInvocationIdx+1 >= tokens.length) { - return false; + return PC_FILENOTFOUND; } // Recognized gcc or g++ compiler invocation @@ -154,7 +154,7 @@ fileName= AbstractGCCBOPConsoleParserUtility.convertCygpath(new Path(fileName)).toOSString(); } if (fileName == null) { - return false; // return when no file was given (analogous to GCCPerFileBOPConsoleParser) + return PC_FILENOTFOUND; // return when no file was given (analogous to GCCPerFileBOPConsoleParser) } IProject project = getProject(); @@ -198,6 +198,6 @@ TraceUtil.outputTrace("Discovered scanner info for file \'" + fileName + '\'', //$NON-NLS-1$ "Include paths", includes, translatedIncludes, "Defined symbols", symbols); //$NON-NLS-1$ //$NON-NLS-2$ } - return true; + return PC_SUCCESS; } } Index: src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.cdt-build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java,v retrieving revision 1.23 diff -u -r1.23 GCCPerFileBOPConsoleParser.java --- src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java 14 Sep 2007 11:43:52 -0000 1.23 +++ src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/GCCPerFileBOPConsoleParser.java 14 Sep 2007 14:06:41 -0000 @@ -62,11 +62,11 @@ /* (non-Javadoc) * @see org.eclipse.cdt.make.internal.core.scannerconfig.gnu.AbstractGCCBOPConsoleParser#processSingleLine(java.lang.String) */ - protected boolean processCommand(String[] tokens) { + protected int processCommand(String[] tokens) { // GCC C/C++ compiler invocation int compilerInvocationIndex= findCompilerInvocation(tokens); if (compilerInvocationIndex < 0) { - return false; + return PC_COMPILERNOTFOUND; } // find a file name @@ -88,12 +88,12 @@ } if (!found) { TraceUtil.outputTrace("Error identifying file name :1", tokens, TraceUtil.EOL); //$NON-NLS-1$ - return false; + return PC_FILENOTFOUND; } // sanity check if (filePath.indexOf(FILE_EXTENSIONS[extensionsIndex]) == -1) { TraceUtil.outputTrace("Error identifying file name :2", tokens, TraceUtil.EOL); //$NON-NLS-1$ - return false; + return PC_FILENOTFOUND; } if (fUtil != null) { IPath pFilePath = fUtil.getAbsolutePath(filePath); @@ -149,6 +149,6 @@ } // fUtil.addGenericCommandForFile2(longFileName, genericLine); } - return true; + return PC_SUCCESS; } } Index: src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/AbstractGCCBOPConsoleParser.java =================================================================== RCS file: /cvsroot/tools/org.eclipse.cdt-build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/AbstractGCCBOPConsoleParser.java,v retrieving revision 1.13 diff -u -r1.13 AbstractGCCBOPConsoleParser.java --- src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/AbstractGCCBOPConsoleParser.java 14 Sep 2007 11:43:52 -0000 1.13 +++ src/org/eclipse/cdt/make/internal/core/scannerconfig/gnu/AbstractGCCBOPConsoleParser.java 14 Sep 2007 14:06:40 -0000 @@ -35,6 +35,11 @@ protected static final String DASHI= "-I"; //$NON-NLS-1$ protected static final String DASHD= "-D"; //$NON-NLS-1$ + // return values for processCommand + public static final int PC_SUCCESS = 1; + public static final int PC_COMPILERNOTFOUND = 0; + public static final int PC_FILENOTFOUND = -1; + private IProject project; private IScannerInfoCollector collector; @@ -296,16 +301,17 @@ String[][] tokens= tokenize(line, true); for (int i = 0; i < tokens.length; i++) { String[] command = tokens[i]; - if (processCommand(command)) { + int pcval = processCommand(command); + if (pcval == PC_SUCCESS) { rc= true; } - else { // go inside quotes, if the compiler is called per wrapper or shell script + else if (pcval != PC_COMPILERNOTFOUND) { // go inside quotes, if the compiler is called per wrapper or shell script for (int j = 0; j < command.length; j++) { String[][] subtokens= tokenize(command[j], true); for (int k = 0; k < subtokens.length; k++) { String[] subcommand = subtokens[k]; - if (subcommand.length > 1) { // only proceed if there is any additional info - if (processCommand(subcommand)) { + if (subcommand.length > 1 || subtokens.length > 1) { // only proceed if there is any additional info + if (processCommand(subcommand) == PC_SUCCESS) { rc= true; } } @@ -329,5 +335,5 @@ return -1; } - abstract protected boolean processCommand(String[] command); + abstract protected int processCommand(String[] command); }