-int
-set_wim_hdr_cflags(int ctype, struct wim_header *hdr)
-{
- hdr->flags &= ~(WIM_HDR_FLAG_COMPRESSION |
- WIM_HDR_FLAG_COMPRESS_LZX |
- WIM_HDR_FLAG_COMPRESS_RESERVED |
- WIM_HDR_FLAG_COMPRESS_XPRESS |
- WIM_HDR_FLAG_COMPRESS_LZMS |
- WIM_HDR_FLAG_COMPRESS_XPRESS_2);
- switch (ctype) {
-
- case WIMLIB_COMPRESSION_TYPE_NONE:
- return 0;
-
- case WIMLIB_COMPRESSION_TYPE_LZX:
- hdr->flags |= WIM_HDR_FLAG_COMPRESSION | WIM_HDR_FLAG_COMPRESS_LZX;
- return 0;
-
- case WIMLIB_COMPRESSION_TYPE_XPRESS:
- hdr->flags |= WIM_HDR_FLAG_COMPRESSION | WIM_HDR_FLAG_COMPRESS_XPRESS;
- return 0;
-
- case WIMLIB_COMPRESSION_TYPE_LZMS:
- hdr->flags |= WIM_HDR_FLAG_COMPRESSION | WIM_HDR_FLAG_COMPRESS_LZMS;
- return 0;
-
- default:
- return WIMLIB_ERR_INVALID_COMPRESSION_TYPE;
- }
-}
-
-/*
- * Initializes the header for a WIM file.
- */
-int
-init_wim_header(struct wim_header *hdr, int ctype, u32 chunk_size)
-{
- memset(hdr, 0, sizeof(struct wim_header));
- hdr->magic = WIM_MAGIC;
-
- if (ctype == WIMLIB_COMPRESSION_TYPE_LZMS)
- hdr->wim_version = WIM_VERSION_SOLID;
- else
- hdr->wim_version = WIM_VERSION_DEFAULT;
- if (set_wim_hdr_cflags(ctype, hdr)) {
- ERROR("Invalid compression type specified (%d)", ctype);
- return WIMLIB_ERR_INVALID_COMPRESSION_TYPE;
- }
- hdr->chunk_size = chunk_size;
- hdr->total_parts = 1;
- hdr->part_number = 1;
- randomize_byte_array(hdr->guid, sizeof(hdr->guid));
- return 0;
-}
-
-struct hdr_flag {