#include "wimlib.h"
#include "wimlib/inode_table.h"
#include "wimlib/list.h"
+#include "wimlib/progress.h"
#include "wimlib/security.h"
#include "wimlib/textfile.h"
#include "wimlib/util.h"
-struct wim_lookup_table;
+struct blob_table;
struct wim_dentry;
struct wim_inode;
/* Common parameters to implementations of building an in-memory dentry tree
* from an on-disk directory structure. */
-struct add_image_params {
- /* Pointer to the lookup table of the WIM. */
- struct wim_lookup_table *lookup_table;
+struct capture_params {
+ /* Pointer to the blob table of the WIM. */
+ struct blob_table *blob_table;
- /* List of streams that have been added so far, but without their SHA1
+ /* List of blobs that have been added so far, but without their SHA-1
* message digests being calculated (as a shortcut). */
- struct list_head *unhashed_streams;
+ struct list_head *unhashed_blobs;
/* Hash table of inodes that have been captured for this tree so far. */
struct wim_inode_table *inode_table;
/* Flags that affect the capture operation (WIMLIB_ADD_FLAG_*) */
int add_flags;
- /* Extra argument; set to point to a pointer to the ntfs_volume for
- * libntfs-3g capture. */
- void *extra_arg;
-
/* If non-NULL, the user-supplied progress function. */
wimlib_progress_func_t progfunc;
void *progctx;
/* Progress data. */
union wimlib_progress_info progress;
+ /* The capture implementation must set this to the number of characters
+ * that try_exclude() will strip from the path before testing exclusion
+ * patterns from the capture configuration file. */
+ size_t capture_root_nchars;
+
/* Can be used by the capture implementation. */
u64 capture_root_ino;
u64 capture_root_dev;
- size_t capture_root_nchars;
};
/* capture_common.c */
extern int
-do_capture_progress(struct add_image_params *params, int status,
+do_capture_progress(struct capture_params *params, int status,
const struct wim_inode *inode);
extern int
destroy_capture_config(struct capture_config *config);
extern bool
-match_pattern_list(const tchar *path, size_t path_nchars,
- const struct string_set *list);
+match_pattern_list(const tchar *path, const struct string_set *list);
-extern bool
-should_exclude_path(const tchar *path, size_t path_nchars,
- const struct capture_config *config);
+extern int
+try_exclude(const tchar *full_path, const struct capture_params *params);
typedef int (*capture_tree_t)(struct wim_dentry **, const tchar *,
- struct add_image_params *);
+ struct capture_params *);
#ifdef WITH_NTFS_3G
/* ntfs-3g_capture.c */
extern int
-build_dentry_tree_ntfs(struct wim_dentry **root_p,
- const tchar *device,
- struct add_image_params *params);
+ntfs_3g_build_dentry_tree(struct wim_dentry **root_ret,
+ const tchar *device,
+ struct capture_params *params);
#endif
#ifdef __WIN32__
extern int
win32_build_dentry_tree(struct wim_dentry **root_ret,
const tchar *root_disk_path,
- struct add_image_params *params);
+ struct capture_params *params);
#define platform_default_capture_tree win32_build_dentry_tree
#else
/* unix_capture.c */
extern int
unix_build_dentry_tree(struct wim_dentry **root_ret,
const tchar *root_disk_path,
- struct add_image_params *params);
+ struct capture_params *params);
#define platform_default_capture_tree unix_build_dentry_tree
#endif
#define WIMLIB_ADD_FLAG_ROOT 0x80000000
+static inline int
+report_capture_error(struct capture_params *params, int error_code,
+ const tchar *path)
+{
+ return report_error(params->progfunc, params->progctx, error_code, path);
+}
+
+extern bool
+should_ignore_filename(const tchar *name, int name_nchars);
+
#endif /* _WIMLIB_CAPTURE_H */