]> wimlib.net Git - wimlib/blobdiff - include/wimlib/apply.h
'extern' in function declarations is redundant
[wimlib] / include / wimlib / apply.h
index f77f9e95d3bb6dd174adc7aae4fdfa5f4c5fd2f4..d801ab0c2c69acc05eadbaa0447db45a1b7c39df 100644 (file)
@@ -31,6 +31,7 @@ struct wim_features {
        unsigned long object_ids;
        unsigned long timestamps;
        unsigned long case_sensitive_filenames;
+       unsigned long xattrs;
 };
 
 struct blob_descriptor;
@@ -72,8 +73,6 @@ struct apply_ctx {
        unsigned long num_blobs_remaining;
        struct list_head blob_list;
        const struct read_blob_callbacks *saved_cbs;
-       struct blob_descriptor *cur_blob;
-       u64 cur_blob_offset;
        struct filedes tmpfile_fd;
        tchar *tmpfile_name;
        unsigned int count_until_file_progress;
@@ -82,7 +81,12 @@ struct apply_ctx {
 /* Maximum number of UNIX file descriptors, NTFS attributes, or Windows file
  * handles that can be opened simultaneously to extract a blob to multiple
  * destinations.  */
+#ifndef __APPLE__
 #define MAX_OPEN_FILES 512
+#else /* !__APPLE__ */
+/* With macOS, reduce to 128 because the default value for ulimit -n is 256 */
+#define MAX_OPEN_FILES 128
+#endif /* __APPLE__ */
 
 static inline int
 extract_progress(struct apply_ctx *ctx, enum wimlib_progress_msg msg)
@@ -90,7 +94,7 @@ extract_progress(struct apply_ctx *ctx, enum wimlib_progress_msg msg)
        return call_progress(ctx->progfunc, msg, &ctx->progress, ctx->progctx);
 }
 
-extern int
+int
 do_file_extract_progress(struct apply_ctx *ctx, enum wimlib_progress_msg msg);
 
 #define COUNT_PER_FILE_PROGRESS 256
@@ -104,10 +108,10 @@ maybe_do_file_progress(struct apply_ctx *ctx, enum wimlib_progress_msg msg)
        return 0;
 }
 
-extern int
+int
 start_file_structure_phase(struct apply_ctx *ctx, u64 end_file_count);
 
-extern int
+int
 start_file_metadata_phase(struct apply_ctx *ctx, u64 end_file_count);
 
 /* Report that a file was created, prior to blob extraction.  */
@@ -124,10 +128,10 @@ report_file_metadata_applied(struct apply_ctx *ctx)
        return maybe_do_file_progress(ctx, WIMLIB_PROGRESS_MSG_EXTRACT_METADATA);
 }
 
-extern int
+int
 end_file_structure_phase(struct apply_ctx *ctx);
 
-extern int
+int
 end_file_metadata_phase(struct apply_ctx *ctx);
 
 static inline int
@@ -136,6 +140,21 @@ 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)
 
@@ -144,7 +163,7 @@ report_apply_error(struct apply_ctx *ctx, int error_code, const tchar *path)
             dentry != NULL;                                            \
             dentry = dentry->d_next_extraction_alias)
 
-extern int
+int
 extract_blob_list(struct apply_ctx *ctx, const struct read_blob_callbacks *cbs);
 
 /*
@@ -249,7 +268,7 @@ struct apply_operations {
        bool single_tree_only;
 };
 
-#ifdef __WIN32__
+#ifdef _WIN32
   extern const struct apply_operations win32_apply_ops;
 #else
   extern const struct apply_operations unix_apply_ops;