WIMStruct *w;
};
-/*
+/*
* Extracts a WIM resource to a NTFS attribute.
*/
static int
while (bytes_remaining) {
u64 to_read = min(bytes_remaining, WIM_CHUNK_SIZE);
- ret = read_wim_resource(lte, buf, to_read, offset, false);
+ ret = read_wim_resource(lte, buf, to_read, offset, 0);
if (ret != 0)
break;
sha1_update(&ctx, buf, to_read);
if (dentry->d_inode->security_id != -1) {
const struct wim_security_data *sd;
const char *descriptor;
-
+
sd = wim_const_security_data(w);
wimlib_assert(dentry->d_inode->security_id < sd->num_entries);
- descriptor = sd->descriptors[dentry->d_inode->security_id];
+ descriptor = (const char *)sd->descriptors[dentry->d_inode->security_id];
DEBUG("Applying security descriptor %d to `%s'",
dentry->d_inode->security_id, dentry->full_path_utf8);
ret = ntfs_xattr_system_setxattr(&ctx, XATTR_NTFS_ACL,
ni, dir_ni, descriptor,
sd->sizes[dentry->d_inode->security_id], 0);
-
+
if (ret != 0) {
ERROR_WITH_ERRNO("Failed to set security data on `%s'",
dentry->full_path_utf8);
}
if (wim_resource_size(lte) >= 0xffff) {
- ERROR("Reparse data of `%s' is too long (%lu bytes)",
+ ERROR("Reparse data of `%s' is too long (%"PRIu64" bytes)",
dentry->full_path_utf8, wim_resource_size(lte));
return WIMLIB_ERR_INVALID_DENTRY;
}
p = put_u16(p, wim_resource_size(lte)); /* ReparseDataLength */
p = put_u16(p, 0); /* Reserved */
- ret = read_full_wim_resource(lte, p);
+ ret = read_full_wim_resource(lte, p, 0);
if (ret != 0)
return ret;
static int do_wim_apply_dentry_ntfs(struct dentry *dentry, ntfs_inode *dir_ni,
WIMStruct *w);
-/*
+/*
* If @dentry is part of a hard link group, search for hard-linked dentries in
* the same directory that have a nonempty DOS (short) filename. There should
* be exactly 0 or 1 such dentries. If there is 1, extract that dentry first,
return 0;
}
-/*
+/*
* Applies a WIM dentry to a NTFS filesystem.
*
* @dentry: The WIM dentry to apply
if (inode->attributes & FILE_ATTRIBUTE_DIRECTORY) {
type = S_IFDIR;
} else {
- struct dentry *other;
-
/* Apply hard-linked directory in same directory with DOS name
* (if there is one) before this dentry */
if (dentry->short_name_len == 0) {
/* Can't make a hard link; extract the file itself */
FREE(inode->extracted_file);
inode->extracted_file = STRDUP(dentry->full_path_utf8);
- if (!inode->extracted_file)
- return WIMLIB_ERR_NOMEM;
+ if (!inode->extracted_file) {
+ ret = WIMLIB_ERR_NOMEM;
+ goto out_close_dir_ni;
+ }
}
}
- /*
+ /*
* Create a directory or file.
*
* Note: For symbolic links that are not directory junctions, pass
int ret;
struct dentry *root;
struct ntfs_apply_args args;
-
+
DEBUG("Mounting NTFS volume `%s'", device);
vol = ntfs_mount(device, 0);
if (!vol) {
}
-/*
+/*
* API entry point for applying a WIM image to a NTFS volume.
*
* Please note that this is a NTFS *volume* and not a directory. The intention
w->lookup_table = joined_tab;
}
- ret = wimlib_select_image(w, image);
+ ret = select_wim_image(w, image);
if (ret != 0)
goto out;