- if (name_length == 0) {
- /* Unnamed data stream. Put the reference to it in the
- * dentry's inode. */
- if (inode->i_lte) {
- if (lte) {
- ERROR("Found two un-named data streams for \"%s\" "
- "(sizes = %"PRIu64", %"PRIu64")",
- path, wim_resource_size(inode->i_lte),
- wim_resource_size(lte));
- ret = WIMLIB_ERR_NTFS_3G;
- goto out_free_lte;
- }
- } else {
- stream_id = 0;
- inode->i_lte = lte;
- }
- } else {
- /* Named data stream. Put the reference to it in the
- * alternate data stream entries */
- struct wim_ads_entry *new_ads_entry;
-
- new_ads_entry = inode_add_ads_utf16le(inode,
- attr_record_name(actx->attr),
- name_length * 2);
- if (!new_ads_entry) {
- ret = WIMLIB_ERR_NOMEM;
- goto out_free_lte;
- }
- wimlib_assert(new_ads_entry->stream_name_nbytes == name_length * 2);
- stream_id = new_ads_entry->stream_id;
- new_ads_entry->lte = lte;
- }
- if (lte) {
- lookup_table_insert_unhashed(lookup_table, lte,
- inode, stream_id);
+
+ strm = inode_add_stream(inode,
+ attr_type_to_wimlib_stream_type(type),
+ stream_name ? stream_name : NO_STREAM_NAME,
+ blob);
+ if (!strm) {
+ ret = WIMLIB_ERR_NOMEM;
+ goto out_free_blob;