#include "xml.h"
#include "io.h"
-struct args {
+struct split_args {
WIMStruct *w;
char *swm_base_name;
size_t swm_base_name_len;
w->hdr.lookup_table_res_entry.offset = lookup_table_offset;
w->hdr.lookup_table_res_entry.size =
xml_data_offset - lookup_table_offset;
- ret = finish_write(w, WIM_ALL_IMAGES, write_flags, 0);
- if (ret != 0)
- return ret;
-
- ret = fclose(w->out_fp);
- if (ret != 0)
- ret = WIMLIB_ERR_WRITE;
- w->out_fp = NULL;
- return ret;
+ return finish_write(w, WIM_ALL_IMAGES,
+ write_flags | WIMLIB_WRITE_FLAG_NO_LOOKUP_TABLE);
}
static int copy_resource_to_swm(struct lookup_table_entry *lte, void *__args)
{
- struct args *args = (struct args*)__args;
+ struct split_args *args = (struct split_args*)__args;
WIMStruct *w = args->w;
int ret;
args->lte_chain_tail = NULL;
args->lte_chain_head = NULL;
- sprintf(args->swm_base_name + args->swm_base_name_len, "%d",
- ++args->part_number);
- strcat(args->swm_base_name, args->swm_suffix);
+ sprintf(args->swm_base_name + args->swm_base_name_len, "%d%s",
+ ++args->part_number, args->swm_suffix);
w->hdr.part_number = args->part_number;
}
w->write_metadata = false;
- struct args args = {
+ struct split_args args = {
.w = w,
.swm_base_name = name,
.swm_base_name_len = swm_base_name_len,