]> wimlib.net Git - wimlib/blobdiff - src/lookup_table.h
do_add_image(): Set boot_idx directly
[wimlib] / src / lookup_table.h
index cbf5daf36b091c8a1d82ebac4e9084f15e80abb2..524e17e67ae8ec4510af14158c4682a8e9f98d18 100644 (file)
@@ -50,7 +50,10 @@ struct ntfs_location {
 struct lookup_table_entry {
 
        /* List of lookup table entries in this hash bucket */
-       struct hlist_node hash_list;
+       union {
+               struct hlist_node hash_list;
+               struct list_head list;
+       };
 
        /* Location and size of the stream in the WIM, whether it is compressed
         * or not, and whether it's a metadata resource or not.  This is an
@@ -234,22 +237,10 @@ static inline void lookup_table_unlink(struct lookup_table *table,
        table->num_entries--;
 }
 
+extern struct lookup_table_entry *new_lookup_table_entry();
 
 extern struct lookup_table_entry *
-lookup_table_decrement_refcnt(struct lookup_table* table, const u8 hash[]);
-
-#ifdef WITH_FUSE
-extern struct lookup_table_entry *
-lte_decrement_num_opened_fds(struct lookup_table_entry *lte,
-                            struct lookup_table *table);
-#endif
-
-extern struct lookup_table_entry *
-lte_decrement_refcnt(struct lookup_table_entry *lte,
-                    struct lookup_table *table);
-
-
-extern struct lookup_table_entry *new_lookup_table_entry();
+clone_lookup_table_entry(const struct lookup_table_entry *lte);
 
 extern int for_lookup_table_entry(struct lookup_table *table, 
                                  int (*visitor)(struct lookup_table_entry *, void *), 
@@ -263,6 +254,11 @@ extern int lookup_resource(WIMStruct *w, const char *path,
                           struct lookup_table_entry **lte_ret,
                           u16 *stream_idx_ret);
 
+extern void lte_decrement_refcnt(struct lookup_table_entry *lte,
+                                struct lookup_table *table);
+extern void lte_decrement_num_opened_fds(struct lookup_table_entry *lte,
+                                        struct lookup_table *table);
+
 extern int lte_zero_out_refcnt(struct lookup_table_entry *entry, void *ignore);
 extern int lte_zero_real_refcnt(struct lookup_table_entry *entry, void *ignore);
 extern int lte_free_extracted_file(struct lookup_table_entry *lte, void *ignone);
@@ -278,6 +274,7 @@ 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 int dentry_resolve_ltes(struct dentry *dentry, void *__table);
+extern int dentry_unresolve_ltes(struct dentry *dentry, void *ignore);
 
 /* Writes the lookup table to the output file. */
 static inline int write_lookup_table(struct lookup_table *table, FILE *out)
@@ -312,7 +309,7 @@ inode_stream_lte_resolved(const struct inode *inode, unsigned stream_idx)
 
 static inline struct lookup_table_entry *
 inode_stream_lte_unresolved(const struct inode *inode, unsigned stream_idx,
-                            const struct lookup_table *table)
+                           const struct lookup_table *table)
 {
        wimlib_assert(!inode->resolved);
        wimlib_assert(stream_idx <= inode->num_ads);