struct stat;
-#ifndef WIM_HASH_SIZE
-#define WIM_HASH_SIZE 20
-#endif
-
#define WIM_MAGIC_LEN 8
#define WIM_GID_LEN 16
#define WIM_UNUSED_LEN 60
/* keep track of how many WIMs reference this security data (used when
* exporting images between WIMs) */
u32 refcnt;
-} WIMSecurityData;
+};
+
+struct link_group_table;
+
/* Metadata resource for an image. */
struct image_metadata {
/* Pointer to the security data for the image. */
struct wim_security_data *security_data;
+ /* Hard link group table */
+ struct link_group_table *lgt;
+
/* A pointer to the lookup table entry for this image's metadata
* resource. */
struct lookup_table_entry *metadata_lte;
* WIM has a image metadata associated with it. */
struct image_metadata *image_metadata;
- /* Name of the output directory for extraction. */
- char *output_dir;
-
/* The header of the WIM file. */
struct wim_header hdr;
* image_metadata array. */
int current_image;
- union {
- /* Set to true when extracting multiple images */
- bool is_multi_image_extraction;
-
- bool write_metadata;
- };
+ bool write_metadata;
} WIMStruct;
return &w->image_metadata[w->current_image - 1];
}
-/* Prints a hash code field. */
-static inline void print_hash(const u8 hash[])
-{
- print_byte_field(hash, WIM_HASH_SIZE);
-}
+/* hardlink.c */
+
+struct link_group_table *new_link_group_table(u64 capacity);
+int link_group_table_insert(struct dentry *dentry,
+ void *__table);
+void free_link_group_table(struct link_group_table *table);
+u64 assign_link_groups(struct link_group_table *table);
+int link_groups_free_duplicate_data(struct link_group_table *table);
/* header.c */
int show_progress);
extern int check_wim_integrity(WIMStruct *w, int show_progress, int *status);
+/* modify.c */
+extern void destroy_image_metadata(struct image_metadata *imd,
+ struct lookup_table *lt);
/* resource.c */
extern const u8 *get_resource_entry(const u8 *p, struct resource_entry *entry);
const WIMStruct *w);
extern void *make_symlink_reparse_data_buf(const char *symlink_target,
size_t *len_ret);
+extern int dentry_set_symlink(struct dentry *dentry,
+ const char *target,
+ struct lookup_table *lookup_table,
+ struct lookup_table_entry **lte_ret);
/* wim.c */
extern WIMStruct *new_wim_struct();