X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=include%2Fwimlib%2Finode.h;h=03c9acd8ca05aa22810b1776d234b5073499fd4a;hb=a1a043899627341eb5117a48098d8d92abd43827;hp=6f310fda698717a546ad4552017441e369504957;hpb=e2697bba43598a3ff2e2d66c8596df7acba1acb6;p=wimlib diff --git a/include/wimlib/inode.h b/include/wimlib/inode.h index 6f310fda..03c9acd8 100644 --- a/include/wimlib/inode.h +++ b/include/wimlib/inode.h @@ -18,7 +18,7 @@ struct avl_tree_node; /* * WIM inode. * - * As mentioned in the comment above `struct wim_dentry', in the WIM file that + * As mentioned in the comment above `struct wim_dentry', in WIM files there * is no on-disk analogue of a real inode, as most of these fields are * duplicated in the dentries. Instead, a `struct wim_inode' is something we * create ourselves to simplify the handling of hard links. @@ -125,9 +125,10 @@ struct wim_inode { /* Corresponds to 'security_id' in `struct wim_dentry_on_disk': The * index of this inode's security descriptor in the WIM image's table of - * security descriptors, or -1. Note: in verify_inode(), called - * whenever a WIM image is loaded, out-of-bounds indices are set to -1, - * so the extraction code does not need to do bounds checks. */ + * security descriptors, or -1. Note: when a WIM image is loaded, + * wimlib sets out-of-bounds indices and values less than -1 in this + * field to -1. So the extraction code need not do an upper bound check + * after checking for -1 (or equivalently < 0). */ int32_t i_security_id; /* Identity of a reparse point. See @@ -176,6 +177,12 @@ struct wim_inode { #endif }; + /* Used during WIM writing with + * WIMLIB_WRITE_FLAG_SEND_DONE_WITH_FILE_MESSAGES: the number + * of data streams this inode has that have not yet been fully + * read. */ + u32 num_unread_streams; + #ifdef WITH_FUSE struct { /* Used only during image mount: Table of file @@ -349,6 +356,12 @@ extern void inode_remove_ads(struct wim_inode *inode, struct wim_ads_entry *entry, struct wim_lookup_table *lookup_table); +/* + * Does the specified alternate data stream entry correspond to a named stream? + * + * See inode_needs_dummy_stream() for explanation of why an alternate data + * stream entry might, in fact, not be named... + */ static inline bool ads_entry_is_named_stream(const struct wim_ads_entry *entry) { @@ -516,8 +529,8 @@ extern int read_ads_entries(const u8 * restrict p, struct wim_inode * restrict inode, size_t *nbytes_remaining_p); -extern int -verify_inode(struct wim_inode *inode, const struct wim_security_data *sd); +extern void +check_inode(struct wim_inode *inode, const struct wim_security_data *sd); extern void inode_ref_streams(struct wim_inode *inode);