blob: 8618fc9b938fa47a38306c5d3a7705245e99adcf [file]
/**
* D header file for GNU/Linux.
*
* Copyright: Copyright Robert Klotzner 2012.
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Authors: Robert Klotzner
*/
module core.sys.linux.sys.xattr;
import core.sys.posix.sys.types;
version (linux):
extern (C):
nothrow:
@nogc:
enum {
XATTR_CREATE = 1, /* set value, fail if attr already exists. */
XATTR_REPLACE = 2 /* set value, fail if attr does not exist. */
}
enum XATTR_OS2_PREFIX = "os2.";
enum XATTR_OS2_PREFIX_LEN = XATTR_OS2_PREFIX.length;
enum XATTR_SECURITY_PREFIX = "security.";
enum XATTR_SECURITY_PREFIX_LEN = XATTR_SECURITY_PREFIX.length;
enum XATTR_SYSTEM_PREFIX = "system.";
enum XATTR_SYSTEM_PREFIX_LEN = XATTR_SYSTEM_PREFIX.length;
enum XATTR_TRUSTED_PREFIX = "trusted.";
enum XATTR_TRUSTED_PREFIX_LEN = XATTR_TRUSTED_PREFIX.length;
enum XATTR_USER_PREFIX = "user.";
enum XATTR_USER_PREFIX_LEN = XATTR_USER_PREFIX.length;
/* Security namespace */
enum XATTR_SELINUX_SUFFIX = "selinux.";
enum XATTR_NAME_SELINUX = XATTR_SECURITY_PREFIX ~ XATTR_SELINUX_SUFFIX;
enum XATTR_SMACK_SUFFIX = "SMACK64";
enum XATTR_SMACK_IPIN = "SMACK64IPIN";
enum XATTR_SMACK_IPOUT = "SMACK64IPOUT";
enum XATTR_SMACK_EXEC = "SMACK64EXEC";
enum XATTR_SMACK_TRANSMUTE = "SMACK64TRANSMUTE";
enum XATTR_SMACK_MMAP = "SMACK64MMAP";
enum XATTR_NAME_SMACK = XATTR_SECURITY_PREFIX ~ XATTR_SMACK_SUFFIX;
enum XATTR_NAME_SMACKIPIN = XATTR_SECURITY_PREFIX ~ XATTR_SMACK_IPIN;
enum XATTR_NAME_SMACKIPOUT = XATTR_SECURITY_PREFIX ~ XATTR_SMACK_IPOUT;
enum XATTR_NAME_SMACKEXEC = XATTR_SECURITY_PREFIX ~ XATTR_SMACK_EXEC;
enum XATTR_NAME_SMACKTRANSMUTE = XATTR_SECURITY_PREFIX ~ XATTR_SMACK_TRANSMUTE;
enum XATTR_NAME_SMACKMMAP = XATTR_SECURITY_PREFIX ~ XATTR_SMACK_MMAP;
enum XATTR_CAPS_SUFFIX = "capability";
enum XATTR_NAME_CAPS = XATTR_SECURITY_PREFIX ~ XATTR_CAPS_SUFFIX;
int setxattr(const scope char* path, const scope char* name, const scope void* value, size_t size, int flags);
int lsetxattr(const scope char* path, const scope char* name, const scope void* value, size_t size, int flags);
int fsetxattr(int fd, const scope char* name, const scope void* value, size_t size, int flags);
ssize_t getxattr(const scope char* path, const scope char* name, void* value, size_t size);
ssize_t lgetxattr(const scope char* path, const scope char* name, void* value, size_t size);
ssize_t fgetxattr(int fd, const scope char* name, void* value, size_t size);
ssize_t listxattr(const scope char* path, char* list, size_t size);
ssize_t llistxattr(const scope char* path, char* list, size_t size);
ssize_t flistxattr (int __fd, char *list, size_t size);
int removexattr (const scope char *path, const scope char *name);
int lremovexattr (const scope char *path, const scope char *name);
int fremovexattr (int fd, const scope char *name);