diff options
Diffstat (limited to 'winsup/cygwin/syscalls.cc')
-rw-r--r-- | winsup/cygwin/syscalls.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 9e28d104e..bf2709d06 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -94,6 +94,7 @@ extern "C" int _unlink (const char *ourname) { int res = -1; + DWORD devn; sigframe thisframe (mainthread); path_conv win32_name (ourname, PC_SYM_NOFOLLOW | PC_FULL); @@ -104,6 +105,13 @@ _unlink (const char *ourname) goto done; } + if ((devn = win32_name.get_devn ()) == FH_PROC || devn == FH_REGISTRY + || devn == FH_PROCESS) + { + set_errno (EROFS); + goto done; + } + syscall_printf ("_unlink (%s)", win32_name.get_win32 ()); if (!win32_name.exists ()) |