FileAlternateNameInformation);
info = (const FILE_NAME_INFORMATION *)buf;
if (NT_SUCCESS(status) && info->FileNameLength != 0) {
- dentry->short_name = utf16le_dupz(info->FileName,
- info->FileNameLength);
- if (!dentry->short_name)
+ dentry->d_short_name = utf16le_dupz(info->FileName,
+ info->FileNameLength);
+ if (!dentry->d_short_name)
return STATUS_NO_MEMORY;
- dentry->short_name_nbytes = info->FileNameLength;
+ dentry->d_short_name_nbytes = info->FileNameLength;
}
return status;
}
{
const FILE_NAMES_INFORMATION *info = buf;
for (;;) {
- if (!(info->FileNameLength == 2 && info->FileName[0] == L'.') &&
- !(info->FileNameLength == 4 && info->FileName[0] == L'.' &&
- info->FileName[1] == L'.'))
+ if (!should_ignore_filename(info->FileName,
+ info->FileNameLength / 2))
{
wchar_t *p;
wchar_t *filename;
if (ret)
goto out_free_buf;
- if (child)
- dentry_add_child(parent, child);
+ attach_scanned_tree(parent, child, params->blob_table);
}
if (info->NextEntryOffset == 0)
break;
}
inode->i_reparse_tag = le32_to_cpu(rpbuf.rptag);
+ inode->i_rp_reserved = le16_to_cpu(rpbuf.rpreserved);
+
if (!inode_add_stream_with_data(inode,
STREAM_TYPE_REPARSE_POINT,
NO_STREAM_NAME,
ACCESS_MASK requestedPerms;
u64 sort_key;
- ret = try_exclude(full_path, full_path_nchars, params);
- if (ret < 0) /* Excluded? */
+ ret = try_exclude(full_path, params);
+ if (unlikely(ret < 0)) /* Excluded? */
goto out_progress;
- if (ret > 0) /* Error? */
+ if (unlikely(ret > 0)) /* Error? */
goto out;
/* Open the file. */
filename,
file_info.ino,
params->capture_root_dev,
- (file_info.num_links <= 1 ||
- (file_info.attributes & FILE_ATTRIBUTE_DIRECTORY)),
+ (file_info.num_links <= 1),
&root);
if (ret)
goto out;