From 97a3f307a64f4139dd267a10dce853f4a58d7d5b Mon Sep 17 00:00:00 2001 From: utzcoz Date: Sat, 3 Sep 2022 20:44:39 +0800 Subject: [PATCH] idegen: Handle symbolic link that targets to current or parent directory Test: run idegen.sh to generate files for IntelliJ without error Signed-off-by: utzcoz Change-Id: I80958e94f93a8e1ef546bc34bd929d04a224dc9e --- tools/idegen/src/Configuration.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/tools/idegen/src/Configuration.java b/tools/idegen/src/Configuration.java index 679269f75..cbe9773e6 100644 --- a/tools/idegen/src/Configuration.java +++ b/tools/idegen/src/Configuration.java @@ -18,6 +18,8 @@ import java.io.File; import java.io.IOException; import java.io.BufferedReader; import java.io.FileReader; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -153,6 +155,17 @@ public class Configuration { continue; } + if (Files.isSymbolicLink(file.toPath())) { + Path target = Files.readSymbolicLink(file.toPath()).normalize(); + if (target.startsWith("") || target.startsWith(".") + || target.startsWith("..")) { + // Don't recurse symbolic link that targets to parent + // or current directory. + Log.debug("Skipped: " + path); + continue; + } + } + if (file.isDirectory()) { // Traverse nested directories. if (excludes.exclude(path)) { @@ -216,8 +229,7 @@ public class Configuration { * found. */ private static String parsePackageName(File file) throws IOException { - BufferedReader in = new BufferedReader(new FileReader(file)); - try { + try (BufferedReader in = new BufferedReader(new FileReader(file))) { String line; while ((line = in.readLine()) != null) { String trimmed = line.trim(); @@ -230,8 +242,6 @@ public class Configuration { } return null; - } finally { - in.close(); } }