X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=include%2Fwimlib%2Fcapture.h;h=ae2640a78ce6b9cded698c11773469f1e509fce0;hb=2f79af1ffd1f92db74c69117f0c2401826126b92;hp=58e0eac3a80439675cabad9d5cd209c903c9bada;hpb=b5b9681794d1f5f13350e3567f6f6e74f5c779cf;p=wimlib diff --git a/include/wimlib/capture.h b/include/wimlib/capture.h index 58e0eac3..ae2640a7 100644 --- a/include/wimlib/capture.h +++ b/include/wimlib/capture.h @@ -4,6 +4,7 @@ #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" @@ -20,7 +21,7 @@ struct capture_config { /* Common parameters to implementations of building an in-memory dentry tree * from an on-disk directory structure. */ -struct add_image_params { +struct capture_params { /* Pointer to the lookup table of the WIM. */ struct wim_lookup_table *lookup_table; @@ -52,16 +53,20 @@ struct add_image_params { /* 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 @@ -78,19 +83,19 @@ extern bool match_pattern_list(const tchar *path, size_t path_nchars, 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, size_t full_path_nchars, + 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); + struct capture_params *params); #endif #ifdef __WIN32__ @@ -98,17 +103,24 @@ build_dentry_tree_ntfs(struct wim_dentry **root_p, 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); +} + #endif /* _WIMLIB_CAPTURE_H */