#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 capture_config {
struct string_set exclusion_pats;
struct string_set exclusion_exception_pats;
- tchar *prefix;
- size_t prefix_num_tchars;
void *buf;
};
* libntfs-3g capture. */
void *extra_arg;
- u64 capture_root_ino;
- u64 capture_root_dev;
-
/* If non-NULL, the user-supplied progress function. */
- wimlib_progress_func_t progress_func;
+ 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;
+};
/* capture_common.c */
-extern void
+extern int
do_capture_progress(struct add_image_params *params, int status,
const struct wim_inode *inode);
mangle_pat(tchar *pat, const tchar *path, unsigned long line_no);
extern int
-do_read_capture_config_file(const tchar *config_file, const void *buf,
- size_t bufsize, struct capture_config *config);
+read_capture_config(const tchar *config_file, const void *buf,
+ size_t bufsize, struct capture_config *config);
extern void
destroy_capture_config(struct capture_config *config);
extern bool
-match_pattern(const tchar *path,
- const tchar *path_basename,
- const struct string_set *list);
-
-extern bool
-exclude_path(const tchar *path, size_t path_len,
- const struct capture_config *config,
- bool exclude_prefix);
+match_pattern_list(const tchar *path, size_t path_nchars,
+ const struct string_set *list);
+extern int
+try_exclude(const tchar *full_path, size_t full_path_nchars,
+ const struct add_image_params *params);
typedef int (*capture_tree_t)(struct wim_dentry **, const tchar *,
struct add_image_params *);
#define WIMLIB_ADD_FLAG_ROOT 0x80000000
+static inline int
+report_capture_error(struct add_image_params *params, int error_code,
+ const tchar *path)
+{
+ return report_error(params->progfunc, params->progctx, error_code, path);
+}
+
#endif /* _WIMLIB_CAPTURE_H */