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

Reply via email to