wimlib
wimlib.h
Go to the documentation of this file.
1 
389 #ifndef _WIMLIB_H
390 #define _WIMLIB_H
391 
392 #include <stdio.h>
393 #include <stddef.h>
394 #ifndef __cplusplus
395 # if defined(_MSC_VER) && _MSC_VER < 1800 /* VS pre-2013? */
396  typedef unsigned char bool;
397 # else
398 # include <stdbool.h>
399 # endif
400 #endif
401 #include <stdint.h>
402 #include <time.h>
403 
408 #define WIMLIB_MAJOR_VERSION 1
409 
411 #define WIMLIB_MINOR_VERSION 13
412 
414 #define WIMLIB_PATCH_VERSION 1
415 
416 #ifdef __cplusplus
417 extern "C" {
418 #endif
419 
420 /*
421  * To represent file timestamps, wimlib's API originally used the POSIX 'struct
422  * timespec'. This was a mistake because when building wimlib for 32-bit
423  * Windows with MinGW we ended up originally using 32-bit time_t which isn't
424  * year 2038-safe, and therefore we had to later add fields like
425  * 'creation_time_high' to hold the high 32 bits of each timestamp. Moreover,
426  * old Visual Studio versions did not define struct timespec, while newer ones
427  * define it but with 64-bit tv_sec. So to at least avoid a missing or
428  * incompatible 'struct timespec' definition, define the correct struct
429  * ourselves when this header is included on Windows.
430  */
431 #ifdef _WIN32
432 struct wimlib_timespec {
433  /* Seconds since start of UNIX epoch (January 1, 1970) */
434 #ifdef _WIN64
435  int64_t tv_sec;
436 #else
437  int32_t tv_sec;
438 #endif
439  /* Nanoseconds (0-999999999) */
440  int32_t tv_nsec;
441 };
442 #else
443 # define wimlib_timespec timespec /* standard definition */
444 #endif
445 
450 #ifndef WIMLIB_WIMSTRUCT_DECLARED
451 typedef struct WIMStruct WIMStruct;
452 #define WIMLIB_WIMSTRUCT_DECLARED
453 #endif
454 
455 #ifdef _WIN32
456 typedef wchar_t wimlib_tchar;
457 #else
458 
459 typedef char wimlib_tchar;
460 #endif
461 
462 #ifdef _WIN32
463 
465 # define WIMLIB_WIM_PATH_SEPARATOR '\\'
466 # define WIMLIB_WIM_PATH_SEPARATOR_STRING L"\\"
467 #else
468 
470 # define WIMLIB_WIM_PATH_SEPARATOR '/'
471 # define WIMLIB_WIM_PATH_SEPARATOR_STRING "/"
472 #endif
473 
476 #define WIMLIB_WIM_ROOT_PATH WIMLIB_WIM_PATH_SEPARATOR_STRING
477 
480 #define WIMLIB_IS_WIM_ROOT_PATH(path) \
481  ((path)[0] == WIMLIB_WIM_PATH_SEPARATOR && \
482  (path)[1] == 0)
483 
485 #define WIMLIB_GUID_LEN 16
486 
506 
526 
548 
571 };
572 
580 
586 
593 
601 
606 
610 
618 
623 
628 
635 
641 
647 
654 
658 
663 
670 
677 
683 
688 
692 
698 
704 
711 
719 
723 
729 
733 
738 
742 
756 
778 };
779 
787 
791 
795 };
796 
804 
809 
815  uint64_t total_bytes;
816 
823  uint64_t total_streams;
824 
829  uint64_t completed_bytes;
830 
835 
838  uint32_t num_threads;
839 
843 
847  uint32_t total_parts;
848 
850  uint32_t completed_parts;
851  } write_streams;
852 
857 
862  const wimlib_tchar *source;
863 
868  const wimlib_tchar *cur_path;
869 
872  enum {
874  WIMLIB_SCAN_DENTRY_OK = 0,
875 
878  WIMLIB_SCAN_DENTRY_EXCLUDED = 1,
879 
882  WIMLIB_SCAN_DENTRY_UNSUPPORTED = 2,
883 
890  WIMLIB_SCAN_DENTRY_FIXED_SYMLINK = 3,
891 
896  WIMLIB_SCAN_DENTRY_NOT_FIXED_SYMLINK = 4,
897  } status;
898 
899  union {
903  const wimlib_tchar *wim_target_path;
904 
909  const wimlib_tchar *symlink_target;
910  };
911 
915 
919 
923  } scan;
924 
945 
948  uint32_t image;
949 
951  uint32_t extract_flags;
952 
956  const wimlib_tchar *wimfile_name;
957 
960  const wimlib_tchar *image_name;
961 
964  const wimlib_tchar *target;
965 
967  const wimlib_tchar *reserved;
968 
970  uint64_t total_bytes;
971 
974  uint64_t completed_bytes;
975 
980  uint64_t total_streams;
981 
985 
988  uint32_t part_number;
989 
992  uint32_t total_parts;
993 
996  uint8_t guid[WIMLIB_GUID_LEN];
997 
1004 
1021  uint64_t end_file_count;
1022  } extract;
1023 
1027  const wimlib_tchar *from;
1028 
1031  const wimlib_tchar *to;
1032  } rename;
1033 
1040 
1044 
1048  } update;
1049 
1053 
1056  uint64_t total_bytes;
1057 
1061 
1064  uint32_t total_chunks;
1065 
1069 
1072  uint32_t chunk_size;
1073 
1076  const wimlib_tchar *filename;
1077  } integrity;
1078 
1084  uint64_t total_bytes;
1085 
1090 
1095 
1097  unsigned total_parts;
1098 
1106  wimlib_tchar *part_name;
1107  } split;
1108 
1112  const wimlib_tchar *path_in_wim;
1113  } replace;
1114 
1118  const wimlib_tchar *path_in_wim;
1119 
1121  const wimlib_tchar *extraction_path;
1122  } wimboot_exclude;
1123 
1127  const wimlib_tchar *mountpoint;
1128 
1130  const wimlib_tchar *mounted_wim;
1131 
1133  uint32_t mounted_image;
1134 
1137  uint32_t mount_flags;
1138 
1140  uint32_t unmount_flags;
1141  } unmount;
1142 
1163  const wimlib_tchar *path_to_file;
1164  } done_with_file;
1165 
1169  const wimlib_tchar *wimfile;
1170  uint32_t total_images;
1171  uint32_t current_image;
1172  } verify_image;
1173 
1176  const wimlib_tchar *wimfile;
1177  uint64_t total_streams;
1178  uint64_t total_bytes;
1181  } verify_streams;
1182 
1185 
1198  const wimlib_tchar *path;
1199 
1207  } test_file_exclusion;
1208 
1211 
1214  const wimlib_tchar *path;
1215 
1218 
1225  } handle_error;
1226 };
1227 
1246 typedef enum wimlib_progress_status
1248  union wimlib_progress_info *info,
1249  void *progctx);
1250 
1260  wimlib_tchar *fs_source_path;
1261 
1264  wimlib_tchar *wim_target_path;
1265 
1267  long reserved;
1268 };
1269 
1280 #define WIMLIB_CHANGE_READONLY_FLAG 0x00000001
1281 
1284 #define WIMLIB_CHANGE_GUID 0x00000002
1285 
1288 #define WIMLIB_CHANGE_BOOT_INDEX 0x00000004
1289 
1296 #define WIMLIB_CHANGE_RPFIX_FLAG 0x00000008
1297 
1312 
1315  uint8_t guid[WIMLIB_GUID_LEN];
1316 
1318  uint32_t image_count;
1319 
1322  uint32_t boot_index;
1323 
1325  uint32_t wim_version;
1326 
1329  uint32_t chunk_size;
1330 
1333  uint16_t part_number;
1334 
1337  uint16_t total_parts;
1338 
1342 
1345  uint64_t total_bytes;
1346 
1348  uint32_t has_integrity_table : 1;
1349 
1352  uint32_t opened_from_file : 1;
1353 
1357  uint32_t is_readonly : 1;
1358 
1360  uint32_t has_rpfix : 1;
1361 
1363  uint32_t is_marked_readonly : 1;
1364 
1366  uint32_t spanned : 1;
1367 
1369  uint32_t write_in_progress : 1;
1370 
1372  uint32_t metadata_only : 1;
1373 
1375  uint32_t resource_only : 1;
1376 
1378  uint32_t pipable : 1;
1379  uint32_t reserved_flags : 22;
1380  uint32_t reserved[9];
1381 };
1382 
1414 
1418 
1422 
1427  uint64_t offset;
1428 
1430  uint8_t sha1_hash[20];
1431 
1434  uint32_t part_number;
1435 
1440 
1443  uint32_t is_compressed : 1;
1444 
1446  uint32_t is_metadata : 1;
1447 
1448  uint32_t is_free : 1;
1449  uint32_t is_spanned : 1;
1450 
1454  uint32_t is_missing : 1;
1455 
1457  uint32_t packed : 1;
1458 
1459  uint32_t reserved_flags : 26;
1460 
1464 
1468 
1472 
1473  uint64_t reserved[1];
1474 };
1475 
1488 
1490  const wimlib_tchar *stream_name;
1491 
1493  struct wimlib_resource_entry resource;
1494 
1495  uint64_t reserved[4];
1496 };
1497 
1504  uint8_t object_id[WIMLIB_GUID_LEN];
1505  uint8_t birth_volume_id[WIMLIB_GUID_LEN];
1506  uint8_t birth_object_id[WIMLIB_GUID_LEN];
1507  uint8_t domain_id[WIMLIB_GUID_LEN];
1508 };
1509 
1517  const wimlib_tchar *filename;
1518 
1521  const wimlib_tchar *dos_name;
1522 
1525  const wimlib_tchar *full_path;
1526 
1529  size_t depth;
1530 
1534  const char *security_descriptor;
1535 
1538 
1539 #define WIMLIB_FILE_ATTRIBUTE_READONLY 0x00000001
1540 #define WIMLIB_FILE_ATTRIBUTE_HIDDEN 0x00000002
1541 #define WIMLIB_FILE_ATTRIBUTE_SYSTEM 0x00000004
1542 #define WIMLIB_FILE_ATTRIBUTE_DIRECTORY 0x00000010
1543 #define WIMLIB_FILE_ATTRIBUTE_ARCHIVE 0x00000020
1544 #define WIMLIB_FILE_ATTRIBUTE_DEVICE 0x00000040
1545 #define WIMLIB_FILE_ATTRIBUTE_NORMAL 0x00000080
1546 #define WIMLIB_FILE_ATTRIBUTE_TEMPORARY 0x00000100
1547 #define WIMLIB_FILE_ATTRIBUTE_SPARSE_FILE 0x00000200
1548 #define WIMLIB_FILE_ATTRIBUTE_REPARSE_POINT 0x00000400
1549 #define WIMLIB_FILE_ATTRIBUTE_COMPRESSED 0x00000800
1550 #define WIMLIB_FILE_ATTRIBUTE_OFFLINE 0x00001000
1551 #define WIMLIB_FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000
1552 #define WIMLIB_FILE_ATTRIBUTE_ENCRYPTED 0x00004000
1553 #define WIMLIB_FILE_ATTRIBUTE_VIRTUAL 0x00010000
1554 
1558  uint32_t attributes;
1559 
1560 #define WIMLIB_REPARSE_TAG_RESERVED_ZERO 0x00000000
1561 #define WIMLIB_REPARSE_TAG_RESERVED_ONE 0x00000001
1562 #define WIMLIB_REPARSE_TAG_MOUNT_POINT 0xA0000003
1563 #define WIMLIB_REPARSE_TAG_HSM 0xC0000004
1564 #define WIMLIB_REPARSE_TAG_HSM2 0x80000006
1565 #define WIMLIB_REPARSE_TAG_DRIVER_EXTENDER 0x80000005
1566 #define WIMLIB_REPARSE_TAG_SIS 0x80000007
1567 #define WIMLIB_REPARSE_TAG_DFS 0x8000000A
1568 #define WIMLIB_REPARSE_TAG_DFSR 0x80000012
1569 #define WIMLIB_REPARSE_TAG_FILTER_MANAGER 0x8000000B
1570 #define WIMLIB_REPARSE_TAG_WOF 0x80000017
1571 #define WIMLIB_REPARSE_TAG_SYMLINK 0xA000000C
1572 
1576  uint32_t reparse_tag;
1577 
1582  uint32_t num_links;
1583 
1586 
1595 
1597  struct wimlib_timespec creation_time;
1598 
1600  struct wimlib_timespec last_write_time;
1601 
1603  struct wimlib_timespec last_access_time;
1604 
1608  uint32_t unix_uid;
1609 
1613  uint32_t unix_gid;
1614 
1620  uint32_t unix_mode;
1621 
1626  uint32_t unix_rdev;
1627 
1628  /* The object ID of this file, if any. Only valid if
1629  * object_id.object_id is not all zeroes. */
1631 
1635 
1639 
1643 
1644  int32_t reserved2;
1645 
1646  uint64_t reserved[4];
1647 
1662  struct wimlib_stream_entry streams[];
1663 };
1664 
1669 typedef int (*wimlib_iterate_dir_tree_callback_t)(const struct wimlib_dir_entry *dentry,
1670  void *user_ctx);
1671 
1677  void *user_ctx);
1678 
1681 #define WIMLIB_ITERATE_DIR_TREE_FLAG_RECURSIVE 0x00000001
1682 
1685 #define WIMLIB_ITERATE_DIR_TREE_FLAG_CHILDREN 0x00000002
1686 
1692 #define WIMLIB_ITERATE_DIR_TREE_FLAG_RESOURCES_NEEDED 0x00000004
1693 
1694 
1708 #define WIMLIB_ADD_FLAG_NTFS 0x00000001
1709 
1712 #define WIMLIB_ADD_FLAG_DEREFERENCE 0x00000002
1713 
1717 #define WIMLIB_ADD_FLAG_VERBOSE 0x00000004
1718 
1727 #define WIMLIB_ADD_FLAG_BOOT 0x00000008
1728 
1734 #define WIMLIB_ADD_FLAG_UNIX_DATA 0x00000010
1735 
1738 #define WIMLIB_ADD_FLAG_NO_ACLS 0x00000020
1739 
1745 #define WIMLIB_ADD_FLAG_STRICT_ACLS 0x00000040
1746 
1751 #define WIMLIB_ADD_FLAG_EXCLUDE_VERBOSE 0x00000080
1752 
1760 #define WIMLIB_ADD_FLAG_RPFIX 0x00000100
1761 
1763 #define WIMLIB_ADD_FLAG_NORPFIX 0x00000200
1764 
1769 #define WIMLIB_ADD_FLAG_NO_UNSUPPORTED_EXCLUDE 0x00000400
1770 
1786 #define WIMLIB_ADD_FLAG_WINCONFIG 0x00000800
1787 
1816 #define WIMLIB_ADD_FLAG_WIMBOOT 0x00001000
1817 
1824 #define WIMLIB_ADD_FLAG_NO_REPLACE 0x00002000
1825 
1833 #define WIMLIB_ADD_FLAG_TEST_FILE_EXCLUSION 0x00004000
1834 
1845 #define WIMLIB_ADD_FLAG_SNAPSHOT 0x00008000
1846 
1855 #define WIMLIB_ADD_FLAG_FILE_PATHS_UNNEEDED 0x00010000
1856 
1862 #define WIMLIB_DELETE_FLAG_FORCE 0x00000001
1863 
1866 #define WIMLIB_DELETE_FLAG_RECURSIVE 0x00000002
1867 
1878 #define WIMLIB_EXPORT_FLAG_BOOT 0x00000001
1879 
1883 #define WIMLIB_EXPORT_FLAG_NO_NAMES 0x00000002
1884 
1886 #define WIMLIB_EXPORT_FLAG_NO_DESCRIPTIONS 0x00000004
1887 
1891 #define WIMLIB_EXPORT_FLAG_GIFT 0x00000008
1892 
1908 #define WIMLIB_EXPORT_FLAG_WIMBOOT 0x00000010
1909 
1923 #define WIMLIB_EXTRACT_FLAG_NTFS 0x00000001
1924 
1927 #define WIMLIB_EXTRACT_FLAG_UNIX_DATA 0x00000020
1928 
1931 #define WIMLIB_EXTRACT_FLAG_NO_ACLS 0x00000040
1932 
1942 #define WIMLIB_EXTRACT_FLAG_STRICT_ACLS 0x00000080
1943 
1952 #define WIMLIB_EXTRACT_FLAG_RPFIX 0x00000100
1953 
1957 #define WIMLIB_EXTRACT_FLAG_NORPFIX 0x00000200
1958 
1961 #define WIMLIB_EXTRACT_FLAG_TO_STDOUT 0x00000400
1962 
1972 #define WIMLIB_EXTRACT_FLAG_REPLACE_INVALID_FILENAMES 0x00000800
1973 
1982 #define WIMLIB_EXTRACT_FLAG_ALL_CASE_CONFLICTS 0x00001000
1983 
1987 #define WIMLIB_EXTRACT_FLAG_STRICT_TIMESTAMPS 0x00002000
1988 
1991 #define WIMLIB_EXTRACT_FLAG_STRICT_SHORT_NAMES 0x00004000
1992 
1997 #define WIMLIB_EXTRACT_FLAG_STRICT_SYMLINKS 0x00008000
1998 
2012 #define WIMLIB_EXTRACT_FLAG_GLOB_PATHS 0x00040000
2013 
2017 #define WIMLIB_EXTRACT_FLAG_STRICT_GLOB 0x00080000
2018 
2024 #define WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES 0x00100000
2025 
2032 #define WIMLIB_EXTRACT_FLAG_NO_PRESERVE_DIR_STRUCTURE 0x00200000
2033 
2040 #define WIMLIB_EXTRACT_FLAG_WIMBOOT 0x00400000
2041 
2050 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS4K 0x01000000
2051 
2054 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS8K 0x02000000
2055 
2058 #define WIMLIB_EXTRACT_FLAG_COMPACT_XPRESS16K 0x04000000
2059 
2062 #define WIMLIB_EXTRACT_FLAG_COMPACT_LZX 0x08000000
2063 
2069 #define WIMLIB_MOUNT_FLAG_READWRITE 0x00000001
2070 
2072 #define WIMLIB_MOUNT_FLAG_DEBUG 0x00000002
2073 
2075 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_NONE 0x00000004
2076 
2080 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_XATTR 0x00000008
2081 
2084 #define WIMLIB_MOUNT_FLAG_STREAM_INTERFACE_WINDOWS 0x00000010
2085 
2087 #define WIMLIB_MOUNT_FLAG_UNIX_DATA 0x00000020
2088 
2091 #define WIMLIB_MOUNT_FLAG_ALLOW_OTHER 0x00000040
2092 
2103 #define WIMLIB_OPEN_FLAG_CHECK_INTEGRITY 0x00000001
2104 
2108 #define WIMLIB_OPEN_FLAG_ERROR_IF_SPLIT 0x00000002
2109 
2118 #define WIMLIB_OPEN_FLAG_WRITE_ACCESS 0x00000004
2119 
2126 #define WIMLIB_UNMOUNT_FLAG_CHECK_INTEGRITY 0x00000001
2127 
2130 #define WIMLIB_UNMOUNT_FLAG_COMMIT 0x00000002
2131 
2134 #define WIMLIB_UNMOUNT_FLAG_REBUILD 0x00000004
2135 
2138 #define WIMLIB_UNMOUNT_FLAG_RECOMPRESS 0x00000008
2139 
2148 #define WIMLIB_UNMOUNT_FLAG_FORCE 0x00000010
2149 
2154 #define WIMLIB_UNMOUNT_FLAG_NEW_IMAGE 0x00000020
2155 
2162 #define WIMLIB_UPDATE_FLAG_SEND_PROGRESS 0x00000001
2163 
2176 #define WIMLIB_WRITE_FLAG_CHECK_INTEGRITY 0x00000001
2177 
2183 #define WIMLIB_WRITE_FLAG_NO_CHECK_INTEGRITY 0x00000002
2184 
2197 #define WIMLIB_WRITE_FLAG_PIPABLE 0x00000004
2198 
2203 #define WIMLIB_WRITE_FLAG_NOT_PIPABLE 0x00000008
2204 
2230 #define WIMLIB_WRITE_FLAG_RECOMPRESS 0x00000010
2231 
2245 #define WIMLIB_WRITE_FLAG_FSYNC 0x00000020
2246 
2259 #define WIMLIB_WRITE_FLAG_REBUILD 0x00000040
2260 
2270 #define WIMLIB_WRITE_FLAG_SOFT_DELETE 0x00000080
2271 
2281 #define WIMLIB_WRITE_FLAG_IGNORE_READONLY_FLAG 0x00000100
2282 
2289 #define WIMLIB_WRITE_FLAG_SKIP_EXTERNAL_WIMS 0x00000200
2290 
2292 #define WIMLIB_WRITE_FLAG_STREAMS_OK 0x00000400
2293 
2300 #define WIMLIB_WRITE_FLAG_RETAIN_GUID 0x00000800
2301 
2337 #define WIMLIB_WRITE_FLAG_SOLID 0x00001000
2338 
2344 #define WIMLIB_WRITE_FLAG_SEND_DONE_WITH_FILE_MESSAGES 0x00002000
2345 
2351 #define WIMLIB_WRITE_FLAG_NO_SOLID_SORT 0x00004000
2352 
2369 #define WIMLIB_WRITE_FLAG_UNSAFE_COMPACT 0x00008000
2370 
2376 #define WIMLIB_INIT_FLAG_ASSUME_UTF8 0x00000001
2377 
2386 #define WIMLIB_INIT_FLAG_DONT_ACQUIRE_PRIVILEGES 0x00000002
2387 
2393 #define WIMLIB_INIT_FLAG_STRICT_CAPTURE_PRIVILEGES 0x00000004
2394 
2400 #define WIMLIB_INIT_FLAG_STRICT_APPLY_PRIVILEGES 0x00000008
2401 
2404 #define WIMLIB_INIT_FLAG_DEFAULT_CASE_SENSITIVE 0x00000010
2405 
2408 #define WIMLIB_INIT_FLAG_DEFAULT_CASE_INSENSITIVE 0x00000020
2409 
2416 #define WIMLIB_REF_FLAG_GLOB_ENABLE 0x00000001
2417 
2425 #define WIMLIB_REF_FLAG_GLOB_ERR_ON_NOMATCH 0x00000002
2426 
2435 
2438 
2441 };
2442 
2446  wimlib_tchar *fs_source_path;
2447 
2450  wimlib_tchar *wim_target_path;
2451 
2454  wimlib_tchar *config_file;
2455 
2458 };
2459 
2462 
2464  wimlib_tchar *wim_path;
2465 
2468 };
2469 
2472 
2474  wimlib_tchar *wim_source_path;
2475 
2477  wimlib_tchar *wim_target_path;
2478 
2481 };
2482 
2485 
2487 
2488  union {
2490  struct wimlib_delete_command delete_; /* Underscore is for C++
2491  compatibility. */
2492  struct wimlib_rename_command rename;
2493  };
2494 };
2495 
2588 };
2589 
2590 
2592 #define WIMLIB_NO_IMAGE 0
2593 
2595 #define WIMLIB_ALL_IMAGES (-1)
2596 
2627 extern int
2629  const wimlib_tchar *name,
2630  int *new_idx_ret);
2631 
2683 extern int
2685  const wimlib_tchar *source,
2686  const wimlib_tchar *name,
2687  const wimlib_tchar *config_file,
2688  int add_flags);
2689 
2700 extern int
2702  const struct wimlib_capture_source *sources,
2703  size_t num_sources,
2704  const wimlib_tchar *name,
2705  const wimlib_tchar *config_file,
2706  int add_flags);
2707 
2717 extern int
2718 wimlib_add_tree(WIMStruct *wim, int image,
2719  const wimlib_tchar *fs_source_path,
2720  const wimlib_tchar *wim_target_path, int add_flags);
2721 
2750 extern int
2752 
2781 extern int
2782 wimlib_delete_image(WIMStruct *wim, int image);
2783 
2792 extern int
2793 wimlib_delete_path(WIMStruct *wim, int image,
2794  const wimlib_tchar *path, int delete_flags);
2795 
2864 extern int
2865 wimlib_export_image(WIMStruct *src_wim, int src_image,
2866  WIMStruct *dest_wim,
2867  const wimlib_tchar *dest_name,
2868  const wimlib_tchar *dest_description,
2869  int export_flags);
2870 
2983 extern int
2984 wimlib_extract_image(WIMStruct *wim, int image,
2985  const wimlib_tchar *target, int extract_flags);
2986 
3025 extern int
3026 wimlib_extract_image_from_pipe(int pipe_fd,
3027  const wimlib_tchar *image_num_or_name,
3028  const wimlib_tchar *target, int extract_flags);
3029 
3039 extern int
3041  const wimlib_tchar *image_num_or_name,
3042  const wimlib_tchar *target,
3043  int extract_flags,
3044  wimlib_progress_func_t progfunc,
3045  void *progctx);
3046 
3066 extern int
3067 wimlib_extract_pathlist(WIMStruct *wim, int image,
3068  const wimlib_tchar *target,
3069  const wimlib_tchar *path_list_file,
3070  int extract_flags);
3071 
3141 extern int
3143  int image,
3144  const wimlib_tchar *target,
3145  const wimlib_tchar * const *paths,
3146  size_t num_paths,
3147  int extract_flags);
3148 
3163 extern int
3164 wimlib_extract_xml_data(WIMStruct *wim, FILE *fp);
3165 
3178 extern void
3179 wimlib_free(WIMStruct *wim);
3180 
3194 extern const wimlib_tchar *
3196 
3210 extern const wimlib_tchar *
3212 
3219 extern const wimlib_tchar *
3220 wimlib_get_image_description(const WIMStruct *wim, int image);
3221 
3230 extern const wimlib_tchar *
3231 wimlib_get_image_name(const WIMStruct *wim, int image);
3232 
3261 extern const wimlib_tchar *
3262 wimlib_get_image_property(const WIMStruct *wim, int image,
3263  const wimlib_tchar *property_name);
3264 
3276 extern uint32_t
3277 wimlib_get_version(void);
3278 
3286 extern const wimlib_tchar *
3288 
3303 extern int
3304 wimlib_get_wim_info(WIMStruct *wim, struct wimlib_wim_info *info);
3305 
3333 extern int
3334 wimlib_get_xml_data(WIMStruct *wim, void **buf_ret, size_t *bufsize_ret);
3335 
3354 extern int
3355 wimlib_global_init(int init_flags);
3356 
3363 extern void
3364 wimlib_global_cleanup(void);
3365 
3382 extern bool
3383 wimlib_image_name_in_use(const WIMStruct *wim, const wimlib_tchar *name);
3384 
3429 extern int
3430 wimlib_iterate_dir_tree(WIMStruct *wim, int image, const wimlib_tchar *path,
3431  int flags,
3432  wimlib_iterate_dir_tree_callback_t cb, void *user_ctx);
3433 
3463 extern int
3464 wimlib_iterate_lookup_table(WIMStruct *wim, int flags,
3466  void *user_ctx);
3467 
3504 extern int
3505 wimlib_join(const wimlib_tchar * const *swms,
3506  unsigned num_swms,
3507  const wimlib_tchar *output_path,
3508  int swm_open_flags,
3509  int wim_write_flags);
3510 
3522 extern int
3523 wimlib_join_with_progress(const wimlib_tchar * const *swms,
3524  unsigned num_swms,
3525  const wimlib_tchar *output_path,
3526  int swm_open_flags,
3527  int wim_write_flags,
3528  wimlib_progress_func_t progfunc,
3529  void *progctx);
3530 
3531 
3607 extern int
3609  int image,
3610  const wimlib_tchar *dir,
3611  int mount_flags,
3612  const wimlib_tchar *staging_dir);
3613 
3683 extern int
3684 wimlib_open_wim(const wimlib_tchar *wim_file,
3685  int open_flags,
3686  WIMStruct **wim_ret);
3687 
3699 extern int
3700 wimlib_open_wim_with_progress(const wimlib_tchar *wim_file,
3701  int open_flags,
3702  WIMStruct **wim_ret,
3703  wimlib_progress_func_t progfunc,
3704  void *progctx);
3705 
3765 extern int
3766 wimlib_overwrite(WIMStruct *wim, int write_flags, unsigned num_threads);
3767 
3788 extern void
3789 wimlib_print_available_images(const WIMStruct *wim, int image);
3790 
3796 extern void
3797 wimlib_print_header(const WIMStruct *wim);
3798 
3840 extern int
3842  const wimlib_tchar * const *resource_wimfiles_or_globs,
3843  unsigned count,
3844  int ref_flags,
3845  int open_flags);
3846 
3867 extern int
3868 wimlib_reference_resources(WIMStruct *wim, WIMStruct **resource_wims,
3869  unsigned num_resource_wims, int ref_flags);
3870 
3933 extern int
3934 wimlib_reference_template_image(WIMStruct *wim, int new_image,
3935  WIMStruct *template_wim, int template_image,
3936  int flags);
3937 
3953 extern void
3955  wimlib_progress_func_t progfunc,
3956  void *progctx);
3957 
3967 extern int
3968 wimlib_rename_path(WIMStruct *wim, int image,
3969  const wimlib_tchar *source_path, const wimlib_tchar *dest_path);
3970 
4001 extern int
4003  const wimlib_tchar *image_name_or_num);
4004 
4022 extern int
4023 wimlib_set_error_file(FILE *fp);
4024 
4041 extern int
4042 wimlib_set_error_file_by_name(const wimlib_tchar *path);
4043 
4052 extern int
4053 wimlib_set_image_descripton(WIMStruct *wim, int image,
4054  const wimlib_tchar *description);
4055 
4063 extern int
4064 wimlib_set_image_flags(WIMStruct *wim, int image, const wimlib_tchar *flags);
4065 
4072 extern int
4073 wimlib_set_image_name(WIMStruct *wim, int image, const wimlib_tchar *name);
4074 
4112 extern int
4113 wimlib_set_image_property(WIMStruct *wim, int image,
4114  const wimlib_tchar *property_name,
4115  const wimlib_tchar *property_value);
4116 
4145 extern int
4146 wimlib_set_memory_allocator(void *(*malloc_func)(size_t),
4147  void (*free_func)(void *),
4148  void *(*realloc_func)(void *, size_t));
4149 
4175 extern int
4176 wimlib_set_output_chunk_size(WIMStruct *wim, uint32_t chunk_size);
4177 
4184 extern int
4185 wimlib_set_output_pack_chunk_size(WIMStruct *wim, uint32_t chunk_size);
4186 
4206 extern int
4208  enum wimlib_compression_type ctype);
4209 
4216 extern int
4218  enum wimlib_compression_type ctype);
4219 
4242 extern int
4243 wimlib_set_print_errors(bool show_messages);
4244 
4268 extern int
4269 wimlib_set_wim_info(WIMStruct *wim, const struct wimlib_wim_info *info,
4270  int which);
4271 
4310 extern int
4311 wimlib_split(WIMStruct *wim,
4312  const wimlib_tchar *swm_name,
4313  uint64_t part_size,
4314  int write_flags);
4315 
4353 extern int
4354 wimlib_verify_wim(WIMStruct *wim, int verify_flags);
4355 
4389 extern int
4390 wimlib_unmount_image(const wimlib_tchar *dir, int unmount_flags);
4391 
4400 extern int
4401 wimlib_unmount_image_with_progress(const wimlib_tchar *dir,
4402  int unmount_flags,
4403  wimlib_progress_func_t progfunc,
4404  void *progctx);
4405 
4496 extern int
4498  int image,
4499  const struct wimlib_update_command *cmds,
4500  size_t num_cmds,
4501  int update_flags);
4502 
4564 extern int
4565 wimlib_write(WIMStruct *wim,
4566  const wimlib_tchar *path,
4567  int image,
4568  int write_flags,
4569  unsigned num_threads);
4570 
4591 extern int
4593  int fd,
4594  int image,
4595  int write_flags,
4596  unsigned num_threads);
4597 
4615 struct wimlib_compressor;
4616 
4618 struct wimlib_decompressor;
4619 
4649 extern int
4650 wimlib_set_default_compression_level(int ctype, unsigned int compression_level);
4651 
4660 extern uint64_t
4662  size_t max_block_size,
4663  unsigned int compression_level);
4664 
4665 #define WIMLIB_COMPRESSOR_FLAG_DESTRUCTIVE 0x80000000
4666 
4735 extern int
4737  size_t max_block_size,
4738  unsigned int compression_level,
4739  struct wimlib_compressor **compressor_ret);
4740 
4761 extern size_t
4762 wimlib_compress(const void *uncompressed_data, size_t uncompressed_size,
4763  void *compressed_data, size_t compressed_size_avail,
4764  struct wimlib_compressor *compressor);
4765 
4772 extern void
4773 wimlib_free_compressor(struct wimlib_compressor *compressor);
4774 
4808 extern int
4810  size_t max_block_size,
4811  struct wimlib_decompressor **decompressor_ret);
4812 
4840 extern int
4841 wimlib_decompress(const void *compressed_data, size_t compressed_size,
4842  void *uncompressed_data, size_t uncompressed_size,
4843  struct wimlib_decompressor *decompressor);
4844 
4851 extern void
4852 wimlib_free_decompressor(struct wimlib_decompressor *decompressor);
4853 
4854 
4860 #ifdef __cplusplus
4861 }
4862 #endif
4863 
4864 #endif /* _WIMLIB_H */
const wimlib_tchar * filename
Name of the file, or NULL if this file is unnamed.
Definition: wimlib.h:1517
const wimlib_tchar * stream_name
Name of the stream, or NULL if the stream is unnamed.
Definition: wimlib.h:1490
uint64_t raw_resource_offset_in_wim
If this blob is located in a solid WIM resource, then this is the offset of that solid resource withi...
Definition: wimlib.h:1463
Valid on messages WIMLIB_PROGRESS_MSG_SPLIT_BEGIN_PART and WIMLIB_PROGRESS_MSG_SPLIT_END_PART.
Definition: wimlib.h:1081
wimlib_tchar * wim_target_path
Destination path in the image.
Definition: wimlib.h:2450
A WIM image is about to be extracted.
Definition: wimlib.h:585
Definition: wimlib.h:2517
unsigned total_parts
Total number of split WIM parts that are being written.
Definition: wimlib.h:1097
Valid on messages WIMLIB_PROGRESS_MSG_WIMBOOT_EXCLUDE.
Definition: wimlib.h:1116
uint32_t total_parts
The number of on-disk WIM files from which file data is being exported into the output WIM file...
Definition: wimlib.h:847
int wimlib_set_image_property(WIMStruct *wim, int image, const wimlib_tchar *property_name, const wimlib_tchar *property_value)
Since wimlib v1.8.3: add, modify, or remove a per-image property from the WIM&#39;s XML document...
const wimlib_tchar * cur_path
Path to the file (or directory) that has been scanned, valid on WIMLIB_PROGRESS_MSG_SCAN_DENTRY.
Definition: wimlib.h:868
Definition: wimlib.h:2568
uint64_t wimlib_get_compressor_needed_memory(enum wimlib_compression_type ctype, size_t max_block_size, unsigned int compression_level)
Return the approximate number of bytes needed to allocate a compressor with wimlib_create_compressor(...
int wimlib_set_image_name(WIMStruct *wim, int image, const wimlib_tchar *name)
Change the name of a WIM image.
wimlib_verify_wim() is starting to verify the metadata for an image.
Definition: wimlib.h:732
Definition: wimlib.h:2536
uint32_t total_chunks
The number of individually checksummed "chunks" the integrity-checked region is divided into...
Definition: wimlib.h:1064
Definition: wimlib.h:2516
Definition: wimlib.h:2587
Valid on messages WIMLIB_PROGRESS_MSG_VERIFY_INTEGRITY and WIMLIB_PROGRESS_MSG_CALC_INTEGRITY.
Definition: wimlib.h:1052
Definition: wimlib.h:2529
Valid on messages WIMLIB_PROGRESS_MSG_RENAME.
Definition: wimlib.h:1025
Definition: wimlib.h:2514
wimlib_overwrite() has successfully renamed the temporary file to the original WIM file...
Definition: wimlib.h:669
void wimlib_free(WIMStruct *wim)
Release a reference to a WIMStruct.
struct WIMStruct WIMStruct
Opaque structure that represents a WIM, possibly backed by an on-disk file.
Definition: wimlib.h:451
The image has been successfully extracted.
Definition: wimlib.h:622
const wimlib_tchar * target
Path to the directory or NTFS volume to which the files are being extracted.
Definition: wimlib.h:964
int wimlib_extract_paths(WIMStruct *wim, int image, const wimlib_tchar *target, const wimlib_tchar *const *paths, size_t num_paths, int extract_flags)
Extract zero or more paths (files or directory trees) from the specified WIM image.
int wimlib_set_memory_allocator(void *(*malloc_func)(size_t), void(*free_func)(void *), void *(*realloc_func)(void *, size_t))
Set the functions that wimlib uses to allocate and free memory.
int wimlib_extract_pathlist(WIMStruct *wim, int image, const wimlib_tchar *target, const wimlib_tchar *path_list_file, int extract_flags)
Similar to wimlib_extract_paths(), but the paths to extract from the WIM image are specified in the A...
Definition: wimlib.h:2520
uint32_t write_in_progress
1 iff the "write in progress" flag is set in this WIM&#39;s header
Definition: wimlib.h:1369
wimlib_tchar * fs_source_path
Absolute or relative path to a file or directory on the external filesystem to be included in the ima...
Definition: wimlib.h:1260
uint64_t total_bytes
Total size of the original WIM&#39;s file and metadata resources (compressed).
Definition: wimlib.h:1084
Valid on the message WIMLIB_PROGRESS_MSG_WRITE_STREAMS.
Definition: wimlib.h:808
Definition: wimlib.h:2577
int wimlib_reference_template_image(WIMStruct *wim, int new_image, WIMStruct *template_wim, int template_image, int flags)
Declare that a newly added image is mostly the same as a prior image, but captured at a later point i...
uint64_t compressed_size
If this blob is located in a non-solid WIM resource, then this is the compressed size of that resourc...
Definition: wimlib.h:1421
int wimlib_write_to_fd(WIMStruct *wim, int fd, int image, int write_flags, unsigned num_threads)
Same as wimlib_write(), but write the WIM directly to a file descriptor, which need not be seekable i...
uint32_t current_image
Definition: wimlib.h:1171
int(* wimlib_iterate_dir_tree_callback_t)(const struct wimlib_dir_entry *dentry, void *user_ctx)
Type of a callback function to wimlib_iterate_dir_tree().
Definition: wimlib.h:1669
wimlib_update_op
The specific type of update to perform.
Definition: wimlib.h:2432
uint64_t reserved[1]
Definition: wimlib.h:1473
int32_t compression_type
The compression type being used, as one of the wimlib_compression_type constants. ...
Definition: wimlib.h:842
int wimlib_add_tree(WIMStruct *wim, int image, const wimlib_tchar *fs_source_path, const wimlib_tchar *wim_target_path, int add_flags)
Add the file or directory tree at fs_source_path on the filesystem to the location wim_target_path wi...
uint32_t unix_gid
The UNIX group ID of this file.
Definition: wimlib.h:1613
int32_t last_write_time_high
High 32 bits of the seconds portion of the last write timestamp, filled in if wimlib_timespec.tv_sec is only 32-bit.
Definition: wimlib.h:1638
const wimlib_tchar * path
Path to the file for which exclusion is being tested.
Definition: wimlib.h:1198
int wimlib_delete_image(WIMStruct *wim, int image)
Delete an image, or all images, from a WIMStruct.
int wimlib_add_image(WIMStruct *wim, const wimlib_tchar *source, const wimlib_tchar *name, const wimlib_tchar *config_file, int add_flags)
Add an image to a WIMStruct from an on-disk directory tree or NTFS volume.
uint32_t pipable
1 iff this WIM file is pipable (see WIMLIB_WRITE_FLAG_PIPABLE).
Definition: wimlib.h:1378
Definition: wimlib.h:2569
The LZMS compression format.
Definition: wimlib.h:570
Definition: wimlib.h:2534
int wimlib_create_decompressor(enum wimlib_compression_type ctype, size_t max_block_size, struct wimlib_decompressor **decompressor_ret)
Allocate a decompressor for the specified compression type.
wimlib_error_code
Possible values of the error code returned by many functions in wimlib.
Definition: wimlib.h:2506
Definition: wimlib.h:2555
Definition: wimlib.h:2562
int wimlib_set_image_flags(WIMStruct *wim, int image, const wimlib_tchar *flags)
Change what is stored in the <FLAGS> element in the WIM XML document (usually something like "Core" o...
const wimlib_tchar * path_to_file
Path to the file whose data has been written to the WIM file, or is currently being asynchronously co...
Definition: wimlib.h:1163
A WIM update command has been executed.
Definition: wimlib.h:703
uint32_t unix_rdev
The UNIX device ID (major and minor number) of this file.
Definition: wimlib.h:1626
uint32_t attributes
File attributes, such as whether the file is a directory or not.
Definition: wimlib.h:1558
uint32_t num_links
Number of links to this file&#39;s inode (hard links).
Definition: wimlib.h:1582
bool will_exclude
Indicates whether the file or directory will be excluded from capture or not.
Definition: wimlib.h:1206
int wimlib_open_wim(const wimlib_tchar *wim_file, int open_flags, WIMStruct **wim_ret)
Open a WIM file and create a WIMStruct for it.
uint32_t has_integrity_table
1 iff this WIM file has an integrity table.
Definition: wimlib.h:1348
Per-image metadata is about to be written to the WIM file.
Definition: wimlib.h:657
Definition: wimlib.h:2533
uint32_t has_rpfix
1 iff the "reparse point fix" flag is set in this WIM&#39;s header
Definition: wimlib.h:1360
const wimlib_tchar * reserved
Reserved.
Definition: wimlib.h:967
const wimlib_tchar * filename
For WIMLIB_PROGRESS_MSG_VERIFY_INTEGRITY messages, this is the path to the WIM file being checked...
Definition: wimlib.h:1076
Definition: wimlib.h:2508
A pointer to this union is passed to the user-supplied wimlib_progress_func_t progress function...
Definition: wimlib.h:803
uint32_t is_missing
1 iff a blob with this hash was not found in the blob lookup table of the WIMStruct.
Definition: wimlib.h:1454
Definition: wimlib.h:2526
uint32_t completed_parts
This is currently broken and will always be 0.
Definition: wimlib.h:850
int wimlib_create_compressor(enum wimlib_compression_type ctype, size_t max_block_size, unsigned int compression_level, struct wimlib_compressor **compressor_ret)
Allocate a compressor for the specified compression type using the specified parameters.
uint64_t raw_resource_compressed_size
If this blob is located in a solid WIM resource, then this is the compressed size of that solid resou...
Definition: wimlib.h:1467
Definition: wimlib.h:2510
Definition: wimlib.h:2578
Delete a file or directory tree from the image.
Definition: wimlib.h:2437
Definition: wimlib.h:2525
The operation should be continued.
Definition: wimlib.h:790
uint32_t resource_only
1 iff the "resource only" flag is set in this WIM&#39;s header
Definition: wimlib.h:1375
The contents of the WIM file are being checked against the integrity table.
Definition: wimlib.h:676
Definition: wimlib.h:2521
int wimlib_iterate_dir_tree(WIMStruct *wim, int image, const wimlib_tchar *path, int flags, wimlib_iterate_dir_tree_callback_t cb, void *user_ctx)
Iterate through a file or directory tree in a WIM image.
Definition: wimlib.h:2543
Valid on messages WIMLIB_PROGRESS_MSG_DONE_WITH_FILE.
Definition: wimlib.h:1144
An error has occurred and the progress function is being asked whether to ignore the error or not...
Definition: wimlib.h:777
Data for a WIMLIB_UPDATE_OP_RENAME operation.
Definition: wimlib.h:2471
Definition: wimlib.h:2518
uint32_t packed
1 iff this blob is located in a solid resource.
Definition: wimlib.h:1457
One or more file or directory trees within a WIM image is about to be extracted.
Definition: wimlib.h:592
Valid on messages WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN, WIMLIB_PROGRESS_MSG_EXTRACT_IMAGE_BEGI...
Definition: wimlib.h:944
wimlib_tchar * wim_target_path
Destination path in the image.
Definition: wimlib.h:1264
uint32_t chunk_size
The default compression chunk size of resources in this WIM file.
Definition: wimlib.h:1329
Definition: wimlib.h:2558
Definition: wimlib.h:2580
uint32_t is_spanned
Definition: wimlib.h:1449
const wimlib_tchar * wimlib_get_image_property(const WIMStruct *wim, int image, const wimlib_tchar *property_name)
Since wimlib v1.8.3: get a per-image property from the WIM&#39;s XML document.
Starting to unmount an image.
Definition: wimlib.h:722
void wimlib_global_cleanup(void)
Cleanup function for wimlib.
An image is being extracted with WIMLIB_EXTRACT_FLAG_WIMBOOT, and a file is being extracted normally ...
Definition: wimlib.h:718
A wimlib_split() operation is in progress, and a new split part is about to be started.
Definition: wimlib.h:687
An array of these structures is passed to wimlib_add_image_multisource() to specify the sources from ...
Definition: wimlib.h:1257
const wimlib_tchar * wimlib_get_error_string(enum wimlib_error_code code)
Convert a wimlib error code into a string describing it.
Valid on messages WIMLIB_PROGRESS_MSG_HANDLE_ERROR.
Definition: wimlib.h:1210
Definition: wimlib.h:2570
bool wimlib_image_name_in_use(const WIMStruct *wim, const wimlib_tchar *name)
Determine if an image name is already used by some image in the WIM.
The XPRESS compression format.
Definition: wimlib.h:525
The files or directory trees have been successfully extracted.
Definition: wimlib.h:627
General information about a WIM file.
Definition: wimlib.h:1311
Definition: wimlib.h:2586
uint64_t completed_streams
The number of distinct file data "blobs" that have been written so far.
Definition: wimlib.h:834
Definition: wimlib.h:2507
const wimlib_tchar * path
Path to the file for which the error occurred, or NULL if not relevant.
Definition: wimlib.h:1214
The per-image metadata has been written to the WIM file.
Definition: wimlib.h:662
int wimlib_overwrite(WIMStruct *wim, int write_flags, unsigned num_threads)
Commit a WIMStruct to disk, updating its backing file.
char wimlib_tchar
See Character encoding.
Definition: wimlib.h:459
uint64_t total_bytes
The size of this WIM file in bytes, excluding the XML data and integrity table.
Definition: wimlib.h:1345
void wimlib_free_decompressor(struct wimlib_decompressor *decompressor)
Free a decompressor previously allocated with wimlib_create_decompressor().
wimlib_compression_type
Specifies a compression type.
Definition: wimlib.h:497
int wimlib_reference_resources(WIMStruct *wim, WIMStruct **resource_wims, unsigned num_resource_wims, int ref_flags)
Similar to wimlib_reference_resource_files(), but operates at a lower level where the caller must ope...
uint64_t total_streams
An upper bound on the number of distinct file data "blobs" that will be written.
Definition: wimlib.h:823
uint32_t is_compressed
1 iff this blob is located in a non-solid compressed WIM resource.
Definition: wimlib.h:1443
int wimlib_set_error_file_by_name(const wimlib_tchar *path)
Set the path to the file to which the library will print error and warning messages.
size_t security_descriptor_size
Size of the above security descriptor, in bytes.
Definition: wimlib.h:1537
uint32_t mount_flags
Flags that were passed to wimlib_mount_image() when the mountpoint was set up.
Definition: wimlib.h:1137
uint8_t object_id[WIMLIB_GUID_LEN]
Definition: wimlib.h:1504
int wimlib_extract_image_from_pipe_with_progress(int pipe_fd, const wimlib_tchar *image_num_or_name, const wimlib_tchar *target, int extract_flags, wimlib_progress_func_t progfunc, void *progctx)
Same as wimlib_extract_image_from_pipe(), but allows specifying a progress function.
const struct wimlib_update_command * command
Pointer to the update command that will be executed or has just been executed.
Definition: wimlib.h:1039
Valid on messages WIMLIB_PROGRESS_MSG_BEGIN_VERIFY_IMAGE and WIMLIB_PROGRESS_MSG_END_VERIFY_IMAGE.
Definition: wimlib.h:1168
Definition: wimlib.h:2567
const wimlib_tchar * wim_target_path
Target path in the image.
Definition: wimlib.h:903
Definition: wimlib.h:2509
wimlib_tchar * wim_source_path
The path to the source file or directory within the image.
Definition: wimlib.h:2474
const wimlib_tchar * wimlib_get_version_string(void)
Since wimlib v1.13.0: like wimlib_get_version(), but returns the full PACKAGE_VERSION string that was...
const wimlib_tchar * source
Top-level directory being scanned; or, when capturing an NTFS volume with WIMLIB_ADD_FLAG_NTFS, this is instead the path to the file or block device that contains the NTFS volume being scanned.
Definition: wimlib.h:862
int32_t creation_time_high
High 32 bits of the seconds portion of the creation timestamp, filled in if wimlib_timespec.tv_sec is only 32-bit.
Definition: wimlib.h:1634
Definition: wimlib.h:2531
Definition: wimlib.h:2556
#define wimlib_timespec
Definition: wimlib.h:443
uint32_t reserved_flags
Definition: wimlib.h:1379
size_t wimlib_compress(const void *uncompressed_data, size_t uncompressed_size, void *compressed_data, size_t compressed_size_avail, struct wimlib_compressor *compressor)
Compress a buffer of data.
int wimlib_extract_image_from_pipe(int pipe_fd, const wimlib_tchar *image_num_or_name, const wimlib_tchar *target, int extract_flags)
Extract one image from a pipe on which a pipable WIM is being sent.
The directory or NTFS volume has been successfully scanned.
Definition: wimlib.h:646
uint32_t reference_count
If this blob is not missing, then this is the number of times this blob is referenced over all images...
Definition: wimlib.h:1439
uint64_t total_streams
The number of file streams that will be extracted.
Definition: wimlib.h:980
int wimlib_rename_path(WIMStruct *wim, int image, const wimlib_tchar *source_path, const wimlib_tchar *dest_path)
Rename the source_path to the dest_path in the specified image of the wim.
const wimlib_tchar * wimfile
Definition: wimlib.h:1176
Definition: wimlib.h:2545
uint32_t num_named_streams
Number of named data streams this file has.
Definition: wimlib.h:1585
No compression.
Definition: wimlib.h:505
The LZX compression format.
Definition: wimlib.h:547
int wimlib_join(const wimlib_tchar *const *swms, unsigned num_swms, const wimlib_tchar *output_path, int swm_open_flags, int wim_write_flags)
Join a split WIM into a stand-alone (one-part) WIM.
Definition: wimlib.h:2574
int wimlib_global_init(int init_flags)
Initialization function for wimlib.
Valid on messages WIMLIB_PROGRESS_MSG_REPLACE_FILE_IN_WIM.
Definition: wimlib.h:1110
const wimlib_tchar * path_in_wim
Path to the file in the image.
Definition: wimlib.h:1118
int wimlib_verify_wim(WIMStruct *wim, int verify_flags)
Perform verification checks on a WIM file.
Definition: wimlib.h:2537
bool will_ignore
Indicates whether the error will be ignored or not.
Definition: wimlib.h:1224
#define WIMLIB_GUID_LEN
Length of a Globally Unique Identifier (GUID), in bytes.
Definition: wimlib.h:485
Definition: wimlib.h:2565
Definition: wimlib.h:2553
Definition: wimlib.h:2515
uint64_t num_bytes_scanned
The number of bytes of file data detected so far, not counting excluded/unsupported files...
Definition: wimlib.h:922
int wimlib_unmount_image(const wimlib_tchar *dir, int unmount_flags)
Unmount a WIM image that was mounted using wimlib_mount_image().
Definition: wimlib.h:2564
int wimlib_get_wim_info(WIMStruct *wim, struct wimlib_wim_info *info)
Get basic information about a WIM file.
Definition: wimlib.h:2549
int wimlib_join_with_progress(const wimlib_tchar *const *swms, unsigned num_swms, const wimlib_tchar *output_path, int swm_open_flags, int wim_write_flags, wimlib_progress_func_t progfunc, void *progctx)
Same as wimlib_join(), but allows specifying a progress function.
uint32_t metadata_only
1 iff the "metadata only" flag is set in this WIM&#39;s header
Definition: wimlib.h:1372
int wimlib_unmount_image_with_progress(const wimlib_tchar *dir, int unmount_flags, wimlib_progress_func_t progfunc, void *progctx)
Same as wimlib_unmount_image(), but allows specifying a progress function.
int rename_flags
Reserved; set to 0.
Definition: wimlib.h:2480
uint64_t total_bytes
An upper bound on the number of bytes of file data that will be written.
Definition: wimlib.h:815
Definition: wimlib.h:2575
int wimlib_add_empty_image(WIMStruct *wim, const wimlib_tchar *name, int *new_idx_ret)
Append an empty image to a WIMStruct.
wimlib_progress_status
Valid return values from user-provided progress functions (wimlib_progress_func_t).
Definition: wimlib.h:786
uint32_t mounted_image
1-based index of image being unmounted.
Definition: wimlib.h:1133
int32_t last_access_time_high
High 32 bits of the seconds portion of the last access timestamp, filled in if wimlib_timespec.tv_sec is only 32-bit.
Definition: wimlib.h:1642
long reserved
Reserved; set to 0.
Definition: wimlib.h:1267
enum wimlib_progress_status(* wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, union wimlib_progress_info *info, void *progctx)
A user-supplied function that will be called periodically during certain WIM operations.
Definition: wimlib.h:1247
A directory or file has been scanned.
Definition: wimlib.h:640
Definition: wimlib.h:2550
uint64_t uncompressed_size
If this blob is not missing, then this is the uncompressed size of this blob in bytes.
Definition: wimlib.h:1417
Structure passed to the wimlib_iterate_dir_tree() callback function.
Definition: wimlib.h:1514
Definition: wimlib.h:2559
int add_flags
Bitwise OR of WIMLIB_ADD_FLAG_* flags.
Definition: wimlib.h:2457
const wimlib_tchar * extraction_path
Path to which the file is being extracted.
Definition: wimlib.h:1121
unsigned cur_part_number
Number of the split WIM part that is about to be started (WIMLIB_PROGRESS_MSG_SPLIT_BEGIN_PART) or ha...
Definition: wimlib.h:1094
Valid on messages WIMLIB_PROGRESS_MSG_SCAN_BEGIN, WIMLIB_PROGRESS_MSG_SCAN_DENTRY, and WIMLIB_PROGRESS_MSG_SCAN_END.
Definition: wimlib.h:856
Definition: wimlib.h:2554
Definition: wimlib.h:2528
uint32_t num_threads
The number of threads being used for data compression; or, if no compression is being performed...
Definition: wimlib.h:838
const wimlib_tchar * dos_name
8.3 name (or "DOS name", or "short name") of this file; or NULL if this file has no such name...
Definition: wimlib.h:1521
Definition: wimlib.h:2572
void wimlib_print_header(const WIMStruct *wim)
Print the header of the WIM file (intended for debugging only).
Definition: wimlib.h:2530
uint32_t total_parts
Currently only used for WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN.
Definition: wimlib.h:992
uint64_t total_bytes
The number of bytes in the WIM file that are covered by integrity checks.
Definition: wimlib.h:1056
Definition: wimlib.h:2583
int(* wimlib_iterate_lookup_table_callback_t)(const struct wimlib_resource_entry *resource, void *user_ctx)
Type of a callback function to wimlib_iterate_lookup_table().
Definition: wimlib.h:1676
uint32_t total_images
Definition: wimlib.h:1170
Starting to read a new part of a split pipable WIM over the pipe.
Definition: wimlib.h:609
uint32_t reserved_flags
Definition: wimlib.h:1459
wimlib_progress_msg
Possible values of the first parameter to the user-supplied wimlib_progress_func_t progress function...
Definition: wimlib.h:579
Definition: wimlib.h:2540
Definition: wimlib.h:2539
Definition: wimlib.h:2519
uint32_t part_number
Currently only used for WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN.
Definition: wimlib.h:988
Rename a file or directory tree in the image.
Definition: wimlib.h:2440
const wimlib_tchar * wimfile_name
If the WIMStruct from which the extraction being performed has a backing file, then this is an absolu...
Definition: wimlib.h:956
size_t completed_commands
Number of update commands that have been completed so far.
Definition: wimlib.h:1043
Definition: wimlib.h:2527
File data is currently being extracted.
Definition: wimlib.h:605
This message may be sent periodically (not for every file) while files and directories are being crea...
Definition: wimlib.h:600
Add a new file or directory tree to the image.
Definition: wimlib.h:2434
int wimlib_reference_resource_files(WIMStruct *wim, const wimlib_tchar *const *resource_wimfiles_or_globs, unsigned count, int ref_flags, int open_flags)
Reference file data from other WIM files or split WIM parts.
int wimlib_set_output_chunk_size(WIMStruct *wim, uint32_t chunk_size)
Set a WIMStruct&#39;s output compression chunk size.
int wimlib_set_wim_info(WIMStruct *wim, const struct wimlib_wim_info *info, int which)
Set basic information about a WIM.
uint32_t opened_from_file
1 iff this info struct is for a WIMStruct that has a backing file.
Definition: wimlib.h:1352
A wimlib_split() operation is in progress, and a split part has been finished.
Definition: wimlib.h:691
uint64_t completed_bytes
Number of bytes of file and metadata resources that have been copied out of the original WIM so far...
Definition: wimlib.h:1089
uint32_t boot_index
The 1-based index of the bootable image in this WIM file, or 0 if no image is bootable.
Definition: wimlib.h:1322
int wimlib_set_output_pack_compression_type(WIMStruct *wim, enum wimlib_compression_type ctype)
Similar to wimlib_set_output_compression_type(), but set the compression type for writing solid resou...
The operation should be aborted.
Definition: wimlib.h:794
int wimlib_get_xml_data(WIMStruct *wim, void **buf_ret, size_t *bufsize_ret)
Read a WIM file&#39;s XML document into an in-memory buffer.
uint32_t unix_uid
The UNIX user ID of this file.
Definition: wimlib.h:1608
uint32_t extract_flags
Extraction flags being used.
Definition: wimlib.h:951
wimlib_tchar * config_file
Path to capture configuration file to use, or NULL if not specified.
Definition: wimlib.h:2454
const wimlib_tchar * from
Name of the temporary file that the WIM was written to.
Definition: wimlib.h:1027
int wimlib_set_print_errors(bool show_messages)
Set whether wimlib can print error and warning messages to the error file, which defaults to standard...
const char * security_descriptor
Pointer to the security descriptor for this file, in Windows SECURITY_DESCRIPTOR_RELATIVE format...
Definition: wimlib.h:1534
int delete_flags
Bitwise OR of WIMLIB_DELETE_FLAG_* flags.
Definition: wimlib.h:2467
size_t total_commands
Number of update commands that are being executed as part of this call to wimlib_update_image().
Definition: wimlib.h:1047
int wimlib_extract_xml_data(WIMStruct *wim, FILE *fp)
Similar to wimlib_get_xml_data(), but the XML document will be written to the specified standard C FI...
int wimlib_delete_path(WIMStruct *wim, int image, const wimlib_tchar *path, int delete_flags)
Delete the path from the specified image of the wim.
int wimlib_set_output_compression_type(WIMStruct *wim, enum wimlib_compression_type ctype)
Set a WIMStruct&#39;s output compression type.
int error_code
The wimlib error code associated with the error.
Definition: wimlib.h:1217
uint32_t chunk_size
The size of each individually checksummed "chunk" in the integrity-checked region.
Definition: wimlib.h:1072
int wimlib_mount_image(WIMStruct *wim, int image, const wimlib_tchar *dir, int mount_flags, const wimlib_tchar *staging_dir)
Mount an image from a WIM file on a directory read-only or read-write.
Valid on messages WIMLIB_PROGRESS_MSG_VERIFY_STREAMS.
Definition: wimlib.h:1175
Definition: wimlib.h:2512
Definition: wimlib.h:2547
uint64_t completed_bytes
The number of bytes of file data that have been extracted so far.
Definition: wimlib.h:974
int wimlib_decompress(const void *compressed_data, size_t compressed_size, void *uncompressed_data, size_t uncompressed_size, struct wimlib_decompressor *decompressor)
Decompress a buffer of data.
Definition: wimlib.h:2560
uint64_t completed_bytes
The number of bytes that have been checksummed so far.
Definition: wimlib.h:1060
int wimlib_set_default_compression_level(int ctype, unsigned int compression_level)
Set the default compression level for the specified compression type.
Information about a stream of a particular file in the WIM.
Definition: wimlib.h:1487
int wimlib_resolve_image(WIMStruct *wim, const wimlib_tchar *image_name_or_num)
Translate a string specifying the name or number of an image in the WIM into the number of the image...
size_t depth
Depth of this directory entry, where 0 is the root, 1 is the root&#39;s children, ..., etc.
Definition: wimlib.h:1529
Definition: wimlib.h:2576
const wimlib_tchar * to
Name of the original WIM file to which the temporary file is being renamed.
Definition: wimlib.h:1031
Data for a WIMLIB_UPDATE_OP_DELETE operation.
Definition: wimlib.h:2461
uint64_t current_file_count
For WIMLIB_PROGRESS_MSG_EXTRACT_FILE_STRUCTURE and WIMLIB_PROGRESS_MSG_EXTRACT_METADATA messages...
Definition: wimlib.h:1003
wimlib_verify_wim() has finished verifying the metadata for an image.
Definition: wimlib.h:737
wimlib_verify_wim() is verifying file data integrity.
Definition: wimlib.h:741
int wimlib_set_image_descripton(WIMStruct *wim, int image, const wimlib_tchar *description)
Change the description of a WIM image.
uint32_t spanned
1 iff the "spanned" flag is set in this WIM&#39;s header
Definition: wimlib.h:1366
uint64_t completed_streams
Definition: wimlib.h:1179
int wimlib_iterate_lookup_table(WIMStruct *wim, int flags, wimlib_iterate_lookup_table_callback_t cb, void *user_ctx)
Iterate through the blob lookup table of a WIMStruct.
Definition: wimlib.h:2544
const wimlib_tchar * symlink_target
For WIMLIB_PROGRESS_MSG_SCAN_DENTRY and a status of WIMLIB_SCAN_DENTRY_FIXED_SYMLINK or WIMLIB_SCAN_D...
Definition: wimlib.h:909
Definition: wimlib.h:2523
Definition: wimlib.h:2532
Valid on messages WIMLIB_PROGRESS_MSG_UNMOUNT_BEGIN.
Definition: wimlib.h:1125
int wimlib_set_output_pack_chunk_size(WIMStruct *wim, uint32_t chunk_size)
Similar to wimlib_set_output_chunk_size(), but set the chunk size for writing solid resources...
const wimlib_tchar * mountpoint
Path to directory being unmounted.
Definition: wimlib.h:1127
uint32_t unix_mode
The UNIX mode of this file.
Definition: wimlib.h:1620
An integrity table is being calculated for the WIM being written.
Definition: wimlib.h:682
Definition: wimlib.h:2566
uint32_t is_readonly
1 iff this WIM file is considered readonly for any reason (e.g.
Definition: wimlib.h:1357
void wimlib_free_compressor(struct wimlib_compressor *compressor)
Free a compressor previously allocated with wimlib_create_compressor().
int wimlib_add_image_multisource(WIMStruct *wim, const struct wimlib_capture_source *sources, size_t num_sources, const wimlib_tchar *name, const wimlib_tchar *config_file, int add_flags)
This function is equivalent to wimlib_add_image() except it allows for multiple sources to be combine...
Definition: wimlib.h:2542
wimlib_tchar * part_name
Name of the split WIM part that is about to be started (WIMLIB_PROGRESS_MSG_SPLIT_BEGIN_PART) or has ...
Definition: wimlib.h:1106
int wimlib_set_error_file(FILE *fp)
Set the file to which the library will print error and warning messages.
A WIM update command is about to be executed.
Definition: wimlib.h:697
uint32_t completed_chunks
The number of chunks that have been checksummed so far.
Definition: wimlib.h:1068
int32_t compression_type
The default compression type of resources in this WIM file, as one of the wimlib_compression_type con...
Definition: wimlib.h:1341
uint64_t num_dirs_scanned
The number of directories scanned so far, not counting excluded/unsupported files.
Definition: wimlib.h:914
int wimlib_open_wim_with_progress(const wimlib_tchar *wim_file, int open_flags, WIMStruct **wim_ret, wimlib_progress_func_t progfunc, void *progctx)
Same as wimlib_open_wim(), but allows specifying a progress function and progress context...
The directory or NTFS volume is about to be scanned for metadata.
Definition: wimlib.h:634
Since wimlib v1.9.1: an object ID, which is an extra piece of metadata that may be associated with a ...
Definition: wimlib.h:1503
uint64_t num_nondirs_scanned
The number of non-directories scanned so far, not counting excluded/unsupported files.
Definition: wimlib.h:918
Definition: wimlib.h:2561
Definition: wimlib.h:2585
Specification of an update to perform on a WIM image.
Definition: wimlib.h:2484
Definition: wimlib.h:2581
uint32_t image_count
The number of images in this WIM file.
Definition: wimlib.h:1318
Definition: wimlib.h:2511
This message may be sent periodically (not necessarily for every file) while file and directory metad...
Definition: wimlib.h:617
Definition: wimlib.h:2522
uint64_t hard_link_group_id
A unique identifier for this file&#39;s inode.
Definition: wimlib.h:1594
uint32_t part_number
If this blob is located in a WIM resource, then this is the part number of the WIM file containing it...
Definition: wimlib.h:1434
uint32_t reparse_tag
If the file is a reparse point (FILE_ATTRIBUTE_REPARSE_POINT set in the attributes), this will give the reparse tag.
Definition: wimlib.h:1576
uint32_t image
The 1-based index of the image from which files are being extracted.
Definition: wimlib.h:948
uint64_t end_file_count
For WIMLIB_PROGRESS_MSG_EXTRACT_FILE_STRUCTURE and WIMLIB_PROGRESS_MSG_EXTRACT_METADATA messages...
Definition: wimlib.h:1021
uint16_t part_number
For split WIMs, the 1-based index of this part within the split WIM; otherwise 1. ...
Definition: wimlib.h:1333
Definition: wimlib.h:2552
uint64_t raw_resource_uncompressed_size
If this blob is located in a solid WIM resource, then this is the uncompressed size of that solid res...
Definition: wimlib.h:1471
uint64_t total_bytes
The number of bytes of file data that will be extracted.
Definition: wimlib.h:970
Definition: wimlib.h:2557
Definition: wimlib.h:2524
Definition: wimlib.h:2513
File data is currently being written to the WIM.
Definition: wimlib.h:653
uint64_t offset
If this blob is located in a non-solid WIM resource, then this is the offset of that resource within ...
Definition: wimlib.h:1427
const wimlib_tchar * full_path
Full path to this file within the image.
Definition: wimlib.h:1525
uint32_t is_metadata
1 iff this blob contains the metadata for an image.
Definition: wimlib.h:1446
Valid on messages WIMLIB_PROGRESS_MSG_TEST_FILE_EXCLUSION.
Definition: wimlib.h:1184
uint32_t wimlib_get_version(void)
Return the version of wimlib as a 32-bit number whose top 12 bits contain the major version...
uint64_t completed_bytes
The number of bytes of file data that have been written so far.
Definition: wimlib.h:829
const wimlib_tchar * wimfile
Definition: wimlib.h:1169
int wimlib_update_image(WIMStruct *wim, int image, const struct wimlib_update_command *cmds, size_t num_cmds, int update_flags)
Update a WIM image by adding, deleting, and/or renaming files or directories.
const wimlib_tchar * path_in_wim
Path to the file in the image that is being replaced.
Definition: wimlib.h:1112
void wimlib_register_progress_function(WIMStruct *wim, wimlib_progress_func_t progfunc, void *progctx)
Register a progress function with a WIMStruct.
const wimlib_tchar * mounted_wim
Path to WIM file being unmounted.
Definition: wimlib.h:1130
uint32_t unmount_flags
Flags passed to wimlib_unmount_image().
Definition: wimlib.h:1140
The progress function is being asked whether a file should be excluded from capture or not...
Definition: wimlib.h:755
const wimlib_tchar * wimlib_get_image_description(const WIMStruct *wim, int image)
Get the description of the specified image.
wimlib_tchar * fs_source_path
Filesystem path to the file or directory tree to add.
Definition: wimlib.h:2446
Definition: wimlib.h:2546
uint32_t wim_version
The version of the WIM file format used in this WIM file.
Definition: wimlib.h:1325
Definition: wimlib.h:2573
Definition: wimlib.h:2571
int32_t reserved2
Definition: wimlib.h:1644
Definition: wimlib.h:2535
Definition: wimlib.h:2548
wimlib_tchar * wim_path
The path to the file or directory within the image to delete.
Definition: wimlib.h:2464
wimlib has used a file&#39;s data for the last time (including all data streams, if it has multiple)...
Definition: wimlib.h:728
const wimlib_tchar * wimlib_get_compression_type_string(enum wimlib_compression_type ctype)
Convert a wimlib_compression_type value into a string.
int wimlib_extract_image(WIMStruct *wim, int image, const wimlib_tchar *target, int extract_flags)
Extract an image, or all images, from a WIMStruct.
const wimlib_tchar * wimlib_get_image_name(const WIMStruct *wim, int image)
Get the name of the specified image.
uint32_t is_marked_readonly
1 iff the "readonly" flag is set in this WIM&#39;s header
Definition: wimlib.h:1363
int wimlib_write(WIMStruct *wim, const wimlib_tchar *path, int image, int write_flags, unsigned num_threads)
Persist a WIMStruct to a new on-disk WIM file.
int wimlib_export_image(WIMStruct *src_wim, int src_image, WIMStruct *dest_wim, const wimlib_tchar *dest_name, const wimlib_tchar *dest_description, int export_flags)
Export an image, or all images, from a WIMStruct into another WIMStruct.
Definition: wimlib.h:2551
const wimlib_tchar * image_name
Name of the image from which files are being extracted, or the empty string if the image is unnamed...
Definition: wimlib.h:960
int wimlib_create_new_wim(enum wimlib_compression_type ctype, WIMStruct **wim_ret)
Create a WIMStruct which initially contains no images and is not backed by an on-disk file...
int wimlib_split(WIMStruct *wim, const wimlib_tchar *swm_name, uint64_t part_size, int write_flags)
Split a WIM into multiple parts.
Valid on messages WIMLIB_PROGRESS_MSG_UPDATE_BEGIN_COMMAND and WIMLIB_PROGRESS_MSG_UPDATE_END_COMMAND...
Definition: wimlib.h:1036
wimlib_tchar * wim_target_path
The path to the destination file or directory within the image.
Definition: wimlib.h:2477
Definition: wimlib.h:2538
Information about a "blob", which is a fixed length sequence of binary data.
Definition: wimlib.h:1413
uint16_t total_parts
For split WIMs, the total number of parts in the split WIM; otherwise 1.
Definition: wimlib.h:1337
Definition: wimlib.h:2541
A file in the image is being replaced as a result of a wimlib_add_command without WIMLIB_ADD_FLAG_NO_...
Definition: wimlib.h:710
Data for a WIMLIB_UPDATE_OP_ADD operation.
Definition: wimlib.h:2444
uint32_t is_free
Definition: wimlib.h:1448
void wimlib_print_available_images(const WIMStruct *wim, int image)
(Deprecated) Print information about one image, or all images, contained in a WIM.
uint64_t completed_streams
The number of file streams that have been extracted so far.
Definition: wimlib.h:984