- do {
- DEBUG("Building dentry tree for source %zu of %zu "
- "(\"%s\" => \"%s\")", i + 1, num_sources,
- sources[i].fs_source_path,
- sources[i].wim_target_path);
- union wimlib_progress_info progress;
- if (progress_func) {
- memset(&progress, 0, sizeof(progress));
- progress.scan.source = sources[i].fs_source_path;
- progress.scan.wim_target_path = sources[i].wim_target_path;
- progress_func(WIMLIB_PROGRESS_MSG_SCAN_BEGIN, &progress);
- }
- ret = init_capture_config(config_str, config_len,
- sources[i].fs_source_path,
- &config);
+ union wimlib_progress_info progress;
+
+ DEBUG("Building dentry tree for source %zu of %zu "
+ "(\"%s\" => \"%s\")", i + 1, num_sources,
+ sources[i].fs_source_path,
+ sources[i].wim_target_path);
+ if (progress_func) {
+ memset(&progress, 0, sizeof(progress));
+ progress.scan.source = sources[i].fs_source_path;
+ progress.scan.wim_target_path = sources[i].wim_target_path;
+ progress_func(WIMLIB_PROGRESS_MSG_SCAN_BEGIN, &progress);
+ }
+ ret = capture_config_set_prefix(&config,
+ sources[i].fs_source_path);
+ if (ret)
+ goto out_free_dentry_tree;
+ flags = add_image_flags | WIMLIB_ADD_IMAGE_FLAG_SOURCE;
+ if (!*sources[i].wim_target_path)
+ flags |= WIMLIB_ADD_IMAGE_FLAG_ROOT;
+ ret = (*capture_tree)(&branch, sources[i].fs_source_path,
+ w->lookup_table, sd,
+ &config,
+ flags,
+ progress_func, extra_arg);
+ if (ret) {
+ ERROR("Failed to build dentry tree for `%s'",
+ sources[i].fs_source_path);
+ goto out_free_dentry_tree;
+ }
+ if (branch) {
+ /* Use the target name, not the source name, for
+ * the root of each branch from a capture
+ * source. (This will also set the root dentry
+ * of the entire image to be unnamed.) */
+ ret = set_dentry_name(branch,
+ path_basename(sources[i].wim_target_path));