Skip to content

Commit a48ddb8

Browse files
committed
add uname and gname properties to ArchiveEntry
1 parent fba9f93 commit a48ddb8

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

libarchive/entry.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,26 @@ def gid(self):
7070
def gid(self, gid):
7171
ffi.entry_set_gid(self._entry_p, gid)
7272

73+
@property
74+
def uname(self):
75+
return ffi.entry_uname_w(self._entry_p)
76+
77+
@uname.setter
78+
def uname(self, value):
79+
if not isinstance(value, bytes):
80+
value = value.encode('utf8')
81+
ffi.entry_update_uname_utf8(self._entry_p, value)
82+
83+
@property
84+
def gname(self):
85+
return ffi.entry_gname_w(self._entry_p)
86+
87+
@gname.setter
88+
def gname(self, value):
89+
if not isinstance(value, bytes):
90+
value = value.encode('utf8')
91+
ffi.entry_update_gname_utf8(self._entry_p, value)
92+
7393
def get_blocks(self, block_size=ffi.page_size):
7494
archive_p = self._archive_p
7595
buf = create_string_buffer(block_size)

libarchive/ffi.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ def get_write_filter_function(filter_name):
198198
ffi('entry_rdevminor', [c_archive_entry_p], c_uint)
199199
ffi('entry_uid', [c_archive_entry_p], c_longlong)
200200
ffi('entry_gid', [c_archive_entry_p], c_longlong)
201+
ffi('entry_uname_w', [c_archive_entry_p], c_wchar_p)
202+
ffi('entry_gname_w', [c_archive_entry_p], c_wchar_p)
201203

202204
ffi('entry_set_size', [c_archive_entry_p, c_longlong], None)
203205
ffi('entry_set_filetype', [c_archive_entry_p, c_uint], None)
@@ -220,6 +222,8 @@ def get_write_filter_function(filter_name):
220222

221223
ffi('entry_update_pathname_utf8', [c_archive_entry_p, c_char_p], c_int, check_int)
222224
ffi('entry_update_link_utf8', [c_archive_entry_p, c_char_p], c_int, check_int)
225+
ffi('entry_update_uname_utf8', [c_archive_entry_p, c_char_p], c_int, check_int)
226+
ffi('entry_update_gname_utf8', [c_archive_entry_p, c_char_p], c_int, check_int)
223227

224228
ffi('entry_clear', [c_archive_entry_p], c_archive_entry_p)
225229
ffi('entry_free', [c_archive_entry_p], None)

0 commit comments

Comments
 (0)