]> sourceware.org Git - newlib-cygwin.git/commitdiff
* path.cc (symlink_info::check): Correctly set 'ext_tacked_on'. Use this to
authorChristopher Faylor <me@cgf.cx>
Fri, 25 May 2001 15:07:46 +0000 (15:07 +0000)
committerChristopher Faylor <me@cgf.cx>
Fri, 25 May 2001 15:07:46 +0000 (15:07 +0000)
determine if user specified 'foo.lnk' explicitly.  Reorganize slightly to get
rid of one goto.

winsup/cygwin/ChangeLog
winsup/cygwin/path.cc

index 9aab7d28c4e987b5e3532cc9a896333ae69e603b..7aefe1d4f3927aba1aba5bc85b851c8c46f12627 100644 (file)
@@ -1,3 +1,9 @@
+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
index b9ca7ef62e9a0658d1196ce2744e01e65e895781..4f7a03acc64a5eb1b2e98155ca9fa567a6fbcc47 100644 (file)
@@ -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;
This page took 0.04032 seconds and 5 git commands to generate.