4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-02 20:40:24 +08:00

* syscalls.cc (_link): Revert previous change and just always dereference the

oldpath.
This commit is contained in:
Christopher Faylor 2002-08-01 23:53:07 +00:00
parent e51cfd3116
commit 8a19897f17
2 changed files with 10 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2002-08-01 Christopher Faylor <cgf@redhat.com>
* syscalls.cc (_link): Revert previous change and just always
dereference the oldpath.
2002-08-01 Christopher Faylor <cgf@redhat.com> 2002-08-01 Christopher Faylor <cgf@redhat.com>
* syscalls.cc (link): Properly deal with a link to a symlink. * syscalls.cc (link): Properly deal with a link to a symlink.

View File

@ -305,11 +305,10 @@ _read (int fd, void *ptr, size_t len)
DWORD wait = cfd->is_nonblocking () ? 0 : INFINITE; DWORD wait = cfd->is_nonblocking () ? 0 : INFINITE;
/* Could block, so let user know we at least got here. */ /* Could block, so let user know we at least got here. */
syscall_printf ("read (%d, %p, %d) %sblocking, sigcatchers %d", syscall_printf ("read (%d, %p, %d) %sblocking, sigcatchers %d", fd, ptr, len, wait ? "" : "non", sigcatchers);
fd, ptr, len, wait ? "" : "non", sigcatchers);
if (wait && (!cfd->is_slow () || cfd->get_r_no_interrupt ())) if (wait && (!cfd->is_slow () || cfd->get_r_no_interrupt ()))
debug_printf ("no need to call ready_for_read\n"); debug_printf ("non-interruptible read\n");
else if (!cfd->ready_for_read (fd, wait)) else if (!cfd->ready_for_read (fd, wait))
{ {
res = -1; res = -1;
@ -319,7 +318,7 @@ _read (int fd, void *ptr, size_t len)
/* FIXME: This is not thread safe. We need some method to /* FIXME: This is not thread safe. We need some method to
ensure that an fd, closed in another thread, aborts I/O ensure that an fd, closed in another thread, aborts I/O
operations. */ operations. */
if (!cfd.isopen ()) if (!cfd.isopen())
return -1; return -1;
/* Check to see if this is a background read from a "tty", /* Check to see if this is a background read from a "tty",
@ -332,7 +331,7 @@ _read (int fd, void *ptr, size_t len)
if (res > bg_eof) if (res > bg_eof)
{ {
myself->process_state |= PID_TTYIN; myself->process_state |= PID_TTYIN;
if (!cfd.isopen ()) if (!cfd.isopen())
return -1; return -1;
res = cfd->read (ptr, len); res = cfd->read (ptr, len);
myself->process_state &= ~PID_TTYIN; myself->process_state &= ~PID_TTYIN;
@ -615,9 +614,8 @@ _link (const char *a, const char *b)
{ {
int res = -1; int res = -1;
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
path_conv real_a (a, PC_SYM_FOLLOW | PC_FULL);
path_conv real_b (b, PC_SYM_NOFOLLOW | PC_FULL); path_conv real_b (b, PC_SYM_NOFOLLOW | PC_FULL);
path_conv real_a (a, PC_SYM_NOFOLLOW | PC_FULL);
extern BOOL allow_winsymlinks;
if (real_a.error) if (real_a.error)
{ {
@ -648,8 +646,6 @@ _link (const char *a, const char *b)
/* Try to make hard link first on Windows NT */ /* Try to make hard link first on Windows NT */
if (wincap.has_hard_links ()) if (wincap.has_hard_links ())
{ {
if (allow_winsymlinks && real_b.issymlink ())
strcat (real_a, ".lnk");
if (CreateHardLinkA (real_b, real_a, NULL)) if (CreateHardLinkA (real_b, real_a, NULL))
{ {
res = 0; res = 0;