X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwimlib.h;h=00e81e902f5421ba2ce0b858219da76058fd6c80;hb=6ae89e3fae1efba4a3d53b2793921f415b20e9fb;hp=94a0f9d994595956fc428b4691f615d0d579e002;hpb=512d3f87a1e7b59ca19ae6d6965dbcf7f4a17c15;p=wimlib diff --git a/src/wimlib.h b/src/wimlib.h index 94a0f9d9..00e81e90 100644 --- a/src/wimlib.h +++ b/src/wimlib.h @@ -387,7 +387,7 @@ enum wimlib_error_code { * Pointer to the contents of an image capture configuration file. If @c * NULL, a default string is used. Please see the manual page for * imagex capture for more information. - * @param config_size + * @param config_len * Length of the string @a config in bytes. * * @param flags @@ -435,7 +435,7 @@ extern int wimlib_add_image(WIMStruct *wim, const char *dir, * ::WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE may not be specified because we capture * the reparse points exactly as they are. */ -extern int wimlib_add_image_from_ntfs_volume(WIMStruct *w, const char *device, +extern int wimlib_add_image_from_ntfs_volume(WIMStruct *wim, const char *device, const char *name, const char *config, size_t config_len, @@ -450,7 +450,7 @@ extern int wimlib_add_image_from_ntfs_volume(WIMStruct *w, const char *device, * apply mode we apply the reparse points and hard links exactly as they are in * the WIM. */ -extern int wimlib_apply_image_to_ntfs_volume(WIMStruct *w, int image, +extern int wimlib_apply_image_to_ntfs_volume(WIMStruct *wim, int image, const char *device, int flags, WIMStruct **additional_swms, unsigned num_additional_swms); @@ -514,14 +514,14 @@ extern int wimlib_delete_image(WIMStruct *wim, int image); * Copies an image, or all the images, from a WIM file, into another WIM file. * * @param src_wim - * Pointer to the ::WIMStruct for a WIM file that contains the image(s) - * being exported. + * Pointer to the ::WIMStruct for a stand-alone WIM or part 1 of a split + * WIM that contains the image(s) being exported. * @param src_image * The image to export from @a src_wim. Can be the number of an image, or * ::WIM_ALL_IMAGES to export all images. * @param dest_wim - * Pointer to the ::WIMStruct for a WIM filethat will receive the images being - * exported. + * Pointer to the ::WIMStruct for a WIM file that will receive the images + * being exported. * @param dest_name * The name to give the exported image in the new WIM file. If left @c NULL, * the name from @a src_wim is used. This parameter must be left @c NULL @@ -541,8 +541,18 @@ extern int wimlib_delete_image(WIMStruct *wim, int image); * ::WIMLIB_EXPORT_FLAG_BOOT is valid only if one of the exported images is * currently marked as bootable in @a src_wim; if that is the case, then * that image is marked as bootable in the destination WIM. + * @param additional_swms + * Array of pointers to the ::WIMStruct for each additional part in the + * split WIM. Ignored if @a num_additional_swms is 0. The pointers do not + * need to be in any particular order, but they must include all parts of + * the split WIM other than the first part, which must be provided in the + * @a wim parameter. + * @param num_additional_swms + * Number of additional WIM parts provided in the @a additional_swms array. + * This number should be one less than the total number of parts in the + * split WIM. Set to 0 if the WIM is a standalone WIM. * - * @return 0 on success; nonzero on error. On error, @dest_wim is left in an + * @return 0 on success; nonzero on error. On error, @a dest_wim is left in an * indeterminate state and should be freed with wimlib_free(). * @retval ::WIMLIB_ERR_DECOMPRESSION * Could not decompress the metadata resource for @a src_image @@ -570,13 +580,20 @@ extern int wimlib_delete_image(WIMStruct *wim, int image); * Failed to allocate needed memory. * @retval ::WIMLIB_ERR_READ * Could not read the metadata resource for @a src_image from @a src_wim. + * @retval ::WIMLIB_ERR_SPLIT_INVALID + * The source WIM is a split WIM, but the parts specified do not form a + * complete split WIM because they do not include all the parts of the + * original WIM, there are duplicate parts, or not all the parts have the + * same GUID and compression type. * @retval ::WIMLIB_ERR_SPLIT_UNSUPPORTED - * @a src_wim or @a dest_wim is part of a split WIM. Exporting an image - * from or to a split WIM is unsupported. + * @a dest_wim is part of a split WIM. Exporting an image to a split WIM + * is unsupported. */ extern int wimlib_export_image(WIMStruct *src_wim, int src_image, WIMStruct *dest_wim, const char *dest_name, - const char *dest_description, int flags); + const char *dest_description, int flags, + WIMStruct **additional_swms, + unsigned num_additional_swms); /** * Extracts an image, or all images, from a standalone or split WIM file. @@ -935,10 +952,9 @@ extern int wimlib_mount(WIMStruct *wim, int image, const char *dir, int flags, * If ::WIMLIB_OPEN_FLAG_SHOW_PROGRESS is given, progress information will * be shown if the integrity of the WIM is checked. * If ::WIMLIB_OPEN_FLAG_SPLIT_OK is given, no error will be issued if the - * WIM is part of a split WIM. However, wimlib does not fully support - * split WIMs, so not all functions will work correctly after opening a - * split WIM. For example, you cannot use wimlib_mount() or - * wimlib_extract_image() on a split WIM. + * WIM is part of a split WIM; otherwise WIMLIB_ERR_SPLIT_UNSUPPORTED is + * returned. (This flag may be removed in the future, in which case no + * error will be issued when opening a split WIM.) * * @param wim_ret * On success, a pointer to an opaque ::WIMStruct for the opened WIM file @@ -1003,10 +1019,6 @@ extern int wimlib_open_wim(const char *wim_file, int flags, * file after it is has been completely written. The temporary file currently * is made in the same directory as the original WIM file. * - * Note that it is not possible for this function to delete the original file - * before having written the new file because it is very likely that file - * resources in the new WIM file need to be retrieved from the old WIM file. - * * After this function returns, @a wim must be freed using wimlib_free(). Any * further actions on @a wim before doing this are undefined. * @@ -1204,8 +1216,8 @@ extern void wimlib_print_wim_information(const WIMStruct *wim); * A string specifying which image. If it begins with a number, it is * taken to be a string specifying the image number. Otherwise, it is * taken to be the name of an image, as specified in the XML data for the - * WIM file. It also may be the keyword "all", which will resolve to - * ::WIM_ALL_IMAGES. + * WIM file. It also may be the keyword "all" or the string "*", both of + * which will resolve to ::WIM_ALL_IMAGES. * * @return * If the string resolved to a single existing image, the number of that @@ -1261,18 +1273,18 @@ extern int wimlib_set_image_descripton(WIMStruct *wim, int image, const char *description); /** - * Changes what is written in the element in the WIM XML data (something - * like "Core" or "Ultimate") + * Changes what is written in the \ element in the WIM XML data + * (something like "Core" or "Ultimate") * * @param wim * Pointer to the ::WIMStruct for a WIM file. It may be either a * standalone WIM or part of a split WIM; however, you should set the same - * element on all parts of a split WIM. + * \ element on all parts of a split WIM. * @param image * The number of the image for which to change the description. * @param flags - * The new element to give the image. It may be @c NULL, which - * indicates that the image is to be given no element. + * The new \ element to give the image. It may be @c NULL, which + * indicates that the image is to be given no \ element. * * @return 0 on success; nonzero on error. * @retval ::WIMLIB_ERR_INVALID_IMAGE @@ -1282,8 +1294,7 @@ extern int wimlib_set_image_descripton(WIMStruct *wim, int image, * @retval ::WIMLIB_ERR_NOMEM * Failed to allocate the memory needed to duplicate the @a flags string. */ -extern int wimlib_set_image_flags(WIMStruct *w, int image, - const char *flags); +extern int wimlib_set_image_flags(WIMStruct *wim, int image, const char *flags); /** * Changes the name of an image in the WIM. @@ -1373,10 +1384,10 @@ extern int wimlib_set_print_errors(bool show_messages); * part. The other parts will have the same name with 2, 3, 4, ..., etc. * appended. * @param part_size - * The maximum size per part. It is not guaranteed that this will really - * be the maximum size per part, because some file resources in the WIM may - * be larger than this size, and the WIM file format provides no way to - * split up file resources among multiple WIMs. + * The maximum size per part, in bytes. It is not guaranteed that this + * will really be the maximum size per part, because some file resources in + * 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 flags * Bitwise OR of ::WIMLIB_OPEN_FLAG_CHECK_INTEGRITY and/or * ::WIMLIB_OPEN_FLAG_SHOW_PROGRESS. @@ -1487,7 +1498,7 @@ extern int wimlib_unmount(const char *dir, int flags); * @retval ::WIMLIB_ERR_INVALID_RESOURCE_SIZE * The metadata resource for @a image in @a wim is invalid. * @retval ::WIMLIB_ERR_INVALID_SECURITY_DATA - * The security data for @a image in @wim is invalid. + * The security data for @a image in @a wim is invalid. * @retval ::WIMLIB_ERR_NOMEM * Failed to allocate needed memory. * @retval ::WIMLIB_ERR_OPEN