struct wim_inode *inode = NULL;
struct stat stbuf;
- if (exclude_path(path, path_len, params->config, true)) {
+ if (exclude_path(path + params->capture_root_nchars,
+ path_len - params->capture_root_nchars,
+ params->config))
+ {
ret = 0;
goto out_progress;
}
goto out;
}
- ret = inode_table_new_dentry(¶ms->inode_table,
+ ret = inode_table_new_dentry(params->inode_table,
path_basename_with_len(path, path_len),
stbuf.st_ino, stbuf.st_dev,
S_ISDIR(stbuf.st_mode), &root);
return WIMLIB_ERR_STAT;
}
- if ((params->add_flags & WIMLIB_ADD_FLAG_ROOT) &&
- !S_ISDIR(root_stbuf.st_mode))
- {
- ERROR("Root of capture \"%s\" is not a directory",
- root_disk_path);
- return WIMLIB_ERR_NOTDIR;
- }
params->capture_root_ino = root_stbuf.st_ino;
params->capture_root_dev = root_stbuf.st_dev;
}
return WIMLIB_ERR_NOMEM;
memcpy(path_buf, root_disk_path, path_len + 1);
+ params->capture_root_nchars = path_len;
+
ret = unix_build_dentry_tree_recursive(root_ret, path_buf,
path_len, params);
FREE(path_buf);