JAL-3252 some debugging task/JAL-3252_adapt_getdown_to_unpack_tgz_resource_files
authorBen Soares <b.soares@dundee.ac.uk>
Mon, 6 May 2019 18:42:17 +0000 (19:42 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Mon, 6 May 2019 18:42:17 +0000 (19:42 +0100)
getdown/src/getdown/core/src/main/java/com/threerings/getdown/util/FileUtil.java

index 67d0330..179fb29 100644 (file)
@@ -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);
         }
     }