]> wimlib.net Git - wimlib/blobdiff - src/extract.c
pipable WIM extraction: Take into account HARDLINKBYTES
[wimlib] / src / extract.c
index 51684f0e2b9c3249fc4865516eac1748e757e114..a8864af0cdccf97f7e355175f252311db7a1c49d 100644 (file)
@@ -740,9 +740,7 @@ extract_security(const tchar *path, struct apply_ctx *ctx,
                desc_size = sd->sizes[inode->i_security_id];
 
                ret = ctx->ops->set_security_descriptor(path, desc,
-                                                       desc_size, ctx,
-                                                       !!(ctx->extract_flags &
-                                                          WIMLIB_EXTRACT_FLAG_STRICT_ACLS));
+                                                       desc_size, ctx);
                if (ret) {
                        if (ctx->extract_flags & WIMLIB_EXTRACT_FLAG_STRICT_ACLS) {
                                ERROR_WITH_ERRNO("Failed to set security "
@@ -2058,10 +2056,17 @@ extract_tree(WIMStruct *wim, const tchar *wim_source_path, const tchar *target,
                 * However, we can get a reasonably accurate estimate by taking
                 * <TOTALBYTES> from the corresponding <IMAGE> in the WIM XML
                 * data.  This does assume that a full image is being extracted,
-                * but currently there is no API for doing otherwise.  */
+                * but currently there is no API for doing otherwise.  (Also,
+                * subtract <HARDLINKBYTES> from this if hard links are
+                * supported by the extraction mode.)  */
                ctx.progress.extract.total_bytes =
                        wim_info_get_image_total_bytes(wim->wim_info,
                                                       wim->current_image);
+               if (ctx.supported_features.hard_links) {
+                       ctx.progress.extract.total_bytes -=
+                               wim_info_get_image_hard_link_bytes(wim->wim_info,
+                                                                  wim->current_image);
+               }
        }
 
        /* Handle the special case of extracting a file to standard