This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-compress.git
The following commit(s) were added to refs/heads/master by this push:
new 7d66f22f0 Refactor to package-private method ZipFile.toPlatform(int)
7d66f22f0 is described below
commit 7d66f22f0e92af5073e1040d5a9390a3b4ff106d
Author: Gary Gregory <[email protected]>
AuthorDate: Sat Dec 7 15:09:58 2024 -0500
Refactor to package-private method ZipFile.toPlatform(int)
---
.../archivers/zip/ZipArchiveInputStream.java | 6 ++--
.../commons/compress/archivers/zip/ZipFile.java | 36 +++++++++++++++++++++-
2 files changed, 38 insertions(+), 4 deletions(-)
diff --git
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
index 2b9a67042..620735422 100644
---
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
+++
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipArchiveInputStream.java
@@ -680,13 +680,13 @@ public class ZipArchiveInputStream extends
ArchiveInputStream<ZipArchiveEntry> i
}
throw new ZipException(String.format("Unexpected record signature:
0x%x", sig.getValue()));
}
-
+ // off: go past the signature
int off = WORD;
current = new CurrentEntry();
-
+ // get version
final int versionMadeBy = ZipShort.getValue(lfhBuf, off);
off += SHORT;
- current.entry.setPlatform(versionMadeBy >> ZipFile.BYTE_SHIFT &
ZipFile.NIBLET_MASK);
+ current.entry.setPlatform(ZipFile.toPlatform(versionMadeBy));
final GeneralPurposeBit gpFlag = GeneralPurposeBit.parse(lfhBuf, off);
final boolean hasUTF8Flag = gpFlag.usesUTF8ForNames();
diff --git
a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
index cb8e6daf2..64f9fc520 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ZipFile.java
@@ -576,6 +576,40 @@ public class ZipFile implements Closeable {
return found64;
}
+ /**
+ * Converts a raw version made by int to a <a
href="https://pkwaredownloads.blob.core.windows.net/pkware-general/Documentation/APPNOTE_6.2.0.TXT">platform
+ * code</a>.
+ * <ul>
+ * <li>0 - MS-DOS and OS/2 (FAT / VFAT / FAT32 file systems)</li>
+ * <li>1 - Amiga</li>
+ * <li>2 - OpenVMS</li>
+ * <li>3 - Unix</li>
+ * <li>4 - VM/CMS</li>
+ * <li>5 - Atari ST</li>
+ * <li>6 - OS/2 H.P.F.S.</li>
+ * <li>7 - Macintosh</li>
+ * <li>8 - Z-System</li>
+ * <li>9 - CP/M</li>
+ * <li>10 - Windows NTFS</li>
+ * <li>11 - MVS (OS/390 - Z/OS)</li>
+ * <li>12 - VSE</li>
+ * <li>13 - Acorn Risc</li>
+ * <li>14 - VFAT</li>
+ * <li>15 - alternate MVS</li>
+ * <li>16 - BeOS</li>
+ * <li>17 - Tandem</li>
+ * <li>18 - OS/400</li>
+ * <li>19 - OS/X (Darwin)</li>
+ * <li>20 thru 255 - unused</li>
+ * </ul>
+ *
+ * @param versionMadeBy version/
+ * @return a platform code.
+ */
+ static int toPlatform(final int versionMadeBy) {
+ return versionMadeBy >> BYTE_SHIFT & NIBLET_MASK;
+ }
+
/**
* Searches the archive backwards from minDistance to maxDistance for the
given signature, positions the RandomaccessFile right at the signature if it has
* been found.
@@ -1399,7 +1433,7 @@ public class ZipFile implements Closeable {
final int versionMadeBy = ZipShort.getValue(cfhBuf, off);
off += ZipConstants.SHORT;
ze.setVersionMadeBy(versionMadeBy);
- ze.setPlatform(versionMadeBy >> BYTE_SHIFT & NIBLET_MASK);
+ ze.setPlatform(toPlatform(versionMadeBy));
ze.setVersionRequired(ZipShort.getValue(cfhBuf, off));
off += ZipConstants.SHORT; // version required