+Fri May 25 11:07:07 2001 Christopher Faylor <cgf@cygnus.com>
+
+ * 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 <corinna@vinschen.de>
* path.cc (symlink_info::check): Add a check to return correctly
pflags &= ~PATH_SYMLINK;
- ext_tacked_on = !*ext_here;
-
case_clash = FALSE;
while (suffix.next ())
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;
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;
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;