]> wimlib.net Git - wimlib/blobdiff - src/verify.c
read_dentry_tree(): Check for presence of long names here
[wimlib] / src / verify.c
index f85446a7db2bf3e85a6b21c10d75ec6c4829cc33..d348e302b2d65edfc4ff29ed66e698d875c660ac 100644 (file)
@@ -85,9 +85,8 @@ verify_inode(struct wim_inode *inode, const WIMStruct *w)
                        num_unnamed_streams++;
        }
        if (num_unnamed_streams > 1) {
-               ERROR("Dentry `%"TS"' has multiple (%u) un-named streams",
-                     dentry_full_path(first_dentry), num_unnamed_streams);
-               return WIMLIB_ERR_INVALID_DENTRY;
+               WARNING("\"%"TS"\" has multiple (%u) un-named streams",
+                       dentry_full_path(first_dentry), num_unnamed_streams);
        }
 
        /* Files cannot have multiple DOS names, even if they have multiple
@@ -115,13 +114,6 @@ verify_inode(struct wim_inode *inode, const WIMStruct *w)
                }
        }
 
-       /* Directories with multiple links have not been tested. XXX */
-       if (inode->i_nlink > 1 && inode->i_attributes & FILE_ATTRIBUTE_DIRECTORY) {
-               ERROR("Hard-linked directory `%"TS"' is unsupported",
-                     dentry_full_path(first_dentry));
-               return WIMLIB_ERR_INVALID_DENTRY;
-       }
-
        inode->i_verified = 1;
        return 0;
 }
@@ -151,14 +143,13 @@ verify_dentry(struct wim_dentry *dentry, void *wim)
         * (This seems to be the case...) */
        if (dentry_is_root(dentry)) {
                if (dentry_has_long_name(dentry) || dentry_has_short_name(dentry)) {
-                       ERROR("The root dentry has a nonempty name!");
-                       return WIMLIB_ERR_INVALID_DENTRY;
-               }
-       } else {
-               if (!dentry_has_long_name(dentry)) {
-                       ERROR("Dentry `%"TS"' has no long name!",
-                             dentry_full_path(dentry));
-                       return WIMLIB_ERR_INVALID_DENTRY;
+                       WARNING("The root dentry has a nonempty name");
+                       FREE(dentry->file_name);
+                       FREE(dentry->short_name);
+                       dentry->file_name = NULL;
+                       dentry->short_name = NULL;
+                       dentry->file_name_nbytes = 0;
+                       dentry->short_name_nbytes = 0;
                }
        }