1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
--- bsd/extattr.pyx.orig 2022-04-25 12:03:03 UTC
+++ bsd/extattr.pyx
@@ -71,7 +71,7 @@ def get_namespace(*args):
raise ValueError("%s is not a valid extattr namespace" % n)
retval[n] = _namespace_mapping[n]
return retval
-
+
def get(fobj, namespace = Namespaces.USER, attrname = None, follow = True):
"""Wrapper for extattr_get(3) API.
@@ -215,7 +215,7 @@ def set(fobj, namespace = Namespaces.USER, attr = None
def set(fobj, namespace = Namespaces.USER, attr = None, follow = True):
"""Wrapper for the extattr_set(3) API.
-
+
:Parameters:
- fobj (file, str, int): the file object upon which to operate.
If a string, this is the path; if a file, the file object
@@ -241,7 +241,7 @@ def set(fobj, namespace = Namespaces.USER, attr = None
char *attr_data
size_t data_len
ssize_t kr
-
+
pname = NULL
data_buffer = NULL
data_len = 0
@@ -261,11 +261,11 @@ def set(fobj, namespace = Namespaces.USER, attr = None
attr_name = k
attr_data = v
data_len = len(v)
-
+
if isinstance(fobj, file_types):
- kr = defs.exattr_set_fd(fobj.fileno(), namespace, attr_name, attr_data, data_len)
+ kr = defs.extattr_set_fd(fobj.fileno(), namespace, attr_name, attr_data, data_len)
elif type(fobj) is int:
- kr = defs.exattr_set_fd(fobj, namespace, attr_name, attr_data, data_len)
+ kr = defs.extattr_set_fd(fobj, namespace, attr_name, attr_data, data_len)
elif type(fobj) is str:
if follow:
kr = defs.extattr_set_file(fobj, namespace, attr_name, attr_data, data_len)
@@ -304,11 +304,11 @@ def _list(fobj, namespace = Namespaces.USER, follow =
size_t nbytes
ssize_t kr
unsigned char *ptr
-
+
retval = []
pname = NULL
data_buffer = NULL
-
+
try:
if isinstance(fobj, file_types):
kr = defs.extattr_list_fd(fobj.fileno(), namespace, data_buffer, 0)
@@ -322,7 +322,7 @@ def _list(fobj, namespace = Namespaces.USER, follow =
kr = defs.extattr_list_link(pname, namespace, NULL, 0)
else:
raise ValueError("Unknown file type")
-
+
if kr == -1:
raise OSError(errno, os.strerror(errno))
@@ -331,7 +331,7 @@ def _list(fobj, namespace = Namespaces.USER, follow =
data_buffer = <char*>malloc(nbytes)
if not data_buffer:
raise MemoryError()
-
+
if isinstance(fobj, file_types):
kr = defs.extattr_list_file(fobj.fileno(), namespace, data_buffer, nbytes)
elif type(fobj) is int:
@@ -358,6 +358,5 @@ def _list(fobj, namespace = Namespaces.USER, follow =
finally:
if data_buffer:
free(data_buffer)
-
-list = _list
+list = _list
|