Update hyperlinks Use https whenever possible, and replace some outdated links.
compiler.h: remove _aligned_attribute This abstraction layer serves no purpose. Just use __attribute__((aligned(n))) directly.
Consistently use _WIN32 instead of __WIN32__ _WIN32 works with all compilers, while __WIN32__ is MinGW-specific. This project used __WIN32__ in files that only support MinGW, and _WIN32 in other files such as the library header and example programs. One place even used WIN32. Avoid this unnecessary complication by just always using _WIN32.
Remove support for Windows XP
Warn rather than abort if SHA-1 is same but size is different Assertions should only be used for bugs in wimlib, but this scenario can also happen if there is a SHA-1 collision, or if the SHA-1 hash provided by the filesystem for a WIM-backed file on Windows is wrong.
win32: update WOF ioctl definitions Use the "official" Microsoft struct and field names, and only define things when they aren't already defined (since some of them were recently added to MinGW's winioctl.h, causing build errors).
Add support for a data recovery mode Add support for extracting file data even if it is corrupted (i.e. if its hash doesn't match or some of its chunks can't be decompressed). This isn't recommended for general use, but it could be useful for recovering data from a corrupted WIM archive.
win32_capture: avoid unnecessary fallback to recursive scan When doing the fast MFT scan (via FSCTL_QUERY_FILE_LAYOUT) and we find a directory that needs to fall back to the standard scan, we actually only need to fall back for the directory itself -- not also its children. Optimize things accordingly. Reported at https://wimlib.net/forums/viewtopic.php?f=1&t=533
win32_capture: recognize STATUS_NOT_SUPPORTED (fixes for WinXP)
Capture and apply extended attributes on Windows DISM recently started supporting capturing and applying xattrs on Windows (though, it is broken when applying multiple xattrs per file). Make wimlib support the same, using the same on-disk format. Unlike DISM it is on by default, not controlled by an option, since there doesn't seem to be a good reason to make it an option. Also deprecate the tagged item wimlib was using to store xattrs on Linux and switch over to the format used by WIMGAPI to store xattrs on Windows, so that new WIM images use the same xattr format on both platforms. One caveat is that on Linux XATTR_SIZE_MAX is 65536 whereas in the new WIM tagged item format we can only store up to 65535 bytes. That is unlikely to matter though. As future work, the NTFS-3G capture and apply backends should be updated to support xattrs too.
Use dynamically-sized path buffer when scanning files This is needed to guarantee that no buffer overflow can occur when scanning a deep directory structure. The new way also avoids using PATH_MAX, which fixes a build error on systems that don't define it.
resource: pass blob and offset to consume_chunk This makes it so that users don't need to keep track of the current blob and offset themselves.
Improved handling of Data Deduplication reparse points
win32_capture: Enlarge FSCTL_QUERY_FILE_LAYOUT buffer when needed 32768 bytes is not always enough.
Various renamings from "capture" to "scan"
Add support for capturing/applying object IDs
Directly link with ntdll on Windows
win32_capture: handle NtQuerySecurityObject returning an empty descriptor
win32_common: add winnt_fsctl() helper method This is needed to handle STATUS_PENDING.
win32_capture.c: retry NtReadFile() requests