private void processPaxHeader()

in src/main/java/org/apache/commons/compress/archivers/tar/TarArchiveEntry.java [1639:1730]


    private void processPaxHeader(final String key, final String val, final Map<String, String> headers)
        throws IOException {
    /*
     * The following headers are defined for Pax.
     * charset: cannot use these without changing TarArchiveEntry fields
     * mtime
     * atime
     * ctime
     * LIBARCHIVE.creationtime
     * comment
     * gid, gname
     * linkpath
     * size
     * uid,uname
     * SCHILY.devminor, SCHILY.devmajor: don't have setters/getters for those
     *
     * GNU sparse files use additional members, we use
     * GNU.sparse.size to detect the 0.0 and 0.1 versions and
     * GNU.sparse.realsize for 1.0.
     *
     * star files use additional members of which we use
     * SCHILY.filetype in order to detect star sparse files.
     *
     * If called from addExtraPaxHeader, these additional headers must be already present .
     */
        switch (key) {
            case "path":
                setName(val);
                break;
            case "linkpath":
                setLinkName(val);
                break;
            case "gid":
                setGroupId(Long.parseLong(val));
                break;
            case "gname":
                setGroupName(val);
                break;
            case "uid":
                setUserId(Long.parseLong(val));
                break;
            case "uname":
                setUserName(val);
                break;
            case "size":
                final long size = Long.parseLong(val);
                if (size < 0) {
                    throw new IOException("Corrupted TAR archive. Entry size is negative");
                }
                setSize(size);
                break;
            case "mtime":
                setLastModifiedTime(FileTime.from(parseInstantFromDecimalSeconds(val)));
                break;
            case "atime":
                setLastAccessTime(FileTime.from(parseInstantFromDecimalSeconds(val)));
                break;
            case "ctime":
                setStatusChangeTime(FileTime.from(parseInstantFromDecimalSeconds(val)));
                break;
            case "LIBARCHIVE.creationtime":
                setCreationTime(FileTime.from(parseInstantFromDecimalSeconds(val)));
                break;
            case "SCHILY.devminor":
                final int devMinor = Integer.parseInt(val);
                if (devMinor < 0) {
                    throw new IOException("Corrupted TAR archive. Dev-Minor is negative");
                }
                setDevMinor(devMinor);
                break;
            case "SCHILY.devmajor":
                final int devMajor = Integer.parseInt(val);
                if (devMajor < 0) {
                    throw new IOException("Corrupted TAR archive. Dev-Major is negative");
                }
                setDevMajor(devMajor);
                break;
            case TarGnuSparseKeys.SIZE:
                fillGNUSparse0xData(headers);
                break;
            case TarGnuSparseKeys.REALSIZE:
                fillGNUSparse1xData(headers);
                break;
            case "SCHILY.filetype":
                if ("sparse".equals(val)) {
                    fillStarSparseData(headers);
                }
                break;
            default:
                extraPaxHeaders.put(key, val);
        }
    }