From b9ce8140893e7885e3898be2ba1c87940064a5c1 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Fri, 25 May 2001 15:07:46 +0000 Subject: [PATCH] * path.cc (symlink_info::check): Correctly set 'ext_tacked_on'. Use this to determine if user specified 'foo.lnk' explicitly. Reorganize slightly to get rid of one goto. --- winsup/cygwin/ChangeLog | 6 ++++++ winsup/cygwin/path.cc | 29 ++++++++++++++--------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 9aab7d28c..7aefe1d4f 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +Fri May 25 11:07:07 2001 Christopher Faylor + + * path.cc (symlink_info::check): Correctly set 'ext_tacked_on'. Use + this to determine if user specified 'foo.lnk' explicitly. Reorganize + slightly to get rid of one goto. + Fri May 25 10:15:00 2001 Corinna Vinschen * path.cc (symlink_info::check): Add a check to return correctly diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index b9ca7ef62..4f7a03acc 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2631,8 +2631,6 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt) pflags &= ~PATH_SYMLINK; - ext_tacked_on = !*ext_here; - case_clash = FALSE; while (suffix.next ()) @@ -2649,11 +2647,16 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt) continue; } + + ext_tacked_on = !!*ext_here; + if (pcheck_case != PCHECK_RELAXED && !case_check (path) || (opt & PC_SYM_IGNORE)) goto file_not_symlink; - int sym_check = 0; + int sym_check; + + sym_check = 0; if (fileattr & FILE_ATTRIBUTE_DIRECTORY) goto file_not_symlink; @@ -2684,13 +2687,10 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt) case 1: res = check_shortcut (suffix.path, fileattr, h, contents, &error, &pflags); if (res) - { - ext_tacked_on = 1; - break; - } + break; /* If searching for `foo' and then finding a `foo.lnk' which is no shortcut, return the same as if file not found. */ - if (!suffix.lnk_match () || pathmatch(path, suffix.path)) + if (!suffix.lnk_match () || !ext_tacked_on) goto file_not_symlink; fileattr = (DWORD) -1; @@ -2702,15 +2702,14 @@ symlink_info::check (char *path, const suffix_info *suffixes, unsigned opt) break; } break; - } - goto out; -file_not_symlink: - is_symlink = FALSE; - syscall_printf ("not a symlink"); - res = 0; + file_not_symlink: + is_symlink = FALSE; + syscall_printf ("not a symlink"); + res = 0; + break; + } -out: syscall_printf ("%d = symlink.check (%s, %p) (%p)", res, suffix.path, contents, pflags); return res; -- 2.43.5