< prev index next >

src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java

Print this page
rev 53081 : 8213031: (zipfs) Add support for POSIX file permissions
Reviewed-by: simonis

*** 32,44 **** import java.net.URI; import java.nio.channels.FileChannel; import java.nio.channels.SeekableByteChannel; import java.nio.file.*; import java.nio.file.DirectoryStream.Filter; - import java.nio.file.attribute.BasicFileAttributeView; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.FileTime; import java.util.Arrays; import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; import java.util.Objects; --- 32,44 ---- import java.net.URI; import java.nio.channels.FileChannel; import java.nio.channels.SeekableByteChannel; import java.nio.file.*; import java.nio.file.DirectoryStream.Filter; import java.nio.file.attribute.FileAttribute; import java.nio.file.attribute.FileTime; + import java.nio.file.attribute.PosixFilePermission; import java.util.Arrays; import java.util.Iterator; import java.util.Map; import java.util.NoSuchElementException; import java.util.Objects;
*** 766,778 **** throws IOException { zfs.setTimes(getResolvedPath(), mtime, atime, ctime); } ! Map<String, Object> readAttributes(String attributes, LinkOption... options) throws IOException { String view = null; String attrs = null; int colonPos = attributes.indexOf(':'); if (colonPos == -1) { --- 766,783 ---- throws IOException { zfs.setTimes(getResolvedPath(), mtime, atime, ctime); } ! void setPermissions(Set<PosixFilePermission> perms) throws IOException + { + zfs.setPermissions(getResolvedPath(), perms); + } + Map<String, Object> readAttributes(String attributes, LinkOption... options) + throws IOException { String view = null; String attrs = null; int colonPos = attributes.indexOf(':'); if (colonPos == -1) {
*** 933,948 **** } finally { is.close(); } } if (copyAttrs) { ! BasicFileAttributeView view = ! ZipFileAttributeView.get(target, BasicFileAttributeView.class); try { view.setTimes(zfas.lastModifiedTime(), zfas.lastAccessTime(), zfas.creationTime()); } catch (IOException x) { // rollback? try { target.delete(); } catch (IOException ignore) { } --- 938,959 ---- } finally { is.close(); } } if (copyAttrs) { ! ZipFileAttributeView view = ! ZipFileAttributeView.get(target, ZipFileAttributeView.class); try { view.setTimes(zfas.lastModifiedTime(), zfas.lastAccessTime(), zfas.creationTime()); + // copy permissions if available + try { + view.setPermissions(zfas.permissions()); + } catch (UnsupportedOperationException uoe) { + // the current entry may have no permissions. + } } catch (IOException x) { // rollback? try { target.delete(); } catch (IOException ignore) { }
< prev index next >