Subject: Re: Strange behaviour of vpath with dos paths
From: "Johan Bezem" <[email-masked]>
To: CygWin Mailing List <[email-masked]>
Date: Fri, 22 Mar 2002 17:30:35 +0100

Christopher Faylor wrote:
<SNIP>
> That means you send the ChangeLog entry (not the diff of a ChangeLog
> entry) and patch in clear text so that the barrier to inspecting your
> work is minimal.  This is standard across every project that I am
> aware of.

Sorry for the attachment then. Here it's once again.

Regards,

Johan Bezem
CSK Software AG

### ChangeLog ###
2002-03-20 Johan Bezem <[email-masked]>

* vpath.c (build_vpaths_list) [__CYGWIN__]: Added conversion of DOS-like pathname for GPATH variable to canonical form.

* read.c (read_makefile) [__CYGWIN__]: Added conversion of DOS-like pathname for vpath directive to canonical form.

### vpath.c-patch ###
--- vpath.orig.c	Fri Mar 22 10:50:38 2002
+++ vpath.c	Wed Mar 20 16:50:35 2002
@@ -144,6 +144,20 @@ build_vpath_lists ()
 	 will still be nil if P contains no existing directories.  */
       vpaths = 0;
 
+      /* CYGNUS LOCAL Cygwin */
+      /* FIXME: should this conversion only take place when in unixy_mode? */
+#ifdef __CYGWIN__
+      /* if a win32 VPATH path list, convert to posix path list */
+      if (!cygwin_posix_path_list_p (p))
+        {
+          posixp = (char *)
+                   alloca (cygwin_win32_to_posix_path_list_buf_size (p));
+          cygwin_win32_to_posix_path_list (p, posixp);
+          p = posixp;
+        }
+#endif /* __CYGWIN__ */
+      /* END CYGNUS LOCAL */
+
       /* Parse P.  */
       construct_vpath_list ("%", p);
 
### read.c-patch ###
--- read.orig.c	Fri Mar 22 10:51:07 2002
+++ read.c	Wed Mar 20 16:51:36 2002
@@ -648,6 +648,21 @@ read_makefile (filename, flags)
 	  else
 	    /* No pattern means remove all previous selective VPATH's.  */
 	    pattern = 0;
+
+    /* CYGNUS LOCAL Cygwin */
+    /* FIXME: should this conversion only take place when in unixy_mode? */
+#ifdef __CYGWIN__
+    /* if a win32 VPATH path list, convert to posix path list */
+    if (!cygwin_posix_path_list_p (p))
+      {
+        register char *posixp = (char *)
+                                alloca (cygwin_win32_to_posix_path_list_buf_size (p));
+        cygwin_win32_to_posix_path_list (p, posixp);
+        p = posixp;
+      }
+#endif /* __CYGWIN__ */
+    /* END CYGNUS LOCAL */
+
 	  construct_vpath_list (pattern, p);
 	  if (pattern != 0)
 	    free (pattern);

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/