X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwrite.c;h=4c68921cc9164efb926e58325f0e0a99109ec6bc;hb=58daaca96dc8b23e345342e844c58b1972e5fedf;hp=3b2aa18e0477b405288403ebed0b337c7aafa799;hpb=067465a7695f0f041437e2b222a54b574eccd2e5;p=wimlib diff --git a/src/write.c b/src/write.c index 3b2aa18e..4c68921c 100644 --- a/src/write.c +++ b/src/write.c @@ -377,7 +377,7 @@ write_wim_resource(struct wim_lookup_table_entry *lte, if (!(flags & WIMLIB_RESOURCE_FLAG_RECOMPRESS) && lte->resource_location == RESOURCE_IN_WIM && out_ctype != WIMLIB_COMPRESSION_TYPE_NONE && - wimlib_get_compression_type(lte->wim) == out_ctype) + lte->wim->compression_type == out_ctype) { flags |= WIMLIB_RESOURCE_FLAG_RAW; write_ctx.doing_sha = false; @@ -1207,7 +1207,7 @@ main_thread_process_next_stream(struct wim_lookup_table_entry *lte, void *_ctx) ctx->out_ctype == WIMLIB_COMPRESSION_TYPE_NONE || (lte->resource_location == RESOURCE_IN_WIM && !(ctx->write_resource_flags & WIMLIB_RESOURCE_FLAG_RECOMPRESS) && - wimlib_get_compression_type(lte->wim) == ctx->out_ctype)) + lte->wim->compression_type == ctx->out_ctype)) { /* Stream is too small or isn't being compressed. Process it by * the main thread when we have a chance. We can't necessarily @@ -1713,7 +1713,7 @@ write_wim_streams(WIMStruct *wim, int image, int write_flags, return write_stream_list(&stream_list, wim->lookup_table, wim->out_fd, - wimlib_get_compression_type(wim), + wim->compression_type, write_flags, num_threads, progress_func); @@ -1798,6 +1798,7 @@ finish_write(WIMStruct *w, int image, int write_flags, struct wim_header checkpoint_hdr; memcpy(&checkpoint_hdr, &hdr, sizeof(struct wim_header)); zero_resource_entry(&checkpoint_hdr.integrity); + checkpoint_hdr.flags |= WIM_HDR_FLAG_WRITE_IN_PROGRESS; ret = write_header(&checkpoint_hdr, w->out_fd); if (ret) goto out_close_wim; @@ -2112,11 +2113,11 @@ overwrite_wim_inplace(WIMStruct *w, int write_flags, return ret; } - /* Write header with write in progress flag set. */ - w->hdr.flags |= WIM_HDR_FLAG_WRITE_IN_PROGRESS; - ret = write_header(&w->hdr, w->out_fd); - w->hdr.flags &= ~WIM_HDR_FLAG_WRITE_IN_PROGRESS; + /* Set WIM_HDR_FLAG_WRITE_IN_PROGRESS flag in header. */ + ret = write_header_flags(w->hdr.flags | WIM_HDR_FLAG_WRITE_IN_PROGRESS, + w->out_fd); if (ret) { + ERROR_WITH_ERRNO("Error updating WIM header flags"); close_wim_writable(w); goto out_unlock_wim; } @@ -2133,7 +2134,7 @@ overwrite_wim_inplace(WIMStruct *w, int write_flags, ret = write_stream_list(&stream_list, w->lookup_table, w->out_fd, - wimlib_get_compression_type(w), + w->compression_type, write_flags, num_threads, progress_func);