/**
* (C) Copyright IBM Corporation 2015.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.wasdev.wlp.ant.install;
/*
* Parse out Unix permission mask.
* Details: http://stackoverflow.com/questions/15055634/understanding-and-decoding-the-file-mode-value-from-stat-function-output.
*/
public class UnixPermissions {
private static final int PERM_MASK = 07777;
private static final int S_IRUSR = 0400;
private static final int S_IWUSR = 0200;
private static final int S_IXUSR = 0100;
private static final int S_IRGRP = 040;
private static final int S_IWGRP = 020;
private static final int S_IXGRP = 010;
private static final int S_IROTH = 04;
private static final int S_IWOTH = 02;
private static final int S_IXOTH = 01;
private int permission;
public UnixPermissions(int permission) {
this.permission = permission & PERM_MASK;
}
public boolean isOwnerRead() {
return isPermissionEnabled(permission, S_IRUSR);
}
public boolean isOwnerWrite() {
return isPermissionEnabled(permission, S_IWUSR);
}
public boolean isOwnerExecute() {
return isPermissionEnabled(permission, S_IXUSR);
}
public boolean isGroupRead() {
return isPermissionEnabled(permission, S_IRGRP);
}
public boolean isGroupWrite() {
return isPermissionEnabled(permission, S_IWGRP);
}
public boolean isGroupExecute() {
return isPermissionEnabled(permission, S_IXGRP);
}
public boolean isOtherRead() {
return isPermissionEnabled(permission, S_IROTH);
}
public boolean isOtherWrite() {
return isPermissionEnabled(permission, S_IWOTH);
}
public boolean isOtherExecute() {
return isPermissionEnabled(permission, S_IXOTH);
}
private static boolean isPermissionEnabled(int permission, int mask) {
return ((permission & mask) == mask);
}
}