* unless an identical stream is already in the lookup table.
* These lookup table entries that are added point to the path of
* the file on disk.
* unless an identical stream is already in the lookup table.
* These lookup table entries that are added point to the path of
* the file on disk.
!S_ISDIR(root_stbuf.st_mode)) {
ERROR("`%s' is not a directory", root_disk_path);
return WIMLIB_ERR_NOTDIR;
!S_ISDIR(root_stbuf.st_mode)) {
ERROR("`%s' is not a directory", root_disk_path);
return WIMLIB_ERR_NOTDIR;
deref_name_len = readlink(root_disk_path, deref_name_buf,
sizeof(deref_name_buf) - 1);
if (deref_name_len >= 0) {
deref_name_len = readlink(root_disk_path, deref_name_buf,
sizeof(deref_name_buf) - 1);
if (deref_name_len >= 0) {
* This function takes in a dentry that was previously located only in image(s)
* in @src_wim, but now is being added to @dest_wim. For each stream associated
* with the dentry, if there is already a lookup table entry for that stream in
* This function takes in a dentry that was previously located only in image(s)
* in @src_wim, but now is being added to @dest_wim. For each stream associated
* with the dentry, if there is already a lookup table entry for that stream in
/*
* Adds an image (given by its dentry tree) to the image metadata array of a WIM
* file, adds an entry to the lookup table for the image metadata, updates the
/*
* Adds an image (given by its dentry tree) to the image metadata array of a WIM
* file, adds an entry to the lookup table for the image metadata, updates the
/* Change the current image to the new one. There should not be any
* ways for this to fail, since the image is valid and the dentry tree
* is already in memory. */
/* Change the current image to the new one. There should not be any
* ways for this to fail, since the image is valid and the dentry tree
* is already in memory. */
/*
* Copies an image, or all the images, from a WIM file, into another WIM file.
*/
/*
* Copies an image, or all the images, from a WIM file, into another WIM file.
*/
-WIMLIBAPI int wimlib_export_image(WIMStruct *src_wim,
- int src_image,
- WIMStruct *dest_wim,
- const char *dest_name,
- const char *dest_description,
+WIMLIBAPI int wimlib_export_image(WIMStruct *src_wim,
+ int src_image,
+ WIMStruct *dest_wim,
+ const char *dest_name,
+ const char *dest_description,
int flags,
WIMStruct **additional_swms,
unsigned num_additional_swms)
int flags,
WIMStruct **additional_swms,
unsigned num_additional_swms)
- ret = wimlib_export_image(src_wim, i, dest_wim,
+ ret = wimlib_export_image(src_wim, i, dest_wim,
if (ret != 0) {
ERROR("Could not select image %d from the WIM `%s' "
"to export it", src_image, src_wim->filename);
if (ret != 0) {
ERROR("Could not select image %d from the WIM `%s' "
"to export it", src_image, src_wim->filename);
/* Even if the dentry tree is not allocated, we must select it (and
* therefore allocate it) so that we can decrement the reference counts
* in the lookup table. */
/* Even if the dentry tree is not allocated, we must select it (and
* therefore allocate it) so that we can decrement the reference counts
* in the lookup table. */
memcpy(config_str, _config_str, config_len);
next_p = config_str;
config->config_str = config_str;
memcpy(config_str, _config_str, config_len);
next_p = config_str;
config->config_str = config_str;
const char *config_str, size_t config_len,
int flags,
int (*capture_tree)(struct dentry **, const char *,
const char *config_str, size_t config_len,
int flags,
int (*capture_tree)(struct dentry **, const char *,
struct wim_security_data *,
const struct capture_config *,
int, void *),
struct wim_security_data *,
const struct capture_config *,
int, void *),
DEBUG("Allocating security data");
sd = CALLOC(1, sizeof(struct wim_security_data));
DEBUG("Allocating security data");
sd = CALLOC(1, sizeof(struct wim_security_data));
const char *name, const char *config_str,
size_t config_len, int flags)
{
const char *name, const char *config_str,
size_t config_len, int flags)
{