X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Flookup_table.h;h=592116bcf55d60ef082f9bd5d48caac7bc218edb;hb=8e59ede238fc3ea52b0066eea06f84617a04521b;hp=2665c39c3de1029c6e7fad98037c0561b04e9d95;hpb=e6227e4978dd41e0726ef1b54713089d343b57de;p=wimlib diff --git a/src/lookup_table.h b/src/lookup_table.h index 2665c39c..592116bc 100644 --- a/src/lookup_table.h +++ b/src/lookup_table.h @@ -185,20 +185,22 @@ struct lookup_table_entry { struct resource_entry output_resource_entry; struct list_head msg_list; + struct list_head inode_list; }; - union { - /* This field is used for the special hardlink or symlink image - * extraction mode. In these mode, all identical files are linked - * together, and @extracted_file will be set to the filename of the - * first extracted file containing this stream. */ - char *extracted_file; - - /* List of lookup table entries that correspond to streams that have - * been extracted to the staging directory when modifying a read-write - * mounted WIM. */ - struct list_head staging_list; - }; + /* List of lookup table entries that correspond to streams that have + * been extracted to the staging directory when modifying a read-write + * mounted WIM. + * + * This field is also used to make other lists of lookup table entries. + * */ + struct list_head staging_list; + + /* This field is used for the special hardlink or symlink image + * extraction mode. In these mode, all identical files are linked + * together, and @extracted_file will be set to the filename of the + * first extracted file containing this stream. */ + char *extracted_file; }; static inline u64 wim_resource_size(const struct lookup_table_entry *lte) @@ -226,7 +228,7 @@ wim_resource_compression_type(const struct lookup_table_entry *lte) { if (!(lte->resource_entry.flags & WIM_RESHDR_FLAG_COMPRESSED) || lte->resource_location != RESOURCE_IN_WIM) - return WIM_COMPRESSION_TYPE_NONE; + return WIMLIB_COMPRESSION_TYPE_NONE; return wimlib_get_compression_type(lte->wim); } @@ -282,20 +284,15 @@ extern int write_lookup_table_entry(struct lookup_table_entry *lte, void *__out) extern void free_lookup_table_entry(struct lookup_table_entry *lte); +extern void inode_resolve_ltes(struct inode *inode, + struct lookup_table *table); + extern int dentry_resolve_ltes(struct dentry *dentry, void *__table); extern int dentry_unresolve_ltes(struct dentry *dentry, void *ignore); int write_lookup_table(struct lookup_table *table, FILE *out, struct resource_entry *out_res_entry); -/* Unlinks and frees an entry from a lookup table. */ -static inline void lookup_table_remove(struct lookup_table *table, - struct lookup_table_entry *lte) -{ - lookup_table_unlink(table, lte); - free_lookup_table_entry(lte); -} - static inline struct resource_entry* wim_metadata_resource_entry(WIMStruct *w) { return &w->image_metadata[ @@ -422,5 +419,7 @@ extern struct lookup_table_entry * inode_unnamed_lte(const struct inode *inode, const struct lookup_table *table); +extern u64 lookup_table_total_stream_size(struct lookup_table *table); + #endif