struct lookup_table_entry *lte;
u8 hash[SHA1_HASH_SIZE];
+ /* Empty files do not have to have a lookup table entry. */
+ if (root_stbuf.st_size == 0)
+ goto out;
+
/* For each regular file, we must check to see if the file is in
* the lookup table already; if it is, we increment its refcnt;
* otherwise, we create a new lookup table entry and insert it.
}
root->lte = lte;
}
+out:
*root_ret = root;
return ret;
}
"\\$ntfs.log\n"
"\\hiberfil.sys\n"
"\\pagefile.sys\n"
-"\"\\System Volume Information\"\n"
+"\\System Volume Information\n"
"\\RECYCLER\n"
"\\Windows\\CSC\n"
"\n"
int do_add_image(WIMStruct *w, const char *dir, const char *name,
- const char *description, const char *flags_element,
const char *config_str, size_t config_len,
int flags,
int (*capture_tree)(struct dentry **, const char *,
struct image_metadata *imd;
struct wim_security_data *sd;
struct capture_config config;
+ struct link_group_table *lgt;
int ret;
DEBUG("Adding dentry tree from dir `%s'.", dir);
if (ret != 0)
goto out_free_dentry_tree;
+ lgt = w->image_metadata[w->hdr.image_count - 1].lgt;
DEBUG("Inserting dentries into hard link group table");
- ret = for_dentry_in_tree(root_dentry, link_group_table_insert,
- w->image_metadata[w->hdr.image_count - 1].lgt);
+ ret = for_dentry_in_tree(root_dentry, link_group_table_insert, lgt);
+
+ if (ret != 0)
+ goto out_destroy_imd;
+
+ DEBUG("Cleanup up the hard link groups");
+ ret = fix_link_groups(lgt);
if (ret != 0)
goto out_destroy_imd;
- DEBUG("Assigning hard link groups");
- assign_link_groups(w->image_metadata[w->hdr.image_count - 1].lgt);
+
+ DEBUG("Assigning hard link group IDs");
+ assign_link_group_ids(w->image_metadata[w->hdr.image_count - 1].lgt);
if (flags & WIMLIB_ADD_IMAGE_FLAG_BOOT)
wimlib_set_boot_idx(w, w->hdr.image_count);
- ret = xml_add_image(w, root_dentry, name, description, flags_element);
+ ret = xml_add_image(w, root_dentry, name);
if (ret != 0)
goto out_destroy_imd;
* Adds an image to a WIM file from a directory tree on disk.
*/
WIMLIBAPI int wimlib_add_image(WIMStruct *w, const char *dir,
- const char *name, const char *description,
- const char *flags_element,
- const char *config_str,
+ const char *name, const char *config_str,
size_t config_len, int flags)
{
- return do_add_image(w, dir, name, description, flags_element,
- config_str, config_len, flags,
+ return do_add_image(w, dir, name, config_str, config_len, flags,
build_dentry_tree, NULL);
}