X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fwimlib.h;h=b2dd303423e16c96c79b50a961b2353f2eaa8a2c;hp=084f70499fa908696bc101e6c79184d3b8418c65;hb=ded522fd0a15d740354329c5066ebd3473563e57;hpb=034fd063f956d0806e557680a36a69a42556a776 diff --git a/src/wimlib.h b/src/wimlib.h index 084f7049..b2dd3034 100644 --- a/src/wimlib.h +++ b/src/wimlib.h @@ -31,7 +31,7 @@ * * \section intro Introduction * - * This is the documentation for the library interface of wimlib 1.2.0. If you + * This is the documentation for the library interface of wimlib 1.2.1. If you * have installed wimlib and want to know how to use the @c imagex program, * please see the man pages instead. * @@ -217,7 +217,7 @@ #define WIMLIB_MAJOR_VERSION 1 #define WIMLIB_MINOR_VERSION 2 -#define WIMLIB_PATCH_VERSION 0 +#define WIMLIB_PATCH_VERSION 1 /** * Opaque structure that represents a WIM file. This is an in-memory structure @@ -503,9 +503,6 @@ union wimlib_progress_info { /** Number of split WIM parts. */ unsigned total_parts; - - /** Name of the joined WIM file being written. */ - const char *filename; } join; /** Valid on messages ::WIMLIB_PROGRESS_MSG_SPLIT_BEGIN_PART and @@ -639,6 +636,12 @@ typedef int (*wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, * discarded. Ignored for read-only mounts. */ #define WIMLIB_UNMOUNT_FLAG_COMMIT 0x00000002 +/** See ::WIMLIB_WRITE_FLAG_REBUILD */ +#define WIMLIB_UNMOUNT_FLAG_REBUILD 0x00000004 + +/** See ::WIMLIB_WRITE_FLAG_RECOMPRESS */ +#define WIMLIB_UNMOUNT_FLAG_RECOMPRESS 0x00000008 + /****************************** * WIMLIB_WRITE_FLAG_* * ******************************/ @@ -658,7 +661,7 @@ typedef int (*wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, /** Call fsync() when the WIM file is closed */ #define WIMLIB_WRITE_FLAG_FSYNC 0x00000008 -/** Specifying this flag overrides the default behavior of wimlib_overwrite() +/* Specifying this flag overrides the default behavior of wimlib_overwrite() * after one or more calls to wimlib_delete_image(), which is to rebuild the * entire WIM. * @@ -678,13 +681,14 @@ typedef int (*wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, enum wimlib_error_code { WIMLIB_ERR_SUCCESS = 0, WIMLIB_ERR_ALREADY_LOCKED, - WIMLIB_ERR_CHAR_CONVERSION, WIMLIB_ERR_COMPRESSED_LOOKUP_TABLE, WIMLIB_ERR_DECOMPRESSION, WIMLIB_ERR_DELETE_STAGING_DIR, + WIMLIB_ERR_FILESYSTEM_DAEMON_CRASHED, WIMLIB_ERR_FORK, WIMLIB_ERR_FUSE, WIMLIB_ERR_FUSERMOUNT, + WIMLIB_ERR_ICONV_NOT_AVAILABLE, WIMLIB_ERR_IMAGE_COUNT, WIMLIB_ERR_IMAGE_NAME_COLLISION, WIMLIB_ERR_INTEGRITY, @@ -701,6 +705,10 @@ enum wimlib_error_code { WIMLIB_ERR_INVALID_RESOURCE_HASH, WIMLIB_ERR_INVALID_RESOURCE_SIZE, WIMLIB_ERR_INVALID_SECURITY_DATA, + WIMLIB_ERR_INVALID_UNMOUNT_MESSAGE, + WIMLIB_ERR_INVALID_UTF8_STRING, + WIMLIB_ERR_INVALID_UTF16_STRING, + WIMLIB_ERR_LIBXML_UTF16_HANDLER_NOT_AVAILABLE, WIMLIB_ERR_LINK, WIMLIB_ERR_MKDIR, WIMLIB_ERR_MQUEUE, @@ -982,8 +990,7 @@ extern int wimlib_delete_image(WIMStruct *wim, int image); * ::WIMLIB_ALL_IMAGES, @a src_wim contains multiple images, and no images in * @a src_wim are marked as bootable; or @a dest_name and/or @a * dest_description were non-NULL, @a src_image was - * ::WIMLIB_ALL_IMAGES, and @a src_wim contains multiple images; or @a src_wim - * or @a dest_wim was @c NULL. + * ::WIMLIB_ALL_IMAGES, and @a src_wim contains multiple images. * @retval ::WIMLIB_ERR_INVALID_RESOURCE_SIZE * The metadata resource for @a src_image in @a src_wim is invalid. * @retval ::WIMLIB_ERR_INVALID_SECURITY_DATA @@ -1085,11 +1092,11 @@ extern int wimlib_export_image(WIMStruct *src_wim, int src_image, * A directory entry in the metadata resource for @a image in @a wim is * invalid. * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a wim was @c NULL, or @a target was @c NULL, or both - * ::WIMLIB_EXTRACT_FLAG_HARDLINK and ::WIMLIB_EXTRACT_FLAG_SYMLINK were - * specified in @a extract_flags, or both ::WIMLIB_EXTRACT_FLAG_NTFS and - * either ::WIMLIB_EXTRACT_FLAG_HARDLINK or ::WIMLIB_EXTRACT_FLAG_SYMLINK - * were specified in @a extract_flags, or ::WIMLIB_EXTRACT_FLAG_NTFS was + * @a target was @c NULL, or both ::WIMLIB_EXTRACT_FLAG_HARDLINK and + * ::WIMLIB_EXTRACT_FLAG_SYMLINK were specified in @a extract_flags, or + * both ::WIMLIB_EXTRACT_FLAG_NTFS and either + * ::WIMLIB_EXTRACT_FLAG_HARDLINK or ::WIMLIB_EXTRACT_FLAG_SYMLINK were + * specified in @a extract_flags, or ::WIMLIB_EXTRACT_FLAG_NTFS was * specified in @a extract_flags and @a image was ::WIMLIB_ALL_IMAGES. * @retval ::WIMLIB_ERR_INVALID_RESOURCE_HASH * The SHA1 message digest of an extracted stream did not match the SHA1 @@ -1407,6 +1414,7 @@ extern int wimlib_join(const char **swms, unsigned num_swms, * the same directory as the WIM file that @a wim was originally read from. * * @return 0 on success; nonzero on error. + * * @retval ::WIMLIB_ERR_ALREADY_LOCKED * A read-write mount was requested, but an an exclusive advisory lock on * the on-disk WIM file could not be acquired because another thread or @@ -1646,8 +1654,6 @@ extern void wimlib_print_available_images(const WIMStruct *wim, int image); * @retval ::WIMLIB_ERR_INVALID_IMAGE * @a image does not specify a valid image in @a wim, and is not * ::WIMLIB_ALL_IMAGES. - * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a wim was @c NULL. * @retval ::WIMLIB_ERR_INVALID_RESOURCE_SIZE * The metadata resource for one of the specified images is invalid. * @retval ::WIMLIB_ERR_INVALID_SECURITY_DATA @@ -1710,8 +1716,6 @@ extern void wimlib_print_lookup_table(WIMStruct *wim); * @retval ::WIMLIB_ERR_INVALID_IMAGE * @a image does not specify a valid image in @a wim, and is not * ::WIMLIB_ALL_IMAGES. - * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a wim was @c NULL. * @retval ::WIMLIB_ERR_INVALID_RESOURCE_SIZE * The metadata resource for one of the specified images is invalid. * @retval ::WIMLIB_ERR_INVALID_SECURITY_DATA @@ -1777,8 +1781,6 @@ extern int wimlib_resolve_image(WIMStruct *wim, const char *image_name_or_num); * The number of the image to mark as bootable, or 0 to mark no image as * bootable. * @return 0 on success; nonzero on error. - * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a wim was @c NULL. * @retval ::WIMLIB_ERR_INVALID_IMAGE * @a boot_idx does not specify an existing image in @a wim, and it was not * 0. @@ -1804,8 +1806,6 @@ extern int wimlib_set_boot_idx(WIMStruct *wim, int boot_idx); * @return 0 on success; nonzero on error. * @retval ::WIMLIB_ERR_INVALID_IMAGE * @a image does not specify a single existing image in @a wim. - * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a wim was @c NULL. * @retval ::WIMLIB_ERR_NOMEM * Failed to allocate the memory needed to duplicate the @a description * string. @@ -1830,8 +1830,6 @@ extern int wimlib_set_image_descripton(WIMStruct *wim, int image, * @return 0 on success; nonzero on error. * @retval ::WIMLIB_ERR_INVALID_IMAGE * @a image does not specify a single existing image in @a wim. - * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a wim was @c NULL. * @retval ::WIMLIB_ERR_NOMEM * Failed to allocate the memory needed to duplicate the @a flags string. */ @@ -1853,7 +1851,7 @@ extern int wimlib_set_image_flags(WIMStruct *wim, int image, const char *flags); * @retval ::WIMLIB_ERR_IMAGE_NAME_COLLISION * There is already an image named @a name in @a wim. * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a name was @c NULL or the empty string, or @a wim was @c NULL. + * @a name was @c NULL or the empty string. * @retval ::WIMLIB_ERR_INVALID_IMAGE * @a image does not specify a single existing image in @a wim. * @retval ::WIMLIB_ERR_NOMEM @@ -1943,7 +1941,7 @@ extern int wimlib_set_print_errors(bool show_messages); * @retval ::WIMLIB_ERR_SPLIT_UNSUPPORTED: * @a wim is not part 1 of a stand-alone WIM. * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a w was @c NULL, @a swm_name was @c NULL, or @a part_size was 0. + * @a swm_name was @c NULL, 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 @@ -1962,14 +1960,9 @@ extern int wimlib_split(WIMStruct *wim, const char *swm_name, * * To unmount the image, the thread calling this function communicates with the * thread that is managing the mounted WIM image. This function blocks until it - * is known whether the unmount succeeded or failed. (This means until the - * entire WIM has been re-written, in the case of a read-write mounted WIM.) - * - * There is currently a design problem with this function because it is hard to - * know whether the filesystem thread is still working or whether it has crashed - * or has been killed. Currently, a timeout of 600 seconds (so long because - * WIMs can be very large) is implemented so that this function will not wait - * forever before returning failure. + * is known whether the unmount succeeded or failed. In the case of a + * read-write mounted WIM, the unmount is not considered to have succeeded until + * all changes have been saved to the underlying WIM file. * * @param dir * The directory that the WIM image was mounted on. @@ -1978,13 +1971,17 @@ extern int wimlib_split(WIMStruct *wim, const char *swm_name, * ::WIMLIB_UNMOUNT_FLAG_COMMIT. Neither of these flags affect read-only * mounts. * @param progress_func - * Currently ignored, but may be used for a progress callback in the - * future. Set to @c NULL. + * If non-NULL, a function that will be called periodically with the + * progress of the current operation. * * @return 0 on success; nonzero on error. + * * @retval ::WIMLIB_ERR_DELETE_STAGING_DIR * The filesystem daemon was unable to remove the staging directory and the * temporary files that it contains. + * @retval ::WIMLIB_ERR_FILESYSTEM_DAEMON_CRASHED + * The filesystem daemon appears to have terminated before sending an exit + * status. * @retval ::WIMLIB_ERR_FORK * Could not @c fork() the process. * @retval ::WIMLIB_ERR_FUSERMOUNT @@ -1999,10 +1996,6 @@ extern int wimlib_split(WIMStruct *wim, const char *swm_name, * @retval ::WIMLIB_ERR_OPEN * The filesystem daemon could not open a temporary file for writing the * new WIM. - * @retval ::WIMLIB_ERR_TIMEOUT - * 600 seconds elapsed while waiting for the filesystem daemon to notify - * the process of its exit status, so the WIM file probably was not written - * successfully. * @retval ::WIMLIB_ERR_READ * A read error occurred when the filesystem daemon tried to a file from * the staging directory @@ -2062,7 +2055,7 @@ extern int wimlib_unmount_image(const char *dir, int unmount_flags, * wimlib_add_image() or wimlib_add_image_from_ntfs_volume() functions was * concurrently modified, so it failed the SHA1 message digest check. * @retval ::WIMLIB_ERR_INVALID_PARAM - * @a wim or @a path was @c NULL. + * @a path was @c NULL. * @retval ::WIMLIB_ERR_INVALID_RESOURCE_SIZE * The metadata resource for @a image in @a wim is invalid. * @retval ::WIMLIB_ERR_INVALID_SECURITY_DATA