]> wimlib.net Git - wimlib/blobdiff - src/win32_capture.c
Add new helper function for attaching newly scanned dentry tree
[wimlib] / src / win32_capture.c
index 95d8770012c5e8bce7a38a0dc864be46cc353de5..450dfb5898cf0dbf34e765ff0733b3ec39ade226 100644 (file)
@@ -415,9 +415,8 @@ winnt_recurse_directory(HANDLE h,
        {
                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;
@@ -450,8 +449,7 @@ winnt_recurse_directory(HANDLE h,
 
                                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;
@@ -744,6 +742,8 @@ winnt_load_reparse_data(HANDLE h, struct wim_inode *inode,
        }
 
        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,
@@ -1208,10 +1208,10 @@ winnt_build_dentry_tree_recursive(struct wim_dentry **root_ret,
        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.  */