diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/CygpathTranslator.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/CygpathTranslator.java
index 9cc14451ff5..6a2e1f96e4d 100644
--- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/CygpathTranslator.java
+++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/internal/core/scannerconfig/util/CygpathTranslator.java
@@ -33,50 +33,49 @@ import org.eclipse.core.runtime.Platform;
*/
public class CygpathTranslator {
private IPath cwd;
- private String orgPath;
private String transPath;
+ private boolean isCygpathAvailable;
private boolean status;
- public CygpathTranslator(String path) {
- this(MakeCorePlugin.getDefault().getStateLocation(), path);
+ public CygpathTranslator() {
+ this(MakeCorePlugin.getDefault().getStateLocation());
}
- public CygpathTranslator(IPath cwd, String path) {
+ public CygpathTranslator(IPath cwd) {
this.cwd = cwd;
- orgPath = path;
- status = false;
+ isCygpathAvailable = Platform.getOS().equals(Platform.OS_WIN32);
+ translate("/"); //$NON-NLS-1$
+ isCygpathAvailable = status;
}
- /**
- * @return Returns the status.
- */
- public boolean isStatus() {
- return status;
- }
-
- public String run() {
+ public String translate(final String path) {
+ if (!isCygpathAvailable)
+ return path;
+
ISafeRunnable runnable = new ISafeRunnable() {
public void run() throws Exception {
- transPath = platformRun();
+ transPath = platformRun(path);
if (transPath.startsWith("cygpath:")) { //$NON-NLS-1$
transPath = null;
}
}
public void handleException(Throwable exception) {
- transPath = orgPath;
+ transPath = path;
MakeCorePlugin.log(exception);
}
};
Platform.run(runnable);
+
return transPath;
}
/**
+ * @param path
* @return
*/
- String platformRun() {
+ private String platformRun(String path) {
CommandLauncher launcher = new CommandLauncher();
launcher.showCommand(false);
@@ -84,7 +83,7 @@ public class CygpathTranslator {
Process p = launcher.execute(
new Path("cygpath"), //$NON-NLS-1$
- new String[] {"-m", orgPath}, //$NON-NLS-1$
+ new String[] {"-m", path}, //$NON-NLS-1$
new String[0],//setEnvironment(launcher, "c:/"),//$NON-NLS-1$
cwd); //$NON-NLS-1$
if (p != null) {
@@ -103,7 +102,7 @@ public class CygpathTranslator {
status = true;
return output.toString().trim();
}
- return orgPath;
+ return path;
}
/**
@@ -134,20 +133,16 @@ public class CygpathTranslator {
* @return
*/
public static List translateIncludePaths(List sumIncludes) {
- CygpathTranslator test = new CygpathTranslator("/"); //$NON-NLS-1$
- test.run();
- if (!test.isStatus()) return sumIncludes;
+ CygpathTranslator cygpath = new CygpathTranslator();
+ if (!cygpath.isCygpathAvailable) return sumIncludes;
List translatedIncludePaths = new ArrayList();
for (Iterator i = sumIncludes.iterator(); i.hasNext(); ) {
String includePath = (String) i.next();
IPath realPath = new Path(includePath);
if (!realPath.toFile().exists()) {
- String translatedPath = includePath;
- if (Platform.getOS().equals(Platform.OS_WIN32)) {
- translatedPath = (new CygpathTranslator(includePath)).run();
- }
- if (translatedPath != null) {
+ String translatedPath = cygpath.translate(includePath);
+ if (translatedPath != null && cygpath.status == true) {
if (!translatedPath.equals(includePath)) {
// Check if the translated path exists
IPath transPath = new Path(translatedPath);
diff --git a/build/org.eclipse.cdt.managedbuilder.core/ChangeLog b/build/org.eclipse.cdt.managedbuilder.core/ChangeLog
index 8040ad6c413..5941126b78c 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/ChangeLog
+++ b/build/org.eclipse.cdt.managedbuilder.core/ChangeLog
@@ -1,3 +1,9 @@
+2005-05-03 Vladimir Hirsl
+ Fix for PR 91276: Cygpath on Linux for SCD?
+ Changes in CygpathTranslator that affect DefaultGnuWinScannerInfoCollector.
+
+ * src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/DefaultGnuWinScannerInfoCollector.java
+
2005-03-18 Alain Magloire
Fix for PR 88110: Importing project that need converting would
create NPE and ResouceException failures.
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/DefaultGnuWinScannerInfoCollector.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/DefaultGnuWinScannerInfoCollector.java
index 9321b1fc3e0..ea084942840 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/DefaultGnuWinScannerInfoCollector.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/scannerconfig/DefaultGnuWinScannerInfoCollector.java
@@ -37,10 +37,10 @@ public class DefaultGnuWinScannerInfoCollector extends DefaultGCCScannerInfoColl
List symbols = (List) scannerInfo.get(ScannerInfoTypes.SYMBOL_DEFINITIONS);
// This method will be called by the parser each time there is a new value
- Iterator pathIter = includes.listIterator();
+ List translatedIncludes = CygpathTranslator.translateIncludePaths(includes);
+ Iterator pathIter = translatedIncludes.listIterator();
while (pathIter.hasNext()) {
- String path = (String) pathIter.next();
- String convertedPath = convertPath(path);
+ String convertedPath = (String) pathIter.next();
// On MinGW, there is no facility for converting paths
if (convertedPath.startsWith("/")) continue; //$NON-NLS-1$
// Add it if it is not a duplicate
@@ -61,17 +61,4 @@ public class DefaultGnuWinScannerInfoCollector extends DefaultGCCScannerInfoColl
}
}
- /* (non-Javadoc)
- * Converts the argument from a POSIX-style path to a valid Win32 path.
- * If the string is already in the proper format it will not be changed.
- *
- * @param path String
containing path to convert
- * @return String
containing the converted path
- */
- private String convertPath(String includePath) {
- // Convert a POSIX-style path to Win32
- String translatedPath = new CygpathTranslator(includePath).run();
- return translatedPath;
- }
-
}