diff --git a/src/main/java/com/eprosima/idl/context/Context.java b/src/main/java/com/eprosima/idl/context/Context.java index 9a9dbb5b..baa603a5 100644 --- a/src/main/java/com/eprosima/idl/context/Context.java +++ b/src/main/java/com/eprosima/idl/context/Context.java @@ -46,6 +46,7 @@ import com.eprosima.idl.util.Util; import java.io.File; import java.io.StringReader; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -112,7 +113,7 @@ public Context( // The scope file has to be initialized because could occur the preprocessor // is not called (using -ppDisable). - m_scopeFile = m_file; + m_scopeFile = Paths.get(m_file).normalize().toString(); m_includePaths = new ArrayList(); m_dependencies = new LinkedHashSet(); @@ -139,12 +140,7 @@ public Context( { include = include.substring(m_directoryFile.length()); } - // Add last separator (can be empty by now...) - if (!include.isEmpty() && include.charAt(include.length() - 1) != java.io.File.separatorChar) - { - include += java.io.File.separator; - } - m_includePaths.add(include); + m_includePaths.add(Paths.get(include).normalize().toString() + java.io.File.separator); } // Reorder include paths; @@ -886,7 +882,7 @@ public void processPreprocessorLine( // Read filename scanner.next(); - String file = scanner.next(); + String file = Paths.get(scanner.next()).normalize().toString(); // Read flags. boolean systemFile = false, enteringFile = false, exitingFile = false; @@ -986,6 +982,8 @@ else if (flag == 3) includeFile.substring(0, includeFile.length() - 4).replace('.', '_'); // Change back to "." for relative paths. dependency_to_add = dependency_to_add.replaceAll("__/", "../"); + // Substitute "\\" with File separator. + dependency_to_add = dependency_to_add.replace('\\', '/'); m_directIncludeDependencies.add(dependency_to_add); }