]> wimlib.net Git - wimlib/blobdiff - src/wimlib.h
wimlib_write(): Add WIMLIB_WRITE_FLAG_FSYNC
[wimlib] / src / wimlib.h
index 8c133a261cca606e45c8b5e84119cdb60830759a..2ccbd5801d641123ba39d178ccf6f8a31c8f0d04 100644 (file)
@@ -262,12 +262,16 @@ enum wim_compression_type {
 /** Include an integrity table in the new WIM file. */
 #define WIMLIB_WRITE_FLAG_CHECK_INTEGRITY      0x00000001
 
-/** Print progress information when writing the integrity table. */
+/** Print progress information when writing streams and when writing the
+ * integrity table. */
 #define WIMLIB_WRITE_FLAG_SHOW_PROGRESS                0x00000002
 
 /** Print file paths as we write then */
 #define WIMLIB_WRITE_FLAG_VERBOSE              0x00000004
 
+/** Call fsync() when the WIM file is closed */
+#define WIMLIB_WRITE_FLAG_FSYNC                        0x00000008
+
 /** Mark the image being added as the bootable image of the WIM. */
 #define WIMLIB_ADD_IMAGE_FLAG_BOOT             0x00000001
 
@@ -278,6 +282,9 @@ enum wim_compression_type {
 /** Follow symlinks; archive and dump the files they point to. */
 #define WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE      0x00000004
 
+/** Show progress information when scanning a directory tree */
+#define WIMLIB_ADD_IMAGE_FLAG_SHOW_PROGRESS    0x00000008
+
 /** See documentation for wimlib_export_image(). */
 #define WIMLIB_EXPORT_FLAG_BOOT                        0x00000001
 
@@ -399,7 +406,9 @@ enum wimlib_error_code {
  *     printed as it is scanned or captured.  If
  *     ::WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE is specified, the files or
  *     directories pointed to by symbolic links are archived rather than the
- *     symbolic links themselves.
+ *     symbolic links themselves.  If ::WIMLIB_ADD_IMAGE_FLAG_SHOW_PROGRESS is
+ *     specified, progress information will be printed (distinct from the
+ *     verbose information).
  *
  * @return 0 on success; nonzero on error.  On error, changes to @a wim are
  * discarded so that it appears to be in the same state as when this function
@@ -914,7 +923,10 @@ extern int wimlib_join(const char **swms, unsigned num_swms,
  *
  * wimlib_mount() cannot be used on an image that was exported with
  * wimlib_export_image() while the dentry trees for both images are still in
- * memory.
+ * memory.  In addition, wimlib_mount() may not be used to mount an image that
+ * has just been added with wimlib_add_image() or
+ * wimlib_add_image_from_ntfs_volume(), unless the WIM has been written and read
+ * into a new ::WIMStruct.
  *
  * @param wim
  *     Pointer to the ::WIMStruct for the WIM file to be mounted.
@@ -954,7 +966,8 @@ extern int wimlib_join(const char **swms, unsigned num_swms,
  *     @a image does not specify an existing, single image in @a wim.
  * @retval ::WIMLIB_ERR_INVALID_PARAM
  *     @a image is shared among multiple ::WIMStruct's as a result of a call to
- *     wimlib_export_image().
+ *     wimlib_export_image(), or @a image has been added with
+ *     wimlib_add_image() or wimlib_add_image_from_ntfs_volume().
  * @retval ::WIMLIB_ERR_INVALID_RESOURCE_SIZE
  *     The metadata resource for @a image in @a wim is invalid.
  * @retval ::WIMLIB_ERR_INVALID_SECURITY_DATA
@@ -1072,9 +1085,11 @@ extern int wimlib_open_wim(const char *wim_file, int flags,
  *     Pointer to the ::WIMStruct for the WIM file to write.  There may have
  *     been in-memory changes made to it, which are then reflected in the
  *     output file.
- * @param flags
+ * @param write_flags
  *     Bitwise OR of ::WIMLIB_WRITE_FLAG_CHECK_INTEGRITY and/or
  *     ::WIMLIB_WRITE_FLAG_SHOW_PROGRESS.
+ * @param num_threads
+ *     Number of threads to use for compression (see wimlib_write()).
  *
  * @return 0 on success; nonzero on error.  This function may return any value
  * returned by wimlib_write() as well as the following error codes:
@@ -1085,7 +1100,8 @@ extern int wimlib_open_wim(const char *wim_file, int flags,
  *     The temporary file that the WIM was written to could not be renamed to
  *     the original filename of @a wim.
  */
-extern int wimlib_overwrite(WIMStruct *wim, int flags);
+extern int wimlib_overwrite(WIMStruct *wim, int write_flags,
+                           unsigned num_threads);
 
 /**
  * Updates the header and XML data of the WIM file, without the need to write
@@ -1100,7 +1116,7 @@ extern int wimlib_overwrite(WIMStruct *wim, int flags);
  *
  * @param wim
  *     Pointer to the ::WIMStruct for the WIM file to overwrite.
- * @param flags
+ * @param write_flags
  *     Bitwise OR of ::WIMLIB_WRITE_FLAG_CHECK_INTEGRITY and/or
  *     ::WIMLIB_WRITE_FLAG_SHOW_PROGRESS.
  *
@@ -1127,7 +1143,7 @@ extern int wimlib_overwrite(WIMStruct *wim, int flags);
  *     Failed to write the WIM header, the XML data, or the integrity table to
  *     the WIM file associated with @a wim.
  */
-extern int wimlib_overwrite_xml_and_header(WIMStruct *wim, int flags);
+extern int wimlib_overwrite_xml_and_header(WIMStruct *wim, int write_flags);
 
 /**
  * Prints information about one image, or all images, contained in a WIM.
@@ -1525,13 +1541,19 @@ extern int wimlib_unmount(const char *dir, int flags);
  * @param image
  *     The image inside the WIM to write.  Use ::WIM_ALL_IMAGES to include all
  *     images.
- * @param flags
+ * @param write_flags
  *     Bitwise OR of ::WIMLIB_WRITE_FLAG_CHECK_INTEGRITY and/or
  *     ::WIMLIB_WRITE_FLAG_SHOW_PROGRESS.  If
  *     ::WIMLIB_WRITE_FLAG_CHECK_INTEGRITY is given, an integrity table is
  *     included in the WIM being written.  If ::WIMLIB_WRITE_FLAG_SHOW_PROGRESS
  *     is given, the progress of the calculation of the integrity table is
  *     shown.
+ * @param num_threads
+ *     Number of threads to use for compressing data.  Autodetected if set to
+ *     0.  Note: if no data compression needs to be done, no threads will be
+ *     created regardless of this parameter (e.g. if writing an uncompressed
+ *     WIM, or exporting an image from a compressed WIM to another WIM of the
+ *     same compression type).
  *
  * @return 0 on success; nonzero on error.
  * @retval ::WIMLIB_ERR_DECOMPRESSION
@@ -1570,7 +1592,8 @@ extern int wimlib_unmount(const char *dir, int flags);
  *     An error occurred when trying to write data to the new WIM file at @a
  *     path.
  */
-extern int wimlib_write(WIMStruct *wim, const char *path, int image, int flags);
+extern int wimlib_write(WIMStruct *wim, const char *path, int image,
+                       int write_flags, unsigned num_threads);