# include "config.h"
#endif
+#include <errno.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include "wimlib/alloca.h"
+#include "wimlib/assert.h"
+#include "wimlib/blob_table.h"
#include "wimlib/capture.h"
#include "wimlib/dentry.h"
#include "wimlib/encoding.h"
#include "wimlib/endianness.h"
#include "wimlib/error.h"
-#include "wimlib/lookup_table.h"
#include "wimlib/metadata.h"
#ifdef WITH_NTFS_3G
# include "wimlib/ntfs_3g.h" /* for do_ntfs_umount() */
#include "wimlib/progress.h"
#include "wimlib/xml.h"
-#include <errno.h>
-#include <sys/stat.h>
-#include <stdlib.h>
-
-#ifdef HAVE_ALLOCA_H
-# include <alloca.h>
-#endif
-
/* Saved specification of a "primitive" update operation that was performed. */
struct update_primitive {
enum {
/* Location of the WIM image's root pointer. */
struct wim_dentry **root_p;
- /* Pointer to the lookup table of the WIM (may needed for rollback) */
- struct wim_lookup_table *lookup_table;
+ /* Pointer to the blob table of the WIM (may needed for rollback) */
+ struct blob_table *blob_table;
/* List of dentries that are currently unlinked from the WIM image.
* These must be freed when no longer needed for commit or rollback. */
* commands. */
static struct update_command_journal *
new_update_command_journal(size_t num_cmds, struct wim_dentry **root_p,
- struct wim_lookup_table *lookup_table)
+ struct blob_table *blob_table)
{
struct update_command_journal *j;
j->num_cmds = num_cmds;
j->cur_cmd = 0;
j->root_p = root_p;
- j->lookup_table = lookup_table;
+ j->blob_table = blob_table;
INIT_LIST_HEAD(&j->orphans);
for (size_t i = 0; i < num_cmds; i++)
init_update_primitive_list(&j->cmd_prims[i]);
orphan = list_first_entry(&j->orphans,
struct wim_dentry, tmp_list);
list_del(&orphan->tmp_list);
- free_dentry_tree(orphan, j->lookup_table);
+ free_dentry_tree(orphan, j->blob_table);
}
for (size_t i = 0; i < j->num_cmds; i++)
FREE(*name_ptr);
if (old_name) {
*name_ptr = old_name;
- *name_nbytes_ptr = utf16le_strlen(old_name);
+ *name_nbytes_ptr = utf16le_len_bytes(old_name);
} else {
*name_ptr = NULL;
*name_nbytes_ptr = 0;
return ret;
}
}
- free_dentry(branch);
+ free_dentry_tree(branch, j->blob_table);
return 0;
} else if (add_flags & WIMLIB_ADD_FLAG_NO_REPLACE) {
/* Can't replace nondirectory file */
out_free_target:
tstr_put_utf16le(target);
out_free_branch:
- free_dentry_tree(branch, j->lookup_table);
+ free_dentry_tree(branch, j->blob_table);
out:
return ret;
}
const struct wimlib_update_command *add_cmd,
struct wim_inode_table *inode_table,
struct wim_sd_set *sd_set,
- struct list_head *unhashed_streams)
+ struct list_head *unhashed_blobs)
{
int ret;
int add_flags;
if (ret)
goto out;
- params.lookup_table = wim->lookup_table;
- params.unhashed_streams = unhashed_streams;
+ params.blob_table = wim->blob_table;
+ params.unhashed_blobs = unhashed_blobs;
params.inode_table = inode_table;
params.sd_set = sd_set;
params.config = &config;
ret = call_progress(params.progfunc, WIMLIB_PROGRESS_MSG_SCAN_END,
¶ms.progress, params.progctx);
if (ret) {
- free_dentry_tree(branch, wim->lookup_table);
+ free_dentry_tree(branch, wim->blob_table);
goto out_cleanup_after_capture;
}
{
ERROR("\"%"TS"\" is not a directory!", fs_source_path);
ret = WIMLIB_ERR_NOTDIR;
- free_dentry_tree(branch, wim->lookup_table);
+ free_dentry_tree(branch, wim->blob_table);
goto out_cleanup_after_capture;
}
return -ENOMEM;
if (dst) {
unlink_dentry(dst);
- free_dentry_tree(dst, wim->lookup_table);
+ free_dentry_tree(dst, wim->blob_table);
}
unlink_dentry(src);
dentry_add_child(parent_of_dst, src);
{
struct wim_inode_table *inode_table;
struct wim_sd_set *sd_set;
- struct list_head unhashed_streams;
+ struct list_head unhashed_blobs;
struct update_command_journal *j;
union wimlib_progress_info info;
int ret;
if (ret)
goto out_destroy_inode_table;
- INIT_LIST_HEAD(&unhashed_streams);
+ INIT_LIST_HEAD(&unhashed_blobs);
} else {
inode_table = NULL;
sd_set = NULL;
*/
j = new_update_command_journal(num_cmds,
&wim_get_current_image_metadata(wim)->root_dentry,
- wim->lookup_table);
+ wim->blob_table);
if (!j) {
ret = WIMLIB_ERR_NOMEM;
goto out_destroy_sd_set;
switch (cmds[i].op) {
case WIMLIB_UPDATE_OP_ADD:
ret = execute_add_command(j, wim, &cmds[i], inode_table,
- sd_set, &unhashed_streams);
+ sd_set, &unhashed_blobs);
break;
case WIMLIB_UPDATE_OP_DELETE:
ret = execute_delete_command(j, wim, &cmds[i]);
imd = wim_get_current_image_metadata(wim);
- list_splice_tail(&unhashed_streams, &imd->unhashed_streams);
+ list_splice_tail(&unhashed_blobs, &imd->unhashed_blobs);
inode_table_prepare_inode_list(inode_table, &imd->inode_list);
}
goto out_destroy_sd_set;