* emacsclient.c (main): Revert part of last change,
authorJuanma Barranquero <lekktu@gmail.com>
Wed, 11 Mar 2009 00:57:03 +0000 (00:57 +0000)
committerJuanma Barranquero <lekktu@gmail.com>
Wed, 11 Mar 2009 00:57:03 +0000 (00:57 +0000)
  so drive-relative file names again work on Windows.

lib-src/ChangeLog
lib-src/emacsclient.c

index 0609f1e..c9c37ed 100644 (file)
@@ -1,3 +1,8 @@
+2009-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * emacsclient.c (main): Revert part of last change, so
+       drive-relative file names again work on Windows.
+
 2009-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * emacsclient.c (main): Always pass cwd via "-dir".  Pass the file
index 3197b2a..f66d6b4 100644 (file)
@@ -1635,6 +1635,26 @@ main (argc, argv)
                   continue;
                 }
             }
+#ifdef WINDOWSNT
+         else if (! file_name_absolute_p (argv[i])
+                  && (isalpha (argv[i][0]) && argv[i][1] == ':'))
+           /* Windows can have a different default directory for each
+              drive, so the cwd passed via "-dir" is not sufficient
+              to account for that.
+              If the user uses <drive>:<relpath>, we hence need to be
+              careful to expand <relpath> with the default directory
+              corresponding to <drive>.  */
+           {
+             char *filename = (char *) xmalloc (MAX_PATH);
+             DWORD size;
+
+             size = GetFullPathName (argv[i], MAX_PATH, filename, NULL);
+             if (size > 0 && size < MAX_PATH)
+               argv[i] = filename;
+             else
+               free (filename);
+           }
+#endif
 
           send_to_emacs (emacs_socket, "-file ");
           quote_argument (emacs_socket, argv[i]);