X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fupdate_image.c;h=65389e156cc227464c82d6df0cc0b7ad3e08cab7;hb=0a97ffa6074b6b69b9982d83b398145c5ac860ab;hp=fc149f0a415cd6e5771783634abc91dab89b9200;hpb=4c73e29d8d74a4e969782d2d40e209337414034c;p=wimlib diff --git a/src/update_image.c b/src/update_image.c index fc149f0a..65389e15 100644 --- a/src/update_image.c +++ b/src/update_image.c @@ -1,5 +1,5 @@ /* - * update_image.c - Update a WIM image. + * update_image.c - see description below */ /* @@ -19,10 +19,37 @@ * along with this file; if not, see http://www.gnu.org/licenses/. */ +/* + * This file contains the implementation of wimlib_update_image(), which is one + * of the two ways by which library users can make changes to a WIM image. (The + * other way is by mounting an image read-write.) wimlib_update_image() is also + * used in the implementation of wimlib_add_image(), since "create a WIM image + * from this directory tree" is equivalent to "create an empty WIM image, then + * update it to add this directory tree as the root". + * + * wimlib_update_image() processes a list of commands passed to it. Currently, + * the following types of commands are supported: + * + * - Add a directory tree from an external source (filesystem or NTFS volume). + * This can be used to add new files or to replace existing files. + * - Delete a file or directory tree. + * - Rename a file or directory tree. + * + * Not supported are creating links to existing files or changing metadata of + * existing files. + * + * wimlib_update_image() is atomic. If it cannot complete successfully, then + * all changes are rolled back and the WIMStruct is left unchanged. Rollback is + * implemented by breaking the commands into primitive operations such as "link + * this dentry tree here" which can be undone by doing the opposite operations + * in reverse order. + */ + #ifdef HAVE_CONFIG_H # include "config.h" #endif +#include "wimlib/assert.h" #include "wimlib/capture.h" #include "wimlib/dentry.h" #include "wimlib/encoding.h" @@ -765,7 +792,7 @@ execute_add_command(struct update_command_journal *j, tchar *fs_source_path; tchar *wim_target_path; const tchar *config_file; - struct add_image_params params; + struct capture_params params; struct capture_config config; capture_tree_t capture_tree = platform_default_capture_tree; #ifdef WITH_NTFS_3G