diff options
author | Harald Musum <musum@oath.com> | 2018-02-05 10:13:07 +0100 |
---|---|---|
committer | Harald Musum <musum@oath.com> | 2018-02-05 10:13:07 +0100 |
commit | d9d261d14993ac8900a285eb152d958a0f2cb544 (patch) | |
tree | dd195b416cfc72147b64568fe360aefe74178f08 /filedistribution | |
parent | 05d54b671f116e0082c9b859406303e85d4c3b19 (diff) |
Handle long file names in tar archives
Diffstat (limited to 'filedistribution')
2 files changed, 6 insertions, 3 deletions
diff --git a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java index 2c08f5a7605..27ada7532f5 100644 --- a/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java +++ b/filedistribution/src/main/java/com/yahoo/vespa/filedistribution/CompressedFileReference.java @@ -34,7 +34,8 @@ public class CompressedFileReference { private static final int recurseDepth = 100; public static File compress(File baseDir, List<File> inputFiles, File outputFile) throws IOException { - ArchiveOutputStream archiveOutputStream = new TarArchiveOutputStream(new GZIPOutputStream(new FileOutputStream(outputFile))); + TarArchiveOutputStream archiveOutputStream = new TarArchiveOutputStream(new GZIPOutputStream(new FileOutputStream(outputFile))); + archiveOutputStream.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX); createArchiveFile(archiveOutputStream, baseDir, inputFiles); return outputFile; } @@ -55,7 +56,8 @@ public class CompressedFileReference { public static byte[] compress(File baseDir, List<File> inputFiles) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); - ArchiveOutputStream archiveOutputStream = new TarArchiveOutputStream(new GZIPOutputStream(out)); + TarArchiveOutputStream archiveOutputStream = new TarArchiveOutputStream(new GZIPOutputStream(out)); + archiveOutputStream.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX); createArchiveFile(archiveOutputStream, baseDir, inputFiles); return out.toByteArray(); } diff --git a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java index 589fbe29abf..c8d9e0a3eda 100644 --- a/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java +++ b/filedistribution/src/test/java/com/yahoo/vespa/filedistribution/FileDownloaderTest.java @@ -128,7 +128,8 @@ public class FileDownloaderTest { File subdir = new File(tempPath.toFile(), "subdir"); File fooFile = new File(subdir, "foo"); IOUtils.writeFile(fooFile, "foo", false); - File barFile = new File(subdir, "bar"); + // Check that long file names work. (need to do TarArchiveOutPutStream.setLongFileMode(TarArchiveOutputStream.LONGFILE_POSIX)) for it to work); + File barFile = new File(subdir, "really-long-filename-over-100-bytes-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); IOUtils.writeFile(barFile, "bar", false); File tarFile = CompressedFileReference.compress(tempPath.toFile(), Arrays.asList(fooFile, barFile), new File(tempPath.toFile(), filename)); |