package jxtn.core.unix;
import java.nio.file.Path;
/**
* {@code xattr}-related syscall wrappers
*
* @author aqd
*/
public final class NativeXAttr extends JNIBase {
public static final int XATTR_CREATE = 0x1; /* set value, fail if attr already exists */
public static final int XATTR_REPLACE = 0x2; /* set value, fail if attr does not exist */
/* getxattr */
public static long getxattr(Path path, String name) {
return getxattr(tPath(path), tName(name), null);
}
public static long getxattr(Path path, String name, byte[] value) {
return getxattr(tPath(path), tName(name), value);
}
public static long getxattr(String path, String name) {
return getxattr(tPath(path), tName(name), null);
}
public static long getxattr(String path, String name, byte[] value) {
return getxattr(tPath(path), tName(name), value);
}
private static native long getxattr(byte[] path, byte[] name, byte[] value);
/* setxattr */
public static int setxattr(Path path, String name, byte[] value, int flags) {
return setxattr(tPath(path), tName(name), value, flags);
}
public static int setxattr(String path, String name, byte[] value, int flags) {
return setxattr(tPath(path), tName(name), value, flags);
}
private static native int setxattr(byte[] path, byte[] name, byte[] value, int flags);
/* fgetxattr */
public static long fgetxattr(int fd, String name) {
return fgetxattr(fd, tName(name), null);
}
public static long fgetxattr(int fd, String name, byte[] value) {
return fgetxattr(fd, tName(name), value);
}
private static native long fgetxattr(int fd, byte[] name, byte[] value);
/* fsetxattr */
public static int fsetxattr(int fd, String name, byte[] value, int flags) {
return fsetxattr(fd, tName(name), value, flags);
}
private static native int fsetxattr(int fd, byte[] name, byte[] value, int flags);
/* lgetxattr */
public static long lgetxattr(Path path, String name) {
return lgetxattr(tPath(path), tName(name), null);
}
public static long lgetxattr(Path path, String name, byte[] value) {
return lgetxattr(tPath(path), tName(name), value);
}
public static long lgetxattr(String path, String name) {
return lgetxattr(tPath(path), tName(name), null);
}
public static long lgetxattr(String path, String name, byte[] value) {
return lgetxattr(tPath(path), tName(name), value);
}
private static native long lgetxattr(byte[] path, byte[] name, byte[] value);
/* lsetxattr */
public static int lsetxattr(Path path, String name, byte[] value, int flags) {
return lsetxattr(tPath(path), tName(name), value, flags);
}
public static int lsetxattr(String path, String name, byte[] value, int flags) {
return lsetxattr(tPath(path), tName(name), value, flags);
}
private static native int lsetxattr(byte[] path, byte[] name, byte[] value, int flags);
private NativeXAttr() {
}
}