X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fwimlib.h;h=4af3d7610339103793f06ce7752fde30f73c6456;hp=294ea19734fcfc6123574ed2cc1853e13a806194;hb=86e0ea554928890970618ff353bec09bf33708a8;hpb=4016a9dba036f4d2eca0253c99370e6647a9ccb6 diff --git a/src/wimlib.h b/src/wimlib.h index 294ea197..4af3d761 100644 --- a/src/wimlib.h +++ b/src/wimlib.h @@ -9,7 +9,7 @@ */ /* - * Copyright (C) 2012 Eric Biggers + * Copyright (C) 2012, 2013 Eric Biggers * * This file is part of wimlib, a library for working with WIM files. * @@ -31,7 +31,7 @@ * * \section intro Introduction * - * This is the documentation for the library interface of wimlib 1.2.5. If you + * This is the documentation for the library interface of wimlib 1.2.6. If you * have installed wimlib and want to know how to use the @c imagex program, * please see the man pages instead. * @@ -228,7 +228,7 @@ #define WIMLIB_MINOR_VERSION 2 /** Patch version of the library (for example, the 5 in 1.2.5). */ -#define WIMLIB_PATCH_VERSION 5 +#define WIMLIB_PATCH_VERSION 6 /** * Opaque structure that represents a WIM file. This is an in-memory structure @@ -414,6 +414,11 @@ union wimlib_progress_info { /** True iff @a cur_path is being excluded from the image * capture due to the capture configuration file. */ bool excluded; + + /** Target path in the WIM. Only valid on messages + * ::WIMLIB_PROGRESS_MSG_SCAN_BEGIN and + * ::WIMLIB_PROGRESS_MSG_SCAN_END. */ + const char *wim_target_path; } scan; /** Valid on messages ::WIMLIB_PROGRESS_MSG_EXTRACT_IMAGE_BEGIN, @@ -552,6 +557,22 @@ union wimlib_progress_info { typedef int (*wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, const union wimlib_progress_info *info); +/** An array of these structures is passed to wimlib_add_image_multisource() to + * specify the sources from which to create a WIM image. */ +struct wimlib_capture_source { + /** Absolute or relative path to a file or directory on the external + * filesystem to be included in the WIM image. */ + char *fs_source_path; + + /** Destination path in the WIM image. Leading and trailing slashes are + * ignored. The empty string or @c NULL means the root directory of the + * WIM image. */ + char *wim_target_path; + + /** Reserved; set to 0. */ + long reserved; +}; + /***************************** * WIMLIB_ADD_IMAGE_FLAG_* * @@ -711,6 +732,9 @@ typedef int (*wimlib_progress_func_t)(enum wimlib_progress_msg msg_type, * See the documentation for each wimlib function to see specifically what error * codes can be returned by a given function, and what they mean. */ +/* Note: these are currently in alphabetic order, but new error codes should be + * added at the end to maintain a compatible ABI, except when it's being broken + * anyway. */ enum wimlib_error_code { WIMLIB_ERR_SUCCESS = 0, WIMLIB_ERR_ALREADY_LOCKED, @@ -806,8 +830,8 @@ enum wimlib_error_code { * NULL, a default string is used. Please see the manual page for * imagex capture for more information. * @param config_len - * Length of the string @a config in bytes. Ignored if @a config is @c - * NULL. + * Length of the string @a config in bytes, not including an optional + * null-terminator. Ignored if @a config is @c NULL. * @param add_image_flags * Bitwise OR of flags prefixed with WIMLIB_ADD_IMAGE_FLAG. * @param progress_func @@ -863,6 +887,21 @@ extern int wimlib_add_image(WIMStruct *wim, const char *source, size_t config_len, int add_image_flags, wimlib_progress_func_t progress_func); +/** This function is equivalent to wimlib_add_image() except it allows for + * multiple sources to be combined into a single WIM image. This is done by + * specifying the @a sources and @a num_sources parameters instead of the @a + * source parameter. The rest of the parameters are the same as + * wimlib_add_image(). See the documentation for imagex capture for full + * details on how this mode works. */ +extern int wimlib_add_image_multisource(WIMStruct *w, + struct wimlib_capture_source *sources, + size_t num_sources, + const char *name, + const char *config_str, + size_t config_len, + int add_image_flags, + wimlib_progress_func_t progress_func); + /** * Creates a ::WIMStruct for a new WIM file. * @@ -1411,7 +1450,7 @@ extern bool wimlib_image_name_in_use(const WIMStruct *wim, const char *name); * Note: wimlib_export_image() can provide similar functionality to * wimlib_join(), since it is possible to export all images from a split WIM. */ -extern int wimlib_join(const char **swms, unsigned num_swms, +extern int wimlib_join(const char * const *swms, unsigned num_swms, const char *output_path, int swm_open_flags, int wim_write_flags, wimlib_progress_func_t progress_func);