Expand description
extattr
Yet another Extended Attributes library for Rust.
Why another crate for EA? Any difference from xattr
?
Extended Attributes syscalls vary across implementations, for example, to set an EA:
// Linux
int setxattr(const char *path, const char *name, const void *value,
size_t size, int flags);
// FreeBSD
ssize_t extattr_set_file(const char *path, int attrnamespace,
const char *attrname, const void *data, size_t nbytes);
// macOS
int setxattr(const char *path, const char *name, void *value, size_t size,
u_int32_t position, int options);
xattr
erases differences in those APIs and provides a consistent, rusty
interface.
ⓘ
// A consistent API that would work on every OS
pub fn set<N, P>(path: P, name: N, value: &[u8]) -> Result<()>
extattr
aims to provide bindings close to the native one.
ⓘ
// Linux
pub fn setxattr<P, S, B>(
path: P,
name: S,
value: B,
flags: Flags,
) -> Result<()>
// FreeBSD
pub fn extattr_set_file<P, S, B>(
path: P,
attrnamespace: AttrNamespace,
attrname: S,
data: B
) -> Result<()>
// macOS
pub fn setxattr<P, S, B>(
path: P,
name: S,
value: B,
position: u32,
options: Options
) -> Result<()>
In most cases, you would like to use xattr
instead of extattr
. However, if
you are on Linux and want to use that extra flags
argument, or you are on macOS
and want to use the arguments position
and options
, then extattr
probably
is a good choice:)
Structs
flags
used when setting EAsFunctions
Retrieves the value of the extended attribute identified by
name
and
associated with the file specified by the open file descriptor fd
in the
filesystem.Retrieves the list of extended attribute names associated with the file
specified by the open file descriptor
fd
in the filesystem.Removes the extended attribute identified by
name
and associated with the
file specified by the open file descriptor fd
.Sets the
value
of the extended attribute identified by name
and associated
with the file specified by the open file descriptor fd
.Retrieves the value of the extended attribute identified by
name
and
associated with the given path
in the filesystem. If path
is a symbolic
link, it will be dereferenced.Retrieves the value of the extended attribute identified by
name
and
associated with the given path
in the filesystem. If path
is a symbolic
link, the list of names associated with the link itself will be returned.Retrieves the list of extended attribute names associated with the given
path
in the filesystem. If path
is a symbolic link, it will be dereferenced.Retrieves the list of extended attribute names associated with the given
path
in the filesystem. If path
is a symbolic link, the list of names associated
with the link itself will be returned.Removes the extended attribute identified by
name
and associated with the
given path
in the filesystem. If path
is a symbolic link, extended
attribute is removed from the link itself.Sets the
value
of the extended attribute identified by name
and associated
with the given path
in the filesystem. If path
is a symbolic link, the
extended attribute is set on the link itself.Removes the extended attribute identified by
name
and associated with the
given path
in the filesystem. If path
is a symbolic link, it will be
dereferenced.Sets the
value
of the extended attribute identified by name
and associated
with the given path
in the filesystem. If path
is a symbolic link, it will
be dereferenced.Type Definitions
Customized
Result
type for extattr
.