diff --git a/src/main/java/com/eprosima/fastdds/fastddsgen.java b/src/main/java/com/eprosima/fastdds/fastddsgen.java index a75cf188..ad0d5654 100644 --- a/src/main/java/com/eprosima/fastdds/fastddsgen.java +++ b/src/main/java/com/eprosima/fastdds/fastddsgen.java @@ -41,8 +41,10 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.IOError; import java.io.InputStreamReader; import java.io.OutputStream; +import java.nio.file.InvalidPathException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -310,7 +312,11 @@ else if (arg.equals("-I")) { if (count < args.length) { - m_includePaths.add("-I".concat(args[count++])); + String pathStr = args[count++]; + if (!isIncludePathDuplicated(pathStr)) + { + m_includePaths.add("-I".concat(pathStr)); + } } else { @@ -551,6 +557,42 @@ private void showVersion() System.out.println(m_appName + " version " + version); } + private boolean isIncludePathDuplicated(String pathToCheck) + { + try + { + Path path = Paths.get(pathToCheck); + String absPath = path.toAbsolutePath().toString(); + boolean isDuplicateFound = false; + for (String includePath : m_includePaths) + { + // include paths are prefixed with "-I" + if (includePath.length() <= 2) + { + continue; + } + String absIncludePath = Paths.get(includePath.substring(2)).toAbsolutePath().toString(); + if (absPath.toLowerCase().equals(absIncludePath.toLowerCase())) + { + isDuplicateFound = true; + break; + } + } + + if (isDuplicateFound) + { + return true; + } + + } + catch (InvalidPathException | IOError | SecurityException ex) + { + // path operations failed, just returning false + } + + return false; + } + public static void printHelp() { System.out.println(m_appName + " usage:");