1 use libc::{c_char, c_int, c_void, size_t, ssize_t, uint32_t};
2
3 const XATTR_NOFOLLOW: c_int = 0x0001;
4
5 #[inline(always)]
fremovexattr(fd: c_int, name: *const c_char) -> c_int6 pub unsafe fn fremovexattr(fd: c_int, name: *const c_char) -> c_int {
7 extern "C" {
8 fn fremovexattr(fd: c_int, name: *const c_char, options: c_int) -> c_int;
9 }
10 fremovexattr(fd, name, 0)
11 }
12
13 #[inline(always)]
fsetxattr( fd: c_int, name: *const c_char, value: *const c_void, size: size_t, ) -> ssize_t14 pub unsafe fn fsetxattr(
15 fd: c_int,
16 name: *const c_char,
17 value: *const c_void,
18 size: size_t,
19 ) -> ssize_t {
20 extern "C" {
21 fn fsetxattr(
22 fd: c_int,
23 name: *const c_char,
24 value: *const c_void,
25 size: size_t,
26 position: uint32_t,
27 options: c_int,
28 ) -> ssize_t;
29 }
30 fsetxattr(fd, name, value, size, 0, 0)
31 }
32
33 #[inline(always)]
fgetxattr( fd: c_int, name: *const c_char, value: *mut c_void, size: size_t, ) -> ssize_t34 pub unsafe fn fgetxattr(
35 fd: c_int,
36 name: *const c_char,
37 value: *mut c_void,
38 size: size_t,
39 ) -> ssize_t {
40 extern "C" {
41 fn fgetxattr(
42 fd: c_int,
43 name: *const c_char,
44 value: *mut c_void,
45 size: size_t,
46 position: uint32_t,
47 options: c_int,
48 ) -> ssize_t;
49 }
50 fgetxattr(fd, name, value, size, 0, 0)
51 }
52
53 #[inline(always)]
flistxattr(fd: c_int, buf: *mut c_char, size: size_t) -> ssize_t54 pub unsafe fn flistxattr(fd: c_int, buf: *mut c_char, size: size_t) -> ssize_t {
55 extern "C" {
56 fn flistxattr(fd: c_int, buf: *mut c_char, size: size_t, options: c_int) -> ssize_t;
57 }
58 flistxattr(fd, buf, size, 0)
59 }
60
61 #[inline(always)]
lremovexattr(path: *const c_char, name: *const c_char) -> c_int62 pub unsafe fn lremovexattr(path: *const c_char, name: *const c_char) -> c_int {
63 extern "C" {
64 fn removexattr(path: *const c_char, name: *const c_char, options: c_int) -> c_int;
65 }
66 removexattr(path, name, XATTR_NOFOLLOW)
67 }
68
69 #[inline(always)]
lsetxattr( path: *const c_char, name: *const c_char, value: *const c_void, size: size_t, ) -> ssize_t70 pub unsafe fn lsetxattr(
71 path: *const c_char,
72 name: *const c_char,
73 value: *const c_void,
74 size: size_t,
75 ) -> ssize_t {
76 extern "C" {
77 fn setxattr(
78 path: *const c_char,
79 name: *const c_char,
80 value: *const c_void,
81 size: size_t,
82 position: uint32_t,
83 options: c_int,
84 ) -> ssize_t;
85 }
86 setxattr(path, name, value, size, 0, XATTR_NOFOLLOW)
87 }
88
89 #[inline(always)]
lgetxattr( path: *const c_char, name: *const c_char, value: *mut c_void, size: size_t, ) -> ssize_t90 pub unsafe fn lgetxattr(
91 path: *const c_char,
92 name: *const c_char,
93 value: *mut c_void,
94 size: size_t,
95 ) -> ssize_t {
96 extern "C" {
97 fn getxattr(
98 path: *const c_char,
99 name: *const c_char,
100 value: *mut c_void,
101 size: size_t,
102 position: uint32_t,
103 options: c_int,
104 ) -> ssize_t;
105 }
106 getxattr(path, name, value, size, 0, XATTR_NOFOLLOW)
107 }
108
109 #[inline(always)]
llistxattr(path: *const c_char, buf: *mut c_char, size: size_t) -> ssize_t110 pub unsafe fn llistxattr(path: *const c_char, buf: *mut c_char, size: size_t) -> ssize_t {
111 extern "C" {
112 fn listxattr(
113 path: *const c_char,
114 buf: *mut c_char,
115 size: size_t,
116 options: c_int,
117 ) -> ssize_t;
118 }
119 listxattr(path, buf, size, XATTR_NOFOLLOW)
120 }
121