1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-12 18:55:38 +02:00

Fix to PR 53253

This commit is contained in:
Alain Magloire 2004-03-01 16:38:31 +00:00
parent 183e1ab403
commit 9bd8b6fb3a
2 changed files with 54 additions and 39 deletions

View file

@ -1,3 +1,9 @@
2004-03-01 Alain Magloire
Fix to PR 53253. From Steve Garbarini
* src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java
2004-03-01 Alain Magloire 2004-03-01 Alain Magloire
Patch from Uwe Stieber Patch from Uwe Stieber

View file

@ -1,54 +1,63 @@
package org.eclipse.cdt.internal.errorparsers; package org.eclipse.cdt.internal.errorparsers;
/* /*
* (c) Copyright IBM Corp. 2000, 2001. * (c) Copyright IBM Corp. 2000, 2001. All Rights Reserved.
* All Rights Reserved.
*/ */
import java.io.File; import java.io.File;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import org.eclipse.cdt.core.ErrorParserManager; import org.eclipse.cdt.core.ErrorParserManager;
import org.eclipse.cdt.core.IErrorParser; import org.eclipse.cdt.core.IErrorParser;
import org.eclipse.cdt.core.IMarkerGenerator; import org.eclipse.cdt.core.IMarkerGenerator;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
public class VCErrorParser implements IErrorParser { public class VCErrorParser implements IErrorParser {
public boolean processLine(String line, ErrorParserManager eoParser) {
public boolean processLine(String line, ErrorParserManager eoParser) { // msdev: filname(linenumber) : error/warning error_desc
// msdev: filname(linenumber) : error/warning error_desc int firstColon = line.indexOf(':');
int firstColon= line.indexOf(':'); if (firstColon != -1) {
if (firstColon != -1) { /* Guard against drive in Windows platform. */
String firstPart= line.substring(0, firstColon); if (firstColon == 1) {
StringTokenizer tok= new StringTokenizer(firstPart, "()"); try {
if (tok.hasMoreTokens()) { String os = System.getProperty("os.name");
String fileName= tok.nextToken(); if (os != null && os.startsWith("Win")) {
if (tok.hasMoreTokens()) { try {
String lineNumber= tok.nextToken(); if (Character.isLetter(line.charAt(0))) {
try { firstColon = line.indexOf(':', 2);
int num= Integer.parseInt(lineNumber); }
int i= fileName.lastIndexOf(File.separatorChar); } catch (StringIndexOutOfBoundsException e) {
if (i != -1) { }
fileName= fileName.substring(i + 1); }
} catch (SecurityException e) {
}
} }
IFile file= eoParser.findFileName(fileName); String firstPart = line.substring(0, firstColon);
if (file != null || eoParser.isConflictingName(fileName)) { StringTokenizer tok = new StringTokenizer(firstPart, "()");
String desc= line.substring(firstColon + 1).trim(); if (tok.hasMoreTokens()) {
if (file == null) { String fileName = tok.nextToken();
desc= "*" + desc; if (tok.hasMoreTokens()) {
} String lineNumber = tok.nextToken();
int severity= IMarkerGenerator.SEVERITY_ERROR_RESOURCE; try {
if (desc.startsWith("warning")) { int num = Integer.parseInt(lineNumber);
severity= IMarkerGenerator.SEVERITY_WARNING; int i = fileName.lastIndexOf(File.separatorChar);
} if (i != -1) {
eoParser.generateMarker(file, num, desc, severity, null); fileName = fileName.substring(i + 1);
return true; }
IFile file = eoParser.findFileName(fileName);
if (file != null || eoParser.isConflictingName(fileName)) {
String desc = line.substring(firstColon + 1).trim();
if (file == null) {
desc = "*" + desc;
}
int severity = IMarkerGenerator.SEVERITY_ERROR_RESOURCE;
if (desc.startsWith("warning")) {
severity = IMarkerGenerator.SEVERITY_WARNING;
}
eoParser.generateMarker(file, num, desc, severity, null);
return true;
}
} catch (NumberFormatException e) {
}
}
} }
} catch (NumberFormatException e) {
}
} }
} return false;
} }
return false;
}
} }