if (ret < 0)
return RP_NOT_FIXED;
stripped_chars = ret;
+ if (stripped_chars)
+ stripped_chars -= 2;
target[target_nchars] = L'\0';
orig_target = target;
target = capture_fixup_absolute_symlink(target + stripped_chars,
wmemmove(orig_target + stripped_chars, target, target_nchars + 1);
*target_nbytes_p = (target_nchars + stripped_chars) * sizeof(wchar_t);
DEBUG("Fixed reparse point (new target: \"%ls\")", orig_target);
- if (stripped_chars == 6)
+ if (stripped_chars)
return RP_FIXED_FULLPATH;
else
return RP_FIXED_ABSPATH;
if (path_nchars > 32767)
return WIMLIB_ERR_INVALID_PARAM;
+ if (GetFileAttributesW(root_disk_path) == INVALID_FILE_ATTRIBUTES &&
+ GetLastError() == ERROR_FILE_NOT_FOUND)
+ {
+ ERROR("Capture directory \"%ls\" does not exist!",
+ root_disk_path);
+ return WIMLIB_ERR_OPENDIR;
+ }
+
ret = win32_get_file_and_vol_ids(root_disk_path,
¶ms->capture_root_ino,
¶ms->capture_root_dev);
/* Print name excludes the \??\ if present. */
new_print_name = p;
- if (target_nchars - stripped_target_nchars != 0) {
+ if (stripped_nchars != 0) {
/* Get drive letter from real path to extract root, if a drive
* letter was present before. */
*p++ = extract_root_realpath[0];