From: Ben Soares Date: Mon, 6 May 2019 18:42:17 +0000 (+0100) Subject: JAL-3252 some debugging X-Git-Url: http://source.jalview.org/gitweb/?p=jalview.git;a=commitdiff_plain;h=16561706ec44c7159457dc11b3abee4292e65608 JAL-3252 some debugging --- diff --git a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/FileUtil.java b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/FileUtil.java index 67d0330..179fb29 100644 --- a/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/FileUtil.java +++ b/getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/FileUtil.java @@ -181,32 +181,42 @@ public class FileUtil public static void unpackTgz (TarArchiveInputStream tgz, File target, boolean cleanExistingDirs) throws IOException { - TarArchiveEntry entry; - while ((entry = tgz.getNextTarEntry()) != null) { + TarArchiveEntry entry = tgz.getNextTarEntry(); + while (entry != null) { // sanitize the entry name String entryName = entry.getName(); + log.info("### ENTRYNAME="+entryName); if (entryName.startsWith(File.separator)) { entryName = entryName.substring(File.separator.length()); } File efile = new File(target, entryName); + log.info("###1 ENTRYNAME="+entryName); // if we're unpacking a normal tgz file, it will have special path // entries that allow us to create our directories first if (entry.isDirectory()) { - + log.info("###2 ENTRYNAME="+entryName); + log.info("Directory '"+entryName+"', cleanExistingDirs="+cleanExistingDirs); if (cleanExistingDirs) { if (efile.exists()) { + log.info("###3 ENTRYNAME="+entryName); for (File f : efile.listFiles()) { - if (!f.isDirectory()) - f.delete(); + log.info("###4 ENTRYNAME="+entryName); + if (!f.isDirectory()) { + log.info("Attempting to delete "+f.getName()); + f.delete(); + } } } } + log.info("###5 ENTRYNAME="+entryName); if (!efile.exists() && !efile.mkdir()) { log.warning("Failed to create tgz entry path", "tgz", tgz, "entry", entry); } + entry = tgz.getNextTarEntry(); + log.info("###5a ENTRYNAME="+entryName); continue; } @@ -215,30 +225,48 @@ public class FileUtil File parent = new File(efile.getParent()); if (!parent.exists() && !parent.mkdirs()) { log.warning("Failed to create tgz entry parent", "tgz", tgz, "parent", parent); + entry = tgz.getNextTarEntry(); + log.info("###7a ENTRYNAME="+entryName); continue; } + log.info("###6 ENTRYNAME="+entryName); if (entry.isLink()) { - System.out.println("Creating hard link "+efile.getName()+" -> "+entry.getLinkName()); + log.info("###7 ENTRYNAME="+entryName); + log.info("Creating hard link "+efile.getName()+" -> "+entry.getLinkName()); Files.createLink(efile.toPath(), Paths.get(entry.getLinkName())); + log.info("###7a ENTRYNAME="+entryName); + entry = tgz.getNextTarEntry(); + log.info("###7a ENTRYNAME="+entryName); continue; } + log.info("###8 ENTRYNAME="+entryName); if (entry.isSymbolicLink()) { - System.out.println("Creating symbolic link "+efile.getName()+" -> "+entry.getLinkName()); + log.info("###9 ENTRYNAME="+entryName); + log.info("Creating symbolic link "+efile.getName()+" -> "+entry.getLinkName()); Files.createSymbolicLink(efile.toPath(), Paths.get(entry.getLinkName())); + log.info("###10 ENTRYNAME="+entryName); + entry = tgz.getNextTarEntry(); + log.info("###10a ENTRYNAME="+entryName); continue; } + log.info("###11 ENTRYNAME="+entryName); try (BufferedOutputStream fout = new BufferedOutputStream(new FileOutputStream(efile)); InputStream tin = tgz;) { + log.info("###12 ENTRYNAME="+entryName); StreamUtil.copy(tin, fout); } catch (Exception e) { + log.info("###13 ENTRYNAME="+entryName); throw new IOException( Log.format("Failure unpacking", "tgz", tgz, "entry", efile), e); } + log.info("###14 ENTRYNAME="+entryName); + entry = tgz.getNextTarEntry(); + log.info("###15 ENTRYNAME="+entryName); } }