From 9bd8b6fb3ae879e13c9a7a674ea080138337b283 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Mon, 1 Mar 2004 16:38:31 +0000 Subject: [PATCH] Fix to PR 53253 --- core/org.eclipse.cdt.core/ChangeLog | 6 ++ .../internal/errorparsers/VCErrorParser.java | 87 ++++++++++--------- 2 files changed, 54 insertions(+), 39 deletions(-) diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index c0dc82d4a13..915de962848 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -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 Patch from Uwe Stieber diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java index 9680e5e7c37..43812f01195 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/VCErrorParser.java @@ -1,54 +1,63 @@ package org.eclipse.cdt.internal.errorparsers; - /* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. + * (c) Copyright IBM Corp. 2000, 2001. All Rights Reserved. */ - import java.io.File; import java.util.StringTokenizer; - import org.eclipse.cdt.core.ErrorParserManager; import org.eclipse.cdt.core.IErrorParser; import org.eclipse.cdt.core.IMarkerGenerator; import org.eclipse.core.resources.IFile; - public class VCErrorParser implements IErrorParser { - - public boolean processLine(String line, ErrorParserManager eoParser) { - // msdev: filname(linenumber) : error/warning error_desc - int firstColon= line.indexOf(':'); - if (firstColon != -1) { - String firstPart= line.substring(0, firstColon); - StringTokenizer tok= new StringTokenizer(firstPart, "()"); - if (tok.hasMoreTokens()) { - String fileName= tok.nextToken(); - if (tok.hasMoreTokens()) { - String lineNumber= tok.nextToken(); - try { - int num= Integer.parseInt(lineNumber); - int i= fileName.lastIndexOf(File.separatorChar); - if (i != -1) { - fileName= fileName.substring(i + 1); + public boolean processLine(String line, ErrorParserManager eoParser) { + // msdev: filname(linenumber) : error/warning error_desc + int firstColon = line.indexOf(':'); + if (firstColon != -1) { + /* Guard against drive in Windows platform. */ + if (firstColon == 1) { + try { + String os = System.getProperty("os.name"); + if (os != null && os.startsWith("Win")) { + try { + if (Character.isLetter(line.charAt(0))) { + firstColon = line.indexOf(':', 2); + } + } catch (StringIndexOutOfBoundsException e) { + } + } + } catch (SecurityException e) { + } } - 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; + String firstPart = line.substring(0, firstColon); + StringTokenizer tok = new StringTokenizer(firstPart, "()"); + if (tok.hasMoreTokens()) { + String fileName = tok.nextToken(); + if (tok.hasMoreTokens()) { + String lineNumber = tok.nextToken(); + try { + int num = Integer.parseInt(lineNumber); + int i = fileName.lastIndexOf(File.separatorChar); + if (i != -1) { + fileName = fileName.substring(i + 1); + } + 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; - } }