-/* Returns any of the aliases of an inode that are being extracted. */
-#define inode_first_extraction_dentry(inode) \
- list_first_entry(&(inode)->i_extraction_aliases, \
- struct wim_dentry, d_extraction_alias_node)
+static inline int
+report_apply_error(struct apply_ctx *ctx, int error_code, const tchar *path)
+{
+ return report_error(ctx->progfunc, ctx->progctx, error_code, path);
+}
+
+bool
+detect_sparse_region(const void *data, size_t size, size_t *len_ret);
+
+static inline bool
+maybe_detect_sparse_region(const void *data, size_t size, size_t *len_ret,
+ bool enabled)
+{
+ if (!enabled) {
+ /* Force non-sparse without checking */
+ *len_ret = size;
+ return false;
+ }
+ return detect_sparse_region(data, size, len_ret);
+}
+
+#define inode_first_extraction_dentry(inode) \
+ ((inode)->i_first_extraction_alias)
+
+#define inode_for_each_extraction_alias(dentry, inode) \
+ for (dentry = inode_first_extraction_dentry(inode); \
+ dentry != NULL; \
+ dentry = dentry->d_next_extraction_alias)