]> wimlib.net Git - wimlib/blobdiff - src/add_image.c
Fix up return values
[wimlib] / src / add_image.c
index 082c5023ae8bc5a5259a174a36cc231432ef6946..d10e5a3302108d6474ad6215bc3f6742fce6b7cc 100644 (file)
@@ -58,7 +58,6 @@ int add_new_dentry_tree(WIMStruct *w, struct dentry *root_dentry,
        struct lookup_table_entry *metadata_lte;
        struct image_metadata *imd;
        struct image_metadata *new_imd;
-       int ret;
 
        wimlib_assert(root_dentry != NULL);
 
@@ -215,8 +214,14 @@ static int build_dentry_tree(struct dentry **root_ret,
                filename = path_basename(root_disk_path);
 
        root = new_dentry_with_timeless_inode(filename);
-       if (!root)
-               return WIMLIB_ERR_NOMEM;
+       if (!root) {
+               if (errno == EILSEQ)
+                       return WIMLIB_ERR_INVALID_UTF8_STRING;
+               else if (errno == ENOMEM)
+                       return WIMLIB_ERR_NOMEM;
+               else
+                       return WIMLIB_ERR_ICONV_NOT_AVAILABLE;
+       }
 
        inode = root->d_inode;
 
@@ -634,7 +639,7 @@ WIMLIBAPI int wimlib_add_image(WIMStruct *w, const char *source,
        struct dentry *root_dentry = NULL;
        struct wim_security_data *sd;
        struct capture_config config;
-       struct hlist_head inode_list;
+       struct image_metadata *imd;
        int ret;
 
        if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_NTFS) {
@@ -730,14 +735,14 @@ WIMLIBAPI int wimlib_add_image(WIMStruct *w, const char *source,
        if (ret != 0)
                goto out_free_dentry_tree;
 
+       imd = &w->image_metadata[w->hdr.image_count - 1];
 
-       ret = dentry_tree_fix_inodes(root_dentry, &inode_list);
+       ret = dentry_tree_fix_inodes(root_dentry, &imd->inode_list);
        if (ret != 0)
                goto out_destroy_imd;
 
        DEBUG("Assigning hard link group IDs");
-       assign_inode_numbers(&inode_list);
-       w->image_metadata[w->hdr.image_count - 1].inode_list = inode_list;
+       assign_inode_numbers(&imd->inode_list);
 
        ret = xml_add_image(w, name);
        if (ret != 0)