/* Currently ignored; set to 1 in new lookup table entries. */
u16 part_number;
- /* Number of times this lookup table entry is referenced by dentries. */
- u32 refcnt;
-
/* If %true, this lookup table entry corresponds to a symbolic link
* reparse buffer. @symlink_reparse_data_buf will give the target of
* the symbolic link. */
bool is_symlink;
+ /* Number of times this lookup table entry is referenced by dentries. */
+ u32 refcnt;
+
union {
/* SHA1 hash of the file resource pointed to by this lookup
* table entry */
/* Compression type used in other WIM. */
int other_wim_ctype;
};
- struct wimlib_fd **fds;
- u16 num_allocated_fds;
- u16 num_opened_fds;
+ struct {
+ struct wimlib_fd **fds;
+ u16 num_allocated_fds;
+ u16 num_opened_fds;
+ };
};
/* When a WIM file is written, out_refcnt starts at 0 and is incremented
*
* output_resource_entry is the struct resource_entry for the position of the
* file resource when written to the output file. */
+ u32 out_refcnt;
union {
- u32 out_refcnt;
- bool refcnt_is_incremented;
+ struct resource_entry output_resource_entry;
+ struct list_head staging_list;
};
- struct resource_entry output_resource_entry;
struct dentry *hard_link_sets;
};
extern void lookup_table_unlink(struct lookup_table *table,
struct lookup_table_entry *lte);
-extern bool lookup_table_decrement_refcnt(struct lookup_table* table,
- const u8 hash[]);
+extern struct lookup_table_entry *
+lookup_table_decrement_refcnt(struct lookup_table* table, const u8 hash[]);
extern struct lookup_table_entry *new_lookup_table_entry();
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);
+ unsigned *stream_idx_ret);
extern int zero_out_refcnts(struct lookup_table_entry *entry, void *ignore);
extern int write_lookup_table_entry(struct lookup_table_entry *lte, void *__out);
-static inline void free_lookup_table_entry(struct lookup_table_entry *lte)
-{
- if (lte) {
- FREE(lte->file_on_disk);
- FREE(lte);
- }
-}
+extern void free_lookup_table_entry(struct lookup_table_entry *lte);
/* Writes the lookup table to the output file. */
static inline int write_lookup_table(struct lookup_table *table, FILE *out)