]> wimlib.net Git - wimlib/blobdiff - include/wimlib/apply.h
Update security descriptor setting
[wimlib] / include / wimlib / apply.h
index 8a556263dab9f936e6cf4981da3c9b0381d816c7..ef623a6f2652a8fe0cbc5b9f3577dcf9e36892f2 100644 (file)
@@ -13,7 +13,7 @@ struct apply_ctx;
 /* Path to extracted file, or "cookie" identifying the file (e.g. inode number).
  * */
 typedef union {
-       const char *path;
+       const tchar *path;
        u64 cookie;
 } file_spec_t;
 
@@ -89,7 +89,8 @@ struct apply_operations {
        /* OPTIONAL:  Set file attributes.  Calling code calls this if non-NULL.
         */
        int (*set_file_attributes)
-               (const tchar *path, u32 attributes, struct apply_ctx *ctx);
+               (const tchar *path, u32 attributes, struct apply_ctx *ctx,
+                unsigned pass);
 
        /* OPTIONAL:  Set reparse data.  In start_extract(), set
         * ctx->supported_features.reparse_data if supported.  */
@@ -167,6 +168,10 @@ struct apply_operations {
         * then be passed to callbacks taking a 'file_spec_t', rather than the
         * path.  */
        unsigned uses_cookies : 1;
+
+       /* OPTIONAL:  Set to 1 if set_file_attributes() needs to be called a
+        * second time towards the end of the extraction.  */
+       unsigned requires_final_set_attributes_pass : 1;
 };
 
 struct wim_features {
@@ -175,6 +180,7 @@ struct wim_features {
        unsigned long system_files;
        unsigned long compressed_files;
        unsigned long encrypted_files;
+       unsigned long encrypted_directories;
        unsigned long not_context_indexed_files;
        unsigned long sparse_files;
        unsigned long named_data_streams;
@@ -198,10 +204,13 @@ struct apply_ctx {
        struct wim_dentry *extract_root;
        const struct apply_operations *ops;
        struct wim_features supported_features;
+       u32 supported_attributes_mask;
        struct list_head stream_list;
        tchar *realtarget;
        size_t realtarget_nchars;
        unsigned long invalid_sequence;
+       unsigned long partial_security_descriptors;
+       unsigned long no_security_descriptors;
        u64 num_streams_remaining;
        bool root_dentry_is_special;
        uint64_t next_progress;