From: Eric Biggers Date: Thu, 25 Apr 2013 14:30:11 +0000 (-0500) Subject: Win32: Do not hard link files with nNumberOfLinks = 1 X-Git-Tag: v1.3.3~32 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=53f5d0ff75ef3822897efa48d3e121152960548f Win32: Do not hard link files with nNumberOfLinks = 1 --- diff --git a/src/win32.c b/src/win32.c index 932d2933..0db8c3bf 100644 --- a/src/win32.c +++ b/src/win32.c @@ -1123,11 +1123,14 @@ win32_build_dentry_tree_recursive(struct wim_dentry **root_ret, /* Create a WIM dentry with an associated inode, which may be shared. * - * However, we need to explicitly check for directories and refuse to - * hard link them. This is because Windows has a bug where it can - * return duplicate File IDs for directories on the FAT filesystem. */ + * However, we need to explicitly check for directories and files with + * only 1 link and refuse to hard link them. This is because Windows + * has a bug where it can return duplicate File IDs for files and + * directories on the FAT filesystem. */ basename = path_basename_with_len(path, path_num_chars); - if (!(file_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { + if (!(file_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) + && file_info.nNumberOfLinks > 1) + { ret = inode_table_new_dentry(params->inode_table, basename, ((u64)file_info.nFileIndexHigh << 32) |