A small change has been made to XPRESS compression and it should improve
the compression ratio slightly.
+ A change was made that may improve performance slightly when applying a
+ WIM image to a NTFS volume.
+
Microsoft has managed to introduce even more bugs into their software,
and now the WIMs for Windows 8 have incorrect (too low) reference counts
for some streams. This is unsafe because such streams can be removed
requires reading the metadata for all images in the WIM, so this will
make these operations noticably slower on WIMs with multiple images.
+ Various other bugfixes.
+
Version 1.2.0:
Appending images to a WIM is now be done by default without re-building
the whole WIM. Use the --rebuild flag to get the old behavior (which
descriptors in a mounted WIM.
By default, changes to a read-write WIM are made in-place by appending to the
-WIM. This is ideal for big WIM files, since the entire file doesn't have to be
+WIM. This is nice for big WIM files, since the entire file doesn't have to be
rebuilt to make a small change. But, if you are making many changes to a
read-write mounted WIM, especially deleting large files, it is suggested to
provide the \fB--rebuild\fR option to \fBimagex unmount\fR to force the WIM to
script_name="$(basename $0)"
PREFIX_REG="::"
+WIMLIB_VERSION=1.2.1
calc_columns () {
STAT_COL=80
}
version() {
- echo "$script_name (wimlib 0.4.8)"
+ echo "$script_name (wimlib $WIMLIB_VERSION)"
exit 0
}
}
/* If there's a dentry with a DOS name, extract it first */
if (dentry_with_dos_name && !dentry_with_dos_name->is_extracted) {
- char *p;
- const char *dir_name;
- char orig;
int ret;
ntfs_volume *vol = (*dir_ni_p)->vol;
ntfs_inode_close(ni);
out_free_utf8_name:
FREE(utf8_name);
-out:
return ret;
}
((u16*)name_utf16)[i] = cpu_to_le16('\\');
size_t len = 12 + utf16_len * 2;
void *buf = MALLOC(len);
- if (!buf) {
- FREE(name_utf16);
- return WIMLIB_ERR_NOMEM;
+ if (buf) {
+ u8 *p = buf;
+ p = put_u16(p, utf16_len); /* Substitute name offset */
+ p = put_u16(p, utf16_len); /* Substitute name length */
+ p = put_u16(p, 0); /* Print name offset */
+ p = put_u16(p, utf16_len); /* Print name length */
+ p = put_u32(p, 1); /* flags: 0 iff *full* target, including drive letter??? */
+ p = put_bytes(p, utf16_len, (const u8*)name_utf16);
+ p = put_bytes(p, utf16_len, (const u8*)name_utf16);
+ *len_ret = len;
+ *buf_ret = buf;
+ ret = 0;
+ } else {
+ ret = WIMLIB_ERR_NOMEM;
}
-
- u8 *p = buf;
- p = put_u16(p, utf16_len); /* Substitute name offset */
- p = put_u16(p, utf16_len); /* Substitute name length */
- p = put_u16(p, 0); /* Print name offset */
- p = put_u16(p, utf16_len); /* Print name length */
- p = put_u32(p, 1); /* flags: 0 iff *full* target, including drive letter??? */
- p = put_bytes(p, utf16_len, (const u8*)name_utf16);
- p = put_bytes(p, utf16_len, (const u8*)name_utf16);
- *len_ret = len;
- *buf_ret = buf;
-out:
FREE(name_utf16);
- return 0;
+ return ret;
}
/* Get the symlink target from a dentry.