This is the mail archive of the cygwin-patches mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Bug fix and enchantment in cygpath.cc


Corinna Vinschen wrote:
On Jul 29 12:29, Ilya wrote:
This patch is against cygpath.cc 1.42.
In 1.43 addressed bug was already fixed, but I believe my fix is a bit better.


Current fix just returns filename, in case filename is for a nonexistent file. I think that internal short to long file name conversion routine could be used in this case, because it deals ok with nonexistent files.

If you could regenerate your patch so that it's against current CVS, I will take it, since its size will then be below the "trivial fix" rule. Please see http://cygwin.com/contrib.html, "Before you get started", second paragraph.


Thanks,
Corinna
No problem :)

--- cygpath.cc.orig	2006-07-30 16:15:30.390625000 +0300
+++ cygpath.cc	2006-07-30 16:15:05.953125000 +0300
@@ -241,15 +241,24 @@ get_long_name (const char *filename, DWO
   len = GetLongPathName (filename, buf, MAX_PATH);
   if (len == 0)
     {
-      if (GetLastError () == ERROR_INVALID_PARAMETER)
+      DWORD err = GetLastError ();
+
+      if (err == ERROR_INVALID_PARAMETER)
 	{
 	  fprintf (stderr, "%s: cannot create long name of %s\n", prog_name,
-		   filename);
+	       	   filename);
 	  exit (2);
 	}
-      buf[0] = '\0';
-      strncat (buf, filename, MAX_PATH - 1);
-      len = strlen (buf);
+      else if (err == ERROR_FILE_NOT_FOUND)
+	{
+	  len = get_long_path_name_w32impl (filename, buf, MAX_PATH);
+	}
+      else
+	{
+	  buf[0] = 0;
+	  strncat (buf, filename, MAX_PATH - 1);
+	  len = strlen (buf);
+	}
     }
   sbuf = (char *) malloc (len + 1);
   if (!sbuf)
2006-07-03  Ilya Bobir  <ilya@po4ta.com>

	* cygpath.cc (get_long_name): Fallback to get_long_path_name_w32impl.
	Properly null-terminate 'buf'.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]