370 #include <inttypes.h>
377 #define WIMLIB_MAJOR_VERSION 1
380 #define WIMLIB_MINOR_VERSION 8
383 #define WIMLIB_PATCH_VERSION 3
393 #ifndef WIMLIB_WIMSTRUCT_DECLARED
395 #define WIMLIB_WIMSTRUCT_DECLARED
408 # define WIMLIB_WIM_PATH_SEPARATOR '\\'
409 # define WIMLIB_WIM_PATH_SEPARATOR_STRING L"\\"
413 # define WIMLIB_WIM_PATH_SEPARATOR '/'
414 # define WIMLIB_WIM_PATH_SEPARATOR_STRING "/"
418 #define WIMLIB_WIM_ROOT_PATH WIMLIB_WIM_PATH_SEPARATOR_STRING
422 #define WIMLIB_IS_WIM_ROOT_PATH(path) \
423 ((path)[0] == WIMLIB_WIM_PATH_SEPARATOR && \
427 #define WIMLIB_GUID_LEN 16
975 const wimlib_tchar *
to;
1224 #define WIMLIB_CHANGE_READONLY_FLAG 0x00000001
1228 #define WIMLIB_CHANGE_GUID 0x00000002
1232 #define WIMLIB_CHANGE_BOOT_INDEX 0x00000004
1240 #define WIMLIB_CHANGE_RPFIX_FLAG 0x00000008
1471 #define WIMLIB_FILE_ATTRIBUTE_READONLY 0x00000001
1472 #define WIMLIB_FILE_ATTRIBUTE_HIDDEN 0x00000002
1473 #define WIMLIB_FILE_ATTRIBUTE_SYSTEM 0x00000004
1474 #define WIMLIB_FILE_ATTRIBUTE_DIRECTORY 0x00000010
1475 #define WIMLIB_FILE_ATTRIBUTE_ARCHIVE 0x00000020
1476 #define WIMLIB_FILE_ATTRIBUTE_DEVICE 0x00000040
1477 #define WIMLIB_FILE_ATTRIBUTE_NORMAL 0x00000080
1478 #define WIMLIB_FILE_ATTRIBUTE_TEMPORARY 0x00000100
1479 #define WIMLIB_FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
1480 #define WIMLIB_FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
1481 #define WIMLIB_FILE_ATTRIBUTE_COMPRESSED 0x00000800
1482 #define WIMLIB_FILE_ATTRIBUTE_OFFLINE 0x00001000
1483 #define WIMLIB_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
1484 #define WIMLIB_FILE_ATTRIBUTE_ENCRYPTED 0x00004000
1485 #define WIMLIB_FILE_ATTRIBUTE_VIRTUAL 0x00010000
1492 #define WIMLIB_REPARSE_TAG_RESERVED_ZERO 0x00000000
1493 #define WIMLIB_REPARSE_TAG_RESERVED_ONE 0x00000001
1494 #define WIMLIB_REPARSE_TAG_MOUNT_POINT 0xA0000003
1495 #define WIMLIB_REPARSE_TAG_HSM 0xC0000004
1496 #define WIMLIB_REPARSE_TAG_HSM2 0x80000006
1497 #define WIMLIB_REPARSE_TAG_DRIVER_EXTENDER 0x80000005
1498 #define WIMLIB_REPARSE_TAG_SIS 0x80000007
1499 #define WIMLIB_REPARSE_TAG_DFS 0x8000000A
1500 #define WIMLIB_REPARSE_TAG_DFSR 0x80000012
1501 #define WIMLIB_REPARSE_TAG_FILTER_MANAGER 0x8000000B
1502 #define WIMLIB_REPARSE_TAG_WOF 0x80000017
1503 #define WIMLIB_REPARSE_TAG_SYMLINK 0xA000000C
1595 #define WIMLIB_ITERATE_DIR_TREE_FLAG_RECURSIVE 0x00000001
1599 #define WIMLIB_ITERATE_DIR_TREE_FLAG_CHILDREN 0x00000002
1606 #define WIMLIB_ITERATE_DIR_TREE_FLAG_RESOURCES_NEEDED 0x00000004
1622 #define WIMLIB_ADD_FLAG_NTFS 0x00000001
1626 #define WIMLIB_ADD_FLAG_DEREFERENCE 0x00000002
1631 #define WIMLIB_ADD_FLAG_VERBOSE 0x00000004
1641 #define WIMLIB_ADD_FLAG_BOOT 0x00000008
1648 #define WIMLIB_ADD_FLAG_UNIX_DATA 0x00000010
1652 #define WIMLIB_ADD_FLAG_NO_ACLS 0x00000020
1659 #define WIMLIB_ADD_FLAG_STRICT_ACLS 0x00000040
1665 #define WIMLIB_ADD_FLAG_EXCLUDE_VERBOSE 0x00000080
1674 #define WIMLIB_ADD_FLAG_RPFIX 0x00000100
1677 #define WIMLIB_ADD_FLAG_NORPFIX 0x00000200
1683 #define WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE 0x00000400
1700 #define WIMLIB_ADD_FLAG_WINCONFIG 0x00000800
1730 #define WIMLIB_ADD_FLAG_WIMBOOT 0x00001000
1739 #define WIMLIB_ADD_FLAG_NO_REPLACE 0x00002000
1748 #define WIMLIB_ADD_FLAG_TEST_FILE_EXCLUSION 0x00004000
1752 #define WIMLIB_ADD_IMAGE_FLAG_NTFS WIMLIB_ADD_FLAG_NTFS
1753 #define WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE WIMLIB_ADD_FLAG_DEREFERENCE
1754 #define WIMLIB_ADD_IMAGE_FLAG_VERBOSE WIMLIB_ADD_FLAG_VERBOSE
1755 #define WIMLIB_ADD_IMAGE_FLAG_BOOT WIMLIB_ADD_FLAG_BOOT
1756 #define WIMLIB_ADD_IMAGE_FLAG_UNIX_DATA WIMLIB_ADD_FLAG_UNIX_DATA
1757 #define WIMLIB_ADD_IMAGE_FLAG_NO_ACLS WIMLIB_ADD_FLAG_NO_ACLS
1758 #define WIMLIB_ADD_IMAGE_FLAG_STRICT_ACLS WIMLIB_ADD_FLAG_STRICT_ACLS
1759 #define WIMLIB_ADD_IMAGE_FLAG_EXCLUDE_VERBOSE WIMLIB_ADD_FLAG_EXCLUDE_VERBOSE
1760 #define WIMLIB_ADD_IMAGE_FLAG_RPFIX WIMLIB_ADD_FLAG_RPFIX
1761 #define WIMLIB_ADD_IMAGE_FLAG_NORPFIX WIMLIB_ADD_FLAG_NORPFIX
1762 #define WIMLIB_ADD_IMAGE_FLAG_NO_UNSUPPORTED_EXCLUDE \
1763 WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE
1764 #define WIMLIB_ADD_IMAGE_FLAG_WINCONFIG WIMLIB_ADD_FLAG_WINCONFIG
1765 #define WIMLIB_ADD_IMAGE_FLAG_WIMBOOT WIMLIB_ADD_FLAG_WIMBOOT
1773 #define WIMLIB_DELETE_FLAG_FORCE 0x00000001
1777 #define WIMLIB_DELETE_FLAG_RECURSIVE 0x00000002
1789 #define WIMLIB_EXPORT_FLAG_BOOT 0x00000001
1794 #define WIMLIB_EXPORT_FLAG_NO_NAMES 0x00000002
1797 #define WIMLIB_EXPORT_FLAG_NO_DESCRIPTIONS 0x00000004
1802 #define WIMLIB_EXPORT_FLAG_GIFT 0x00000008
1819 #define WIMLIB_EXPORT_FLAG_WIMBOOT 0x00000010
1834 #define WIMLIB_EXTRACT_FLAG_NTFS 0x00000001
1839 #define WIMLIB_EXTRACT_FLAG_UNIX_DATA 0x00000020
1843 #define WIMLIB_EXTRACT_FLAG_NO_ACLS 0x00000040
1852 #define WIMLIB_EXTRACT_FLAG_STRICT_ACLS 0x00000080
1861 #define WIMLIB_EXTRACT_FLAG_RPFIX 0x00000100
1866 #define WIMLIB_EXTRACT_FLAG_NORPFIX 0x00000200
1870 #define WIMLIB_EXTRACT_FLAG_TO_STDOUT 0x00000400
1880 #define WIMLIB_EXTRACT_FLAG_REPLACE_INVALID_FILENAMES 0x00000800
1890 #define WIMLIB_EXTRACT_FLAG_ALL_CASE_CONFLICTS 0x00001000
1895 #define WIMLIB_EXTRACT_FLAG_STRICT_TIMESTAMPS 0x00002000
1899 #define WIMLIB_EXTRACT_FLAG_STRICT_SHORT_NAMES 0x00004000
1905 #define WIMLIB_EXTRACT_FLAG_STRICT_SYMLINKS 0x00008000
1908 #define WIMLIB_EXTRACT_FLAG_RESUME 0x00010000
1922 #define WIMLIB_EXTRACT_FLAG_GLOB_PATHS 0x00040000
1927 #define WIMLIB_EXTRACT_FLAG_STRICT_GLOB 0x00080000
1933 #define WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES 0x00100000
1940 #define WIMLIB_EXTRACT_FLAG_NO_PRESERVE_DIR_STRUCTURE 0x00200000
1947 #define WIMLIB_EXTRACT_FLAG_WIMBOOT 0x00400000
1957 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K 0x01000000
1961 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS8K 0x02000000
1965 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS16K 0x04000000
1969 #define WIMLIB_EXTRACT_FLAG_COMPACT_LZX 0x08000000
1976 #define WIMLIB_MOUNT_FLAG_READWRITE 0x00000001
1979 #define WIMLIB_MOUNT_FLAG_DEBUG 0x00000002
1982 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_NONE 0x00000004
1987 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_XATTR 0x00000008
1991 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_WINDOWS 0x00000010
1995 #define WIMLIB_MOUNT_FLAG_UNIX_DATA 0x00000020
1999 #define WIMLIB_MOUNT_FLAG_ALLOW_OTHER 0x00000040
2011 #define WIMLIB_OPEN_FLAG_CHECK_INTEGRITY 0x00000001
2016 #define WIMLIB_OPEN_FLAG_ERROR_IF_SPLIT 0x00000002
2026 #define WIMLIB_OPEN_FLAG_WRITE_ACCESS 0x00000004
2034 #define WIMLIB_UNMOUNT_FLAG_CHECK_INTEGRITY 0x00000001
2038 #define WIMLIB_UNMOUNT_FLAG_COMMIT 0x00000002
2042 #define WIMLIB_UNMOUNT_FLAG_REBUILD 0x00000004
2046 #define WIMLIB_UNMOUNT_FLAG_RECOMPRESS 0x00000008
2056 #define WIMLIB_UNMOUNT_FLAG_FORCE 0x00000010
2062 #define WIMLIB_UNMOUNT_FLAG_NEW_IMAGE 0x00000020
2070 #define WIMLIB_UPDATE_FLAG_SEND_PROGRESS 0x00000001
2084 #define WIMLIB_WRITE_FLAG_CHECK_INTEGRITY 0x00000001
2091 #define WIMLIB_WRITE_FLAG_NO_CHECK_INTEGRITY 0x00000002
2106 #define WIMLIB_WRITE_FLAG_PIPABLE 0x00000004
2112 #define WIMLIB_WRITE_FLAG_NOT_PIPABLE 0x00000008
2139 #define WIMLIB_WRITE_FLAG_RECOMPRESS 0x00000010
2154 #define WIMLIB_WRITE_FLAG_FSYNC 0x00000020
2168 #define WIMLIB_WRITE_FLAG_REBUILD 0x00000040
2179 #define WIMLIB_WRITE_FLAG_SOFT_DELETE 0x00000080
2190 #define WIMLIB_WRITE_FLAG_IGNORE_READONLY_FLAG 0x00000100
2198 #define WIMLIB_WRITE_FLAG_SKIP_EXTERNAL_WIMS 0x00000200
2201 #define WIMLIB_WRITE_FLAG_STREAMS_OK 0x00000400
2209 #define WIMLIB_WRITE_FLAG_RETAIN_GUID 0x00000800
2246 #define WIMLIB_WRITE_FLAG_SOLID 0x00001000
2252 #define WIMLIB_WRITE_FLAG_PACK_STREAMS WIMLIB_WRITE_FLAG_SOLID
2259 #define WIMLIB_WRITE_FLAG_SEND_DONE_WITH_FILE_MESSAGES 0x00002000
2266 #define WIMLIB_WRITE_FLAG_NO_SOLID_SORT 0x00004000
2284 #define WIMLIB_WRITE_FLAG_UNSAFE_COMPACT 0x00008000
2293 #define WIMLIB_INIT_FLAG_ASSUME_UTF8 0x00000001
2303 #define WIMLIB_INIT_FLAG_DONT_ACQUIRE_PRIVILEGES 0x00000002
2310 #define WIMLIB_INIT_FLAG_STRICT_CAPTURE_PRIVILEGES 0x00000004
2317 #define WIMLIB_INIT_FLAG_STRICT_APPLY_PRIVILEGES 0x00000008
2321 #define WIMLIB_INIT_FLAG_DEFAULT_CASE_SENSITIVE 0x00000010
2325 #define WIMLIB_INIT_FLAG_DEFAULT_CASE_INSENSITIVE 0x00000020
2333 #define WIMLIB_REF_FLAG_GLOB_ENABLE 0x00000001
2342 #define WIMLIB_REF_FLAG_GLOB_ERR_ON_NOMATCH 0x00000002
2512 #define WIMLIB_NO_IMAGE 0
2515 #define WIMLIB_ALL_IMAGES (-1)
2549 const wimlib_tchar *name,
2605 const wimlib_tchar *source,
2606 const wimlib_tchar *name,
2607 const wimlib_tchar *config_file,
2629 const wimlib_tchar *name,
2630 const wimlib_tchar *config_file,
2644 const wimlib_tchar *fs_source_path,
2719 const wimlib_tchar *path,
int delete_flags);
2791 const wimlib_tchar *dest_name,
2792 const wimlib_tchar *dest_description,
2904 const wimlib_tchar *target,
int extract_flags);
2946 const wimlib_tchar *image_num_or_name,
2947 const wimlib_tchar *target,
int extract_flags);
2960 const wimlib_tchar *image_num_or_name,
2961 const wimlib_tchar *target,
2984 const wimlib_tchar *target,
2985 const wimlib_tchar *path_list_file,
3064 const wimlib_tchar *target,
3065 const wimlib_tchar *
const *paths,
3114 extern const wimlib_tchar *
3130 extern const wimlib_tchar *
3150 extern const wimlib_tchar *
3169 extern const wimlib_tchar *
3196 extern const wimlib_tchar *
3198 const wimlib_tchar *property_name);
3431 const wimlib_tchar *output_path,
3433 int wim_write_flags);
3449 const wimlib_tchar *output_path,
3451 int wim_write_flags,
3534 const wimlib_tchar *dir,
3536 const wimlib_tchar *staging_dir);
3762 const wimlib_tchar *
const *resource_wimfiles_or_globs,
3789 unsigned num_resource_wims,
int ref_flags);
3854 WIMStruct *template_wim,
int template_image,
3888 const wimlib_tchar *source_path,
const wimlib_tchar *dest_path);
3922 const wimlib_tchar *image_name_or_num);
3983 const wimlib_tchar *description);
4059 const wimlib_tchar *property_name,
4060 const wimlib_tchar *property_value);
4092 void (*free_func)(
void *),
4093 void *(*realloc_func)(
void *,
size_t));
4257 const wimlib_tchar *swm_name,
4515 const wimlib_tchar *path,
4518 unsigned num_threads);
4545 unsigned num_threads);
4564 struct wimlib_compressor;
4567 struct wimlib_decompressor;
4611 size_t max_block_size,
4612 unsigned int compression_level);
4614 #define WIMLIB_COMPRESSOR_FLAG_DESTRUCTIVE 0x80000000
4686 size_t max_block_size,
4687 unsigned int compression_level,
4688 struct wimlib_compressor **compressor_ret);
4711 wimlib_compress(
const void *uncompressed_data,
size_t uncompressed_size,
4712 void *compressed_data,
size_t compressed_size_avail,
4713 struct wimlib_compressor *compressor);
4759 size_t max_block_size,
4760 struct wimlib_decompressor **decompressor_ret);
4791 void *uncompressed_data,
size_t uncompressed_size,
4792 struct wimlib_decompressor *decompressor);