Don't generate Windows native symlinks targeting Cygwin-only targets
* path.cc (symlink_native): Don't generate native symlink targeting Cygwin special file. Inform the caller. (symlink_worker): Don;t bail out in WSYM_nativestrict case if the target is a Cygwin special file. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
21608fa57d
commit
8cdd7bad21
|
@ -1,3 +1,10 @@
|
||||||
|
2015-11-18 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* path.cc (symlink_native): Don't generate native symlink targeting
|
||||||
|
Cygwin special file. Inform the caller.
|
||||||
|
(symlink_worker): Don;t bail out in WSYM_nativestrict case if the
|
||||||
|
target is a Cygwin special file.
|
||||||
|
|
||||||
2015-11-18 Corinna Vinschen <corinna@vinschen.de>
|
2015-11-18 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* lc_msg.h: Regenerate.
|
* lc_msg.h: Regenerate.
|
||||||
|
|
|
@ -1700,6 +1700,11 @@ symlink_native (const char *oldpath, path_conv &win32_newpath)
|
||||||
SetLastError (ERROR_FILE_NOT_FOUND);
|
SetLastError (ERROR_FILE_NOT_FOUND);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/* Don't allow native symlinks to Cygwin special files. However, the
|
||||||
|
caller shoud know because this case shouldn't be covered by the
|
||||||
|
default "nativestrict" behaviour, so we use a special return code. */
|
||||||
|
if (win32_oldpath.isspecial ())
|
||||||
|
return -2;
|
||||||
/* Convert native paths to Win32 UNC paths. */
|
/* Convert native paths to Win32 UNC paths. */
|
||||||
final_newpath = win32_newpath.get_nt_native_path ();
|
final_newpath = win32_newpath.get_nt_native_path ();
|
||||||
final_newpath->Buffer[1] = L'\\';
|
final_newpath->Buffer[1] = L'\\';
|
||||||
|
@ -1843,8 +1848,9 @@ symlink_worker (const char *oldpath, const char *newpath, bool isdevice)
|
||||||
res = symlink_native (oldpath, win32_newpath);
|
res = symlink_native (oldpath, win32_newpath);
|
||||||
if (!res)
|
if (!res)
|
||||||
__leave;
|
__leave;
|
||||||
/* Strictly native? Too bad. */
|
/* Strictly native? Too bad, unless the target is a Cygwin
|
||||||
if (wsym_type == WSYM_nativestrict)
|
special file. */
|
||||||
|
if (res == -1 && wsym_type == WSYM_nativestrict)
|
||||||
{
|
{
|
||||||
__seterrno ();
|
__seterrno ();
|
||||||
__leave;
|
__leave;
|
||||||
|
|
Loading…
Reference in New Issue