summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
f5721c4)
These use a new compression flag, but it's actually just XPRESS with a
really small chunk size.
* wimlib v1.6.0 and later and WIMGAPI Windows 8 and later. */
#define WIM_HDR_FLAG_COMPRESS_LZMS 0x00080000
* wimlib v1.6.0 and later and WIMGAPI Windows 8 and later. */
#define WIM_HDR_FLAG_COMPRESS_LZMS 0x00080000
+/* XPRESS, with small chunk size??? */
+#define WIM_HDR_FLAG_COMPRESS_XPRESS_2 0x00200000
+
#endif /* _WIMLIB_HEADER_H */
#endif /* _WIMLIB_HEADER_H */
extern unsigned
wim_info_get_num_images(const struct wim_info *info);
extern unsigned
wim_info_get_num_images(const struct wim_info *info);
+extern void
+wim_info_set_wimboot(struct wim_info *info, int image, bool value);
+
extern int
xml_export_image(const struct wim_info *old_wim_info, int image,
struct wim_info **new_wim_info_p,
extern int
xml_export_image(const struct wim_info *old_wim_info, int image,
struct wim_info **new_wim_info_p,
WIM_HDR_FLAG_COMPRESS_LZX |
WIM_HDR_FLAG_COMPRESS_RESERVED |
WIM_HDR_FLAG_COMPRESS_XPRESS |
WIM_HDR_FLAG_COMPRESS_LZX |
WIM_HDR_FLAG_COMPRESS_RESERVED |
WIM_HDR_FLAG_COMPRESS_XPRESS |
- WIM_HDR_FLAG_COMPRESS_LZMS);
+ WIM_HDR_FLAG_COMPRESS_LZMS |
+ WIM_HDR_FLAG_COMPRESS_XPRESS_2);
switch (ctype) {
case WIMLIB_COMPRESSION_TYPE_NONE:
switch (ctype) {
case WIMLIB_COMPRESSION_TYPE_NONE:
{WIM_HDR_FLAG_COMPRESS_RESERVED,"COMPRESS_RESERVED"},
{WIM_HDR_FLAG_COMPRESS_LZX, "COMPRESS_LZX"},
{WIM_HDR_FLAG_COMPRESS_XPRESS, "COMPRESS_XPRESS"},
{WIM_HDR_FLAG_COMPRESS_RESERVED,"COMPRESS_RESERVED"},
{WIM_HDR_FLAG_COMPRESS_LZX, "COMPRESS_LZX"},
{WIM_HDR_FLAG_COMPRESS_XPRESS, "COMPRESS_XPRESS"},
+ {WIM_HDR_FLAG_COMPRESS_LZMS, "COMPRESS_LZMS"},
+ {WIM_HDR_FLAG_COMPRESS_XPRESS_2,"COMPRESS_XPRESS_2"},
};
/* API function documented in wimlib.h */
};
/* API function documented in wimlib.h */
return order >= 15 && order <= 21;
case WIMLIB_COMPRESSION_TYPE_XPRESS:
return order >= 15 && order <= 21;
case WIMLIB_COMPRESSION_TYPE_XPRESS:
- return order >= 15 && order <= 26;
+ return order >= 12 && order <= 26;
case WIMLIB_COMPRESSION_TYPE_LZMS:
return order >= 15 && order <= 30;
}
case WIMLIB_COMPRESSION_TYPE_LZMS:
return order >= 15 && order <= 30;
}
if (wim->hdr.flags & WIM_HDR_FLAG_COMPRESSION) {
if (wim->hdr.flags & WIM_HDR_FLAG_COMPRESS_LZX) {
wim->compression_type = WIMLIB_COMPRESSION_TYPE_LZX;
if (wim->hdr.flags & WIM_HDR_FLAG_COMPRESSION) {
if (wim->hdr.flags & WIM_HDR_FLAG_COMPRESS_LZX) {
wim->compression_type = WIMLIB_COMPRESSION_TYPE_LZX;
- } else if (wim->hdr.flags & WIM_HDR_FLAG_COMPRESS_XPRESS) {
+ } else if (wim->hdr.flags & (WIM_HDR_FLAG_COMPRESS_XPRESS |
+ WIM_HDR_FLAG_COMPRESS_XPRESS_2)) {
wim->compression_type = WIMLIB_COMPRESSION_TYPE_XPRESS;
} else if (wim->hdr.flags & WIM_HDR_FLAG_COMPRESS_LZMS) {
wim->compression_type = WIMLIB_COMPRESSION_TYPE_LZMS;
wim->compression_type = WIMLIB_COMPRESSION_TYPE_XPRESS;
} else if (wim->hdr.flags & WIM_HDR_FLAG_COMPRESS_LZMS) {
wim->compression_type = WIMLIB_COMPRESSION_TYPE_LZMS;
tchar *display_name;
tchar *display_description;
tchar *flags;
tchar *display_name;
tchar *display_description;
tchar *flags;
struct wim_lookup_table *lookup_table; /* temporary field */
};
struct wim_lookup_table *lookup_table; /* temporary field */
};
+void
+wim_info_set_wimboot(struct wim_info *info, int image, bool value)
+{
+ info->images[image - 1].wimboot = value;
+}
+
/* Architecture constants are from w64 mingw winnt.h */
#define PROCESSOR_ARCHITECTURE_INTEL 0
#define PROCESSOR_ARCHITECTURE_MIPS 1
/* Architecture constants are from w64 mingw winnt.h */
#define PROCESSOR_ARCHITECTURE_INTEL 0
#define PROCESSOR_ARCHITECTURE_MIPS 1
ret = node_get_string(child, &image_info->display_name);
} else if (node_name_is(child, "DISPLAYDESCRIPTION")) {
ret = node_get_string(child, &image_info->display_description);
ret = node_get_string(child, &image_info->display_name);
} else if (node_name_is(child, "DISPLAYDESCRIPTION")) {
ret = node_get_string(child, &image_info->display_description);
+ } else if (node_name_is(child, "WIMBOOT")) {
+ if (node_get_u64(child) == 1) {
+ image_info->wimboot = true;
+ }
}
if (ret != 0)
return ret;
}
if (ret != 0)
return ret;
+ if (image_info->wimboot) {
+ rc = xmlTextWriterWriteFormatElement(writer, "WIMBOOT", "%d", 1);
+ if (rc < 0)
+ return rc;
+ }
+
rc = xmlTextWriterEndElement(writer); /* </IMAGE> */
if (rc < 0)
return rc;
rc = xmlTextWriterEndElement(writer); /* </IMAGE> */
if (rc < 0)
return rc;
print_windows_info(&image_info->windows_info);
if (image_info->flags)
tprintf(T("Flags: %"TS"\n"), image_info->flags);
print_windows_info(&image_info->windows_info);
if (image_info->flags)
tprintf(T("Flags: %"TS"\n"), image_info->flags);
+ tprintf(T("WIMBoot compatible: %"TS"\n"),
+ image_info->wimboot ? T("yes") : T("no"));