diff options
author | Christopher Faylor <me@cgf.cx> | 2003-03-08 03:36:39 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-03-08 03:36:39 +0000 |
commit | 762520f3bc4d160d2af658f5dd59dfd09d76bc7f (patch) | |
tree | 3f5a1f2f6163ab399d1f01c102421aba098a2c6a /winsup/cygwin/path.cc | |
parent | 5582abd2c78a738bc9559c8807acbe62d4e07f48 (diff) | |
download | cygnal-762520f3bc4d160d2af658f5dd59dfd09d76bc7f.tar.gz cygnal-762520f3bc4d160d2af658f5dd59dfd09d76bc7f.tar.bz2 cygnal-762520f3bc4d160d2af658f5dd59dfd09d76bc7f.zip |
* path.h (PATH_LNK): New enum val.
(path_conv::is_lnk_symlink): New function. True if path represents .lnk style
symlink.
* path.cc (check_shortcut): Set PATH_LNK in pflags when appropriate.
(symlink_info::check): Ditto. Remove PATH_LNK from pflags initially.
* syscalls.cc (unlink): Always remove readonly attribute from a symlink
regardless of type.
(link): (from Corinna Vinschen) Allow links to symlinks. Reset attributes on a
symlink after successful link creation.
(chmod): Use is_lnk_symlink where appropriate.
(rename): Ditto.
* tty.cc (create_tty_master): Call GetComputerName instead of
cygwin_gethostname. Set ut_id.
* syscalls.cc (login): Call endutent.
(setutent): Do not seek after a fresh open.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index dea1d372f..40a20fb14 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2775,7 +2775,7 @@ check_shortcut (const char *path, DWORD fileattr, HANDLE h, contents[len] = '\0'; res = len; if (res) /* It's a symlink. */ - *pflags = PATH_SYMLINK; + *pflags = PATH_SYMLINK | PATH_LNK; goto close_it; file_not_symlink: @@ -2990,11 +2990,11 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt) suffix_scan suffix; contents[0] = '\0'; - is_symlink = TRUE; + is_symlink = true; ext_here = suffix.has (path, suffixes); extn = ext_here - path; - pflags &= ~PATH_SYMLINK; + pflags &= ~(PATH_SYMLINK | PATH_LNK); case_clash = false; @@ -3043,6 +3043,8 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt) (res = get_symlink_ea (suffix.path, contents, sizeof (contents))) > 0) { pflags = PATH_SYMLINK; + if (sym_check == 1) + pflags |= PATH_LNK; debug_printf ("Got symlink from EA: %s", contents); break; } |