X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Flookup_table.h;h=faf62a02bc33039f8c817712b6c8de4aeebeddbf;hp=a269e512ebef8465dc8d151eb02432278e046739;hb=d977c5b4f348208e47fd2922f202f3eb60d5d5cb;hpb=815ad485b8ce48db48a3137d73e511f6c9af868c diff --git a/src/lookup_table.h b/src/lookup_table.h index a269e512..faf62a02 100644 --- a/src/lookup_table.h +++ b/src/lookup_table.h @@ -7,7 +7,9 @@ /* Size of each lookup table entry in the WIM file. */ #define WIM_LOOKUP_TABLE_ENTRY_DISK_SIZE 50 -#define LOOKUP_FLAG_ADS_OK +#define LOOKUP_FLAG_ADS_OK 0x00000001 +#define LOOKUP_FLAG_DIRECTORY_OK 0x00000002 +#define LOOKUP_FLAG_FOLLOW_SYMLINKS 0x00000004 /* A lookup table that is used to translate the hash codes of dentries into the @@ -112,6 +114,7 @@ struct lookup_table_entry { bool refcnt_is_incremented; }; struct resource_entry output_resource_entry; + struct dentry *hard_link_sets; }; extern struct lookup_table *new_lookup_table(size_t capacity); @@ -122,7 +125,7 @@ extern void lookup_table_insert(struct lookup_table *table, extern void lookup_table_unlink(struct lookup_table *table, struct lookup_table_entry *lte); -extern void lookup_table_decrement_refcnt(struct lookup_table* table, +extern bool lookup_table_decrement_refcnt(struct lookup_table* table, const u8 hash[]); @@ -132,15 +135,13 @@ extern int for_lookup_table_entry(struct lookup_table *table, int (*visitor)(struct lookup_table_entry *, void *), void *arg); -extern struct lookup_table_entry *lookup_resource(const struct lookup_table *table, - const u8 hash[]); - -static inline struct lookup_table_entry * -wim_lookup_resource(const WIMStruct *w, const struct dentry *dentry) -{ - return lookup_resource(w->lookup_table, dentry->hash); -} +extern struct lookup_table_entry * +__lookup_resource(const struct lookup_table *lookup_table, const u8 hash[]); +extern int lookup_resource(WIMStruct *w, const char *path, + int lookup_flags, struct dentry **dentry_ret, + struct lookup_table_entry **lte_ret, + u8 **hash_ret); extern int zero_out_refcnts(struct lookup_table_entry *entry, void *ignore);