- wdentry->creation_time = wim_timestamp_to_timespec(inode->i_creation_time);
- wdentry->last_write_time = wim_timestamp_to_timespec(inode->i_last_write_time);
- wdentry->last_access_time = wim_timestamp_to_timespec(inode->i_last_access_time);
-
- lte = inode_unnamed_lte(inode, wim->lookup_table);
- if (lte) {
- lte_to_wimlib_resource_entry(lte, &wdentry->streams[0].resource);
- } else if (!is_zero_hash(hash = inode_unnamed_stream_hash(inode))) {
- if (flags & WIMLIB_ITERATE_DIR_TREE_FLAG_RESOURCES_NEEDED)
- return stream_not_found_error(inode, hash);
- copy_hash(wdentry->streams[0].resource.sha1_hash, hash);
- wdentry->streams[0].resource.is_missing = 1;
+
+ wim_timestamp_to_wimlib_timespec(inode->i_creation_time,
+ &wdentry->creation_time,
+ &wdentry->creation_time_high);
+
+ wim_timestamp_to_wimlib_timespec(inode->i_last_write_time,
+ &wdentry->last_write_time,
+ &wdentry->last_write_time_high);
+
+ wim_timestamp_to_wimlib_timespec(inode->i_last_access_time,
+ &wdentry->last_access_time,
+ &wdentry->last_access_time_high);
+
+ if (inode_get_unix_data(inode, &unix_data)) {
+ wdentry->unix_uid = unix_data.uid;
+ wdentry->unix_gid = unix_data.gid;
+ wdentry->unix_mode = unix_data.mode;
+ wdentry->unix_rdev = unix_data.rdev;
+ }
+ object_id = inode_get_object_id(inode, &object_id_len);
+ if (unlikely(object_id != NULL)) {
+ memcpy(&wdentry->object_id, object_id,
+ min(object_id_len, sizeof(wdentry->object_id)));
+ }
+
+ strm = inode_get_unnamed_stream(inode, get_default_stream_type(inode));
+ if (strm) {
+ ret = stream_to_wimlib_stream_entry(inode, strm,
+ &wdentry->streams[0],
+ wim->blob_table, flags);
+ if (ret)
+ return ret;