#define FILE_ATTRIBUTE_VIRTUAL 0x00010000
extern struct wim_inode *
-new_inode(void) _malloc_attribute;
-
-extern struct wim_inode *
-new_timeless_inode(void) _malloc_attribute;
+new_inode(struct wim_dentry *dentry, bool set_timestamps);
/* Iterate through each alias of the specified inode. */
#define inode_for_each_dentry(dentry, inode) \
extern struct wim_inode_stream *
inode_get_unnamed_stream(const struct wim_inode *inode, int stream_type);
+static inline struct wim_inode_stream *
+inode_get_unnamed_data_stream(const struct wim_inode *inode)
+{
+ return inode_get_unnamed_stream(inode, STREAM_TYPE_DATA);
+}
+
extern struct wim_inode_stream *
inode_add_stream(struct wim_inode *inode, int stream_type,
const utf16lechar *stream_name, struct blob_descriptor *blob);
-extern struct wim_inode_stream *
+extern void
+inode_replace_stream_blob(struct wim_inode *inode,
+ struct wim_inode_stream *strm,
+ struct blob_descriptor *new_blob,
+ struct blob_table *blob_table);
+
+extern bool
+inode_replace_stream_data(struct wim_inode *inode,
+ struct wim_inode_stream *strm,
+ const void *data, size_t size,
+ struct blob_table *blob_table);
+
+extern bool
inode_add_stream_with_data(struct wim_inode *inode, int stream_type,
const utf16lechar *stream_name,
const void *data, size_t size,
return strm->_stream_blob;
}
-static inline void
-stream_set_blob(struct wim_inode_stream *strm, struct blob_descriptor *blob)
-{
- strm->_stream_blob = blob;
- strm->stream_resolved = 1;
-}
-
static inline bool
stream_is_named(const struct wim_inode_stream *strm)
{