changeset 102471:02f766280fad

* server.el (server-process-filter): Use expand-file-name rather than command-line-normalize-file-name so as to use the `dir' when provided. * emacsclient.c (main): Always pass cwd via "-dir". Pass the file names without prepending cwd to them, so Emacs uses its customary rules to determine how to interpret the file name.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 10 Mar 2009 14:08:52 +0000
parents a08e142509bf
children 58ec78703942
files lib-src/ChangeLog lib-src/emacsclient.c lisp/ChangeLog lisp/server.el
diffstat 4 files changed, 14 insertions(+), 37 deletions(-) [+]
line wrap: on
line diff
--- a/lib-src/ChangeLog	Tue Mar 10 13:33:23 2009 +0000
+++ b/lib-src/ChangeLog	Tue Mar 10 14:08:52 2009 +0000
@@ -1,3 +1,9 @@
+2009-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* emacsclient.c (main): Always pass cwd via "-dir".  Pass the file
+	names without prepending cwd to them, so Emacs uses its customary
+	rules to determine how to interpret the file name.
+
 2009-03-04  Glenn Morris  <rgm@gnu.org>
 
 	* movemail.c (main) [MAIL_USE_POP]: Add -r to usage message.
--- a/lib-src/emacsclient.c	Tue Mar 10 13:33:23 2009 +0000
+++ b/lib-src/emacsclient.c	Tue Mar 10 14:08:52 2009 +0000
@@ -1566,11 +1566,11 @@
           quote_argument (emacs_socket, environ[i]);
           send_to_emacs (emacs_socket, " ");
         }
-      send_to_emacs (emacs_socket, "-dir ");
-      quote_argument (emacs_socket, cwd);
-      send_to_emacs (emacs_socket, "/");
-      send_to_emacs (emacs_socket, " ");
     }
+  send_to_emacs (emacs_socket, "-dir ");
+  quote_argument (emacs_socket, cwd);
+  send_to_emacs (emacs_socket, "/");
+  send_to_emacs (emacs_socket, " ");
 
  retry:
   if (nowait)
@@ -1613,7 +1613,6 @@
     {
       for (i = optind; i < argc; i++)
 	{
-          int relative = 0;
 
 	  if (eval)
             {
@@ -1635,40 +1634,9 @@
                   send_to_emacs (emacs_socket, " ");
                   continue;
                 }
-              else
-                relative = 1;
             }
-	  else if (! file_name_absolute_p (argv[i]))
-#ifndef WINDOWSNT
-	    relative = 1;
-#else
-	    /* Call GetFullPathName so filenames of the form X:Y, where X is
-	       a valid drive designator, are interpreted as drive:path, not
-	       file:stream, and treated as absolute.
-	       The user can still pass a file:stream if desired (for example,
-	       .\X:Y), but it is not very useful, as Emacs currently does a
-	       very bad job of dealing with NTFS streams. */
-	    {
-	      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
-		{
-		  relative = 1;
-		  free (filename);
-		}
-	    }
-#endif
 
           send_to_emacs (emacs_socket, "-file ");
-          if (relative)
-            {
-              quote_argument (emacs_socket, cwd);
-              send_to_emacs (emacs_socket, "/");
-            }
           quote_argument (emacs_socket, argv[i]);
           send_to_emacs (emacs_socket, " ");
         }
--- a/lisp/ChangeLog	Tue Mar 10 13:33:23 2009 +0000
+++ b/lisp/ChangeLog	Tue Mar 10 14:08:52 2009 +0000
@@ -1,5 +1,8 @@
 2009-03-10  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+	* server.el (server-process-filter): Use expand-file-name rather than
+	command-line-normalize-file-name so as to use the `dir' when provided.
+
 	* doc-view.el (doc-view-convert-current-doc): Fix last change.
 
 2009-03-10  Glenn Morris  <rgm@gnu.org>
--- a/lisp/server.el	Tue Mar 10 13:33:23 2009 +0000
+++ b/lisp/server.el	Tue Mar 10 14:08:52 2009 +0000
@@ -962,7 +962,7 @@
 		  (let ((file (pop command-line-args-left)))
 		    (if coding-system
 			(setq file (decode-coding-string file coding-system)))
-		    (setq file (command-line-normalize-file-name file))
+                    (setq file (expand-file-name file dir))
 		    (push (cons file filepos) files)
 		    (server-log (format "New file: %s %s"
                                         file (or filepos "")) proc))