# define _wimlib_deprecated
#endif
+#define WIMLIB_GUID_LEN 16
+
/**
* Specifies the compression type of a WIM file.
*/
* info will point to ::wimlib_progress_info.extract. */
WIMLIB_PROGRESS_MSG_EXTRACT_STREAMS,
- /** Reserved. */
- WIMLIB_PROGRESS_MSG_EXTRACT_RESERVED,
+ /** Starting to read a new part of a split pipable WIM over the pipe.
+ * @a info will point to ::wimlib_progress_info.extract. */
+ WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN,
/** All the WIM files and directories have been extracted, and
* timestamps are about to be applied. @a info will point to
* ::wimlib_progress_info.integrity. */
WIMLIB_PROGRESS_MSG_CALC_INTEGRITY,
- /** A wimlib_join() operation is in progress. @a info will point to
- * ::wimlib_progress_info.join. */
- WIMLIB_PROGRESS_MSG_JOIN_STREAMS,
+ /** Reserved. (Previously used for WIMLIB_PROGRESS_MSG_JOIN_STREAMS,
+ * but in wimlib v1.5.0 this was removed to simplify the code and now
+ * you'll get ::WIMLIB_PROGRESS_MSG_WRITE_STREAMS messages instead.) */
+ WIMLIB_PROGRESS_MSG_RESERVED,
/** A wimlib_split() operation is in progress, and a new split part is
* about to be started. @a info will point to
* (The actual number of bytes will be less if the data is being
* written compressed.) */
uint64_t total_bytes;
+
/** Number of streams that are going to be written. */
uint64_t total_streams;
uint64_t completed_streams;
/** Number of threads that are being used to compress resources
- * (if applicable). */
+ * (if applicable). */
unsigned num_threads;
/** The compression type being used to write the streams; either
* ::WIMLIB_COMPRESSION_TYPE_LZX. */
int compression_type;
- /** Library internal use only. */
- uint64_t _private;
+ /** Number of split WIM parts from which streams are being
+ * written (may be 0 if irrelevant). */
+ unsigned total_parts;
+
+ /** Number of split WIM parts from which streams have been
+ * written (may be 0 if irrelevant). */
+ unsigned completed_parts;
} write_streams;
/** Valid on messages ::WIMLIB_PROGRESS_MSG_SCAN_BEGIN and
* being extracted. Will be the empty string when extracting a
* full image. */
const wimlib_tchar *extract_root_wim_source_path;
+
+ /** Currently only used for
+ * ::WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN. */
+
+ unsigned part_number;
+
+ /** Currently only used for
+ * ::WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN. */
+ unsigned total_parts;
+
+ /** Currently only used for
+ * ::WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN. */
+ uint8_t guid[WIMLIB_GUID_LEN];
} extract;
/** Valid on messages ::WIMLIB_PROGRESS_MSG_RENAME. */
const wimlib_tchar *filename;
} integrity;
- /** Valid on messages ::WIMLIB_PROGRESS_MSG_JOIN_STREAMS. */
- struct wimlib_progress_info_join {
- /** Total number of bytes of compressed data contained in all
- * the split WIM part's file and metadata resources. */
- uint64_t total_bytes;
-
- /** Number of bytes that have been copied to the joined WIM so
- * far. Will be 0 initially, and equal to @a total_bytes at the
- * end. */
- uint64_t completed_bytes;
-
- /** Number of split WIM parts that have had all their file and
- * metadata resources copied over to the joined WIM so far. */
- unsigned completed_parts;
-
- /** Number of split WIM parts. */
- unsigned total_parts;
- } join;
-
/** Valid on messages ::WIMLIB_PROGRESS_MSG_SPLIT_BEGIN_PART and
* ::WIMLIB_PROGRESS_MSG_SPLIT_END_PART. */
struct wimlib_progress_info_split {
* reparse-point fixups by default when capturing or applying WIM images. */
#define WIMLIB_CHANGE_RPFIX_FLAG 0x00000008
-#define WIMLIB_GUID_LEN 16
-
/** General information about a WIM file. */
struct wimlib_wim_info {
* create symbolic links. */
#define WIMLIB_EXTRACT_FLAG_STRICT_SYMLINKS 0x00008000
+/** TODO */
+#define WIMLIB_EXTRACT_FLAG_RESUME 0x00010000
+
/******************************
* WIMLIB_MOUNT_FLAG_*
* in this mode; also, ::WIMLIB_EXTRACT_FLAG_TO_STDOUT is invalid and will
* result in ::WIMLIB_ERR_INVALID_PARAM being returned.
* @param progress_func
- * Same as the corresponding parameter to wimlib_extract_image().
+ * Same as the corresponding parameter to wimlib_extract_image(), except
+ * ::WIMLIB_PROGRESS_MSG_EXTRACT_SPWM_PART_BEGIN messages will also be
+ * received.
*
* @return 0 on success; nonzero on error. The possible error codes include
* those returned by wimlib_extract_image() as well as the following:
* the WIM may be larger than this size, and the WIM file format provides
* no way to split up file resources among multiple WIMs.
* @param write_flags
- * ::WIMLIB_WRITE_FLAG_CHECK_INTEGRITY if integrity tables are to be
- * included in the split WIM parts.
+ * Bitwise OR of relevant flags prefixed with @c WIMLIB_WRITE_FLAG. These
+ * flags will be used to write each split WIM part. Specify 0 here to get
+ * the default behavior.
* @param progress_func
* If non-NULL, a function that will be called periodically with the
- * progress of the current operation.
+ * progress of the current operation
+ * (::WIMLIB_PROGRESS_MSG_SPLIT_BEGIN_PART and
+ * ::WIMLIB_PROGRESS_MSG_SPLIT_END_PART).
*
* @return 0 on success; nonzero on error. This function may return any value
* returned by wimlib_write() as well as the following error codes:
*
* @retval ::WIMLIB_ERR_SPLIT_UNSUPPORTED
- * @a wim is not part 1 of a stand-alone WIM.
+ * @a wim was not part 1 of a stand-alone WIM.
* @retval ::WIMLIB_ERR_INVALID_PARAM
- * @a swm_name was @c NULL, or @a part_size was 0.
+ * @a swm_name was not a nonempty string, or @a part_size was 0.
*
* Note: the WIM's uncompressed and compressed resources are not checksummed
* when they are copied from the joined WIM to the split WIM parts, nor are
- * compressed resources re-compressed.
+ * compressed resources re-compressed (unless explicitly requested with
+ * ::WIMLIB_WRITE_FLAG_RECOMPRESS).
*/
extern int
wimlib_split(WIMStruct *wim,