#define WIM_HDR_FLAG_COMPRESS_LZX 0x00040000
-#ifdef ENABLE_SECURITY_DATA
/* Structure for security data. Each image in the WIM file has its own security
* data. */
struct wim_security_data {
* exporting images between WIMs) */
u32 refcnt;
} WIMSecurityData;
-#endif
/* Metadata resource for an image. */
struct image_metadata {
/* Pointer to the root dentry for the image. */
struct dentry *root_dentry;
-#ifdef ENABLE_SECURITY_DATA
/* Pointer to the security data for the image. */
struct wim_security_data *security_data;
-#endif
+
/* A pointer to the lookup table entry for this image's metadata
* resource. */
- struct lookup_table_entry *lookup_table_entry;
+ struct lookup_table_entry *metadata_lte;
/* True if the filesystem of the image has been modified. If this is
* the case, the memory for the filesystem is not freed when switching
/* The header of the WIM file. */
struct wim_header hdr;
- /* The type of links to create when extracting files (hard, symbolic, or
- * none.) */
- int link_type;
+ /* Temporary flags to use when extracting a WIM image or adding a WIM
+ * image. */
+ union {
+ int extract_flags;
+ int add_flags;
+ };
/* The currently selected image, indexed starting at 1. If not 0,
* subtract 1 from this to get the index of the current image in the
* image_metadata array. */
- int current_image;
-
- /* True if files names are to be printed when doing extraction.
- * May be used for other things later. */
- bool verbose;
+ int current_image;
union {
/* Set to true when extracting multiple images */
return &w->image_metadata[w->current_image - 1].root_dentry;
}
-#ifdef ENABLE_SECURITY_DATA
static inline struct wim_security_data *wim_security_data(WIMStruct *w)
{
return w->image_metadata[w->current_image - 1].security_data;
}
-#endif
static inline struct lookup_table_entry*
wim_metadata_lookup_table_entry(WIMStruct *w)
{
- return w->image_metadata[w->current_image - 1].lookup_table_entry;
+ return w->image_metadata[w->current_image - 1].metadata_lte;
}
/* Nonzero if a struct resource_entry indicates a compressed resource. */
return &w->image_metadata[w->current_image - 1];
}
-static inline bool wim_current_image_is_modified(const WIMStruct *w)
-{
- return w->image_metadata[w->current_image - 1].modified;
-}
-
/* Prints a hash code field. */
static inline void print_hash(const u8 hash[])
{
const struct resource_entry *entry,
int fd);
-extern int read_metadata_resource(FILE *fp,
- const struct resource_entry *metadata,
- int wim_ctype,
+extern int read_metadata_resource(FILE *fp, int wim_ctype,
struct image_metadata *image_metadata);
extern int resource_compression_type(int wim_ctype, int reshdr_flags);
static inline int read_full_resource(FILE *fp, u64 resource_size,
- u64 resource_original_size,
- u64 resource_offset,
- int resource_ctype, void *contents_ret)
+ u64 resource_original_size,
+ u64 resource_offset,
+ int resource_ctype, void *contents_ret)
{
return read_resource(fp, resource_size, resource_original_size,
resource_offset, resource_ctype,
u64 *resource_size_ret);
extern int write_metadata_resource(WIMStruct *w);
-#ifdef ENABLE_SECURITY_DATA
+/* security.c */
int read_security_data(const u8 metadata_resource[],
u64 metadata_resource_len, struct wim_security_data **sd_p);
void print_security_data(const struct wim_security_data *sd);
u8 *write_security_data(const struct wim_security_data *sd, u8 *p);
void free_security_data(struct wim_security_data *sd);
-#endif
/* wim.c */
extern WIMStruct *new_wim_struct();