]> wimlib.net Git - wimlib/blobdiff - src/win32_apply.c
Rename dentry name fields
[wimlib] / src / win32_apply.c
index f4a2d753252181d1ba9ae5385a4aa93802868be8..45b1d653ac78fdf715e7abfe452aa76bd6c06f80 100644 (file)
@@ -458,7 +458,6 @@ static int
 will_externally_back_inode(struct wim_inode *inode, struct win32_apply_ctx *ctx,
                           const struct wim_dentry **excluded_dentry_ret)
 {
-       struct list_head *next;
        struct wim_dentry *dentry;
        struct blob_descriptor *blob;
        int ret;
@@ -486,10 +485,8 @@ will_externally_back_inode(struct wim_inode *inode, struct win32_apply_ctx *ctx,
         * We need to check the patterns in [PrepopulateList] against every name
         * of the inode, in case any of them match.
         */
-       next = inode->i_extraction_aliases.next;
-       do {
-               dentry = list_entry(next, struct wim_dentry,
-                                   d_extraction_alias_node);
+
+       inode_for_each_extraction_alias(dentry, inode) {
 
                ret = calculate_dentry_full_path(dentry);
                if (ret)
@@ -502,8 +499,7 @@ will_externally_back_inode(struct wim_inode *inode, struct win32_apply_ctx *ctx,
                                *excluded_dentry_ret = dentry;
                        return WIM_BACKING_EXCLUDED;
                }
-               next = next->next;
-       } while (next != &inode->i_extraction_aliases);
+       }
 
        inode->i_can_externally_back = 1;
        return 0;
@@ -1028,17 +1024,12 @@ prepare_target(struct list_head *dentry_list, struct win32_apply_ctx *ctx)
 static struct wim_dentry *
 first_extraction_alias(const struct wim_inode *inode)
 {
-       struct list_head *next = inode->i_extraction_aliases.next;
        struct wim_dentry *dentry;
 
-       do {
-               dentry = list_entry(next, struct wim_dentry,
-                                   d_extraction_alias_node);
+       inode_for_each_extraction_alias(dentry, inode)
                if (dentry_has_short_name(dentry))
-                       break;
-               next = next->next;
-       } while (next != &inode->i_extraction_aliases);
-       return dentry;
+                       return dentry;
+       return inode_first_extraction_dentry(inode);
 }
 
 /*
@@ -1158,7 +1149,7 @@ remove_conflicting_short_name(const struct wim_dentry *dentry, struct win32_appl
        name = &ctx->pathbuf.Buffer[ctx->pathbuf.Length / sizeof(wchar_t)];
        while (name != ctx->pathbuf.Buffer && *(name - 1) != L'\\')
                name--;
-       end = mempcpy(name, dentry->short_name, dentry->short_name_nbytes);
+       end = mempcpy(name, dentry->d_short_name, dentry->d_short_name_nbytes);
        ctx->pathbuf.Length = ((u8 *)end - (u8 *)ctx->pathbuf.Buffer);
 
        /* Open the conflicting file (by short name).  */
@@ -1235,7 +1226,7 @@ set_short_name(HANDLE h, const struct wim_dentry *dentry,
         */
 
        size_t bufsize = offsetof(FILE_NAME_INFORMATION, FileName) +
-                        max(dentry->short_name_nbytes, sizeof(wchar_t)) +
+                        max(dentry->d_short_name_nbytes, sizeof(wchar_t)) +
                         sizeof(wchar_t);
        u8 buf[bufsize] _aligned_attribute(8);
        FILE_NAME_INFORMATION *info = (FILE_NAME_INFORMATION *)buf;
@@ -1244,8 +1235,8 @@ set_short_name(HANDLE h, const struct wim_dentry *dentry,
 
        memset(buf, 0, bufsize);
 
-       info->FileNameLength = dentry->short_name_nbytes;
-       memcpy(info->FileName, dentry->short_name, dentry->short_name_nbytes);
+       info->FileNameLength = dentry->d_short_name_nbytes;
+       memcpy(info->FileName, dentry->d_short_name, dentry->d_short_name_nbytes);
 
 retry:
        status = (*func_NtSetInformationFile)(h, &ctx->iosb, info, bufsize,
@@ -1254,7 +1245,7 @@ retry:
                return 0;
 
        if (status == STATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME) {
-               if (dentry->short_name_nbytes == 0)
+               if (dentry->d_short_name_nbytes == 0)
                        return 0;
                if (!ctx->tried_to_enable_short_names) {
                        wchar_t volume[7];
@@ -1288,7 +1279,7 @@ retry:
         *   from files.
         */
        if (unlikely(status == STATUS_OBJECT_NAME_COLLISION) &&
-           dentry->short_name_nbytes && !tried_to_remove_existing)
+           dentry->d_short_name_nbytes && !tried_to_remove_existing)
        {
                tried_to_remove_existing = true;
                status = remove_conflicting_short_name(dentry, ctx);
@@ -1299,7 +1290,7 @@ retry:
        /* By default, failure to set short names is not an error (since short
         * names aren't too important anymore...).  */
        if (!(ctx->common.extract_flags & WIMLIB_EXTRACT_FLAG_STRICT_SHORT_NAMES)) {
-               if (dentry->short_name_nbytes)
+               if (dentry->d_short_name_nbytes)
                        ctx->num_set_short_name_failures++;
                else
                        ctx->num_remove_short_name_failures++;
@@ -1706,23 +1697,17 @@ static int
 create_links(HANDLE h, const struct wim_dentry *first_dentry,
             struct win32_apply_ctx *ctx)
 {
-       const struct wim_inode *inode;
-       const struct list_head *next;
+       const struct wim_inode *inode = first_dentry->d_inode;
        const struct wim_dentry *dentry;
        int ret;
 
-       inode = first_dentry->d_inode;
-       next = inode->i_extraction_aliases.next;
-       do {
-               dentry = list_entry(next, struct wim_dentry,
-                                   d_extraction_alias_node);
+       inode_for_each_extraction_alias(dentry, inode) {
                if (dentry != first_dentry) {
                        ret = create_link(h, dentry, ctx);
                        if (ret)
                                return ret;
                }
-               next = next->next;
-       } while (next != &inode->i_extraction_aliases);
+       }
        return 0;
 }
 
@@ -2178,18 +2163,12 @@ begin_extract_blob(struct blob_descriptor *blob, void *_ctx)
                } else {
                        /* Hard links not supported.  Extract the blob
                         * separately to each alias of the inode.  */
-                       struct list_head *next;
-
-                       next = inode->i_extraction_aliases.next;
-                       do {
-                               dentry = list_entry(next, struct wim_dentry,
-                                                   d_extraction_alias_node);
+                       inode_for_each_extraction_alias(dentry, inode) {
                                ret = begin_extract_blob_instance(blob, dentry, strm, ctx);
                                ret = check_apply_error(dentry, ctx, ret);
                                if (ret)
                                        goto fail;
-                               next = next->next;
-                       } while (next != &inode->i_extraction_aliases);
+                       }
                }
        }