Only apply permission to files with +x
Change-Id: Ied3304a0f9687b601666c4ec7ce7a34157254d7c
This commit is contained in:
@@ -807,8 +807,12 @@ public class Archive implements IDescription {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if needed set the permissions.
|
// if needed set the permissions.
|
||||||
if (usingUnixPerm) {
|
if (usingUnixPerm && destFile.isFile()) {
|
||||||
setPermission(destFile, entry.getUnixMode());
|
// get the mode and test if it contains the executable bit
|
||||||
|
int mode = entry.getUnixMode();
|
||||||
|
if ((mode & 0111) != 0) {
|
||||||
|
setExecutablePermission(destFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Increment progress bar to match. We update only between files.
|
// Increment progress bar to match. We update only between files.
|
||||||
@@ -928,19 +932,14 @@ public class Archive implements IDescription {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Unix permission on a file or folder.
|
* Sets the executable Unix permission (0777) on a file or folder.
|
||||||
* @param file The file to set permissions on.
|
* @param file The file to set permissions on.
|
||||||
* @param unixMode the permissions as received from {@link ZipArchiveEntry#getUnixMode()}.
|
* @param unixMode the permissions as received from {@link ZipArchiveEntry#getUnixMode()}.
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
private void setPermission(File file, int unixMode) throws IOException {
|
private void setExecutablePermission(File file) throws IOException {
|
||||||
// permissions contains more than user/group/all, and we need the 777 display mode, so we
|
|
||||||
// convert it in octal string and take the last 3 digits.
|
|
||||||
String permission = String.format("%o", unixMode);
|
|
||||||
permission = permission.substring(permission.length() - 3, permission.length());
|
|
||||||
|
|
||||||
Runtime.getRuntime().exec(new String[] {
|
Runtime.getRuntime().exec(new String[] {
|
||||||
"chmod", permission, file.getAbsolutePath()
|
"chmod", "777", file.getAbsolutePath()
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user