#endif
extern int
-read_dentry(const u8 *metadata_resource, u64 metadata_resource_len,
- u64 offset, struct wim_dentry *dentry);
+read_dentry(const u8 * restrict metadata_resource,
+ u64 metadata_resource_len, u64 offset,
+ struct wim_dentry * restrict dentry);
extern int
-read_dentry_tree(const u8 metadata_resource[], u64 metadata_resource_len,
- struct wim_dentry *dentry);
+read_dentry_tree(const u8 * restrict metadata_resource,
+ u64 metadata_resource_len,
+ struct wim_dentry * restrict dentry);
extern u8 *
-write_dentry_tree(const struct wim_dentry *tree, u8 *p);
+write_dentry_tree(const struct wim_dentry * restrict tree,
+ u8 * restrict p);
static inline bool
dentry_is_root(const struct wim_dentry *dentry)
static inline bool
inode_is_directory(const struct wim_inode *inode)
{
- return (inode->i_attributes & FILE_ATTRIBUTE_DIRECTORY)
- && !(inode->i_attributes & FILE_ATTRIBUTE_REPARSE_POINT);
+ return (inode->i_attributes & (FILE_ATTRIBUTE_DIRECTORY |
+ FILE_ATTRIBUTE_REPARSE_POINT))
+ == FILE_ATTRIBUTE_DIRECTORY;
}
static inline bool
inode->i_reparse_tag == WIM_IO_REPARSE_TAG_MOUNT_POINT);
}
-static inline bool
-inode_is_regular_file(const struct wim_inode *inode)
-{
- return !inode_is_directory(inode) && !inode_is_symlink(inode);
-}
-
-static inline bool
-dentry_is_regular_file(const struct wim_dentry *dentry)
-{
- return inode_is_regular_file(dentry->d_inode);
-}
-
static inline bool
inode_has_children(const struct wim_inode *inode)
{
extern int
dentry_tree_fix_inodes(struct wim_dentry *root, struct list_head *inode_list);
-int
+extern int
verify_inode(struct wim_inode *inode, const struct wim_security_data *sd);
-#endif
+#endif /* _WIMLIB_DENTRY_H */
* Returns zero on success; nonzero on failure.
*/
int
-read_dentry_tree(const u8 metadata_resource[], u64 metadata_resource_len,
- struct wim_dentry *dentry)
+read_dentry_tree(const u8 * restrict metadata_resource,
+ u64 metadata_resource_len,
+ struct wim_dentry * restrict dentry)
{
u64 cur_offset = dentry->subdir_offset;
struct wim_dentry *child;
* Returns pointer to the byte after the last byte we wrote.
*/
u8 *
-write_dentry_tree(const struct wim_dentry *root, u8 *p)
+write_dentry_tree(const struct wim_dentry * restrict root, u8 * restrict p)
{
DEBUG("Writing dentry tree.");
wimlib_assert(dentry_is_root(root));
extract_dentry_to_stdout(struct wim_dentry *dentry)
{
int ret = 0;
- if (!dentry_is_regular_file(dentry)) {
+ if (dentry->d_inode->i_attributes & (FILE_ATTRIBUTE_REPARSE_POINT |
+ FILE_ATTRIBUTE_DIRECTORY))
+ {
ERROR("\"%"TS"\" is not a regular file and therefore cannot be "
- "extracted to standard output", dentry->_full_path);
+ "extracted to standard output", dentry_full_path(dentry));
ret = WIMLIB_ERR_NOT_A_REGULAR_FILE;
} else {
struct wim_lookup_table_entry *lte;