From ba528748a14a34d2c3f619615c4cdaf4bbd89cc0 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 10 Mar 2009 14:08:52 +0000 Subject: [PATCH] * 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. --- lib-src/ChangeLog | 6 ++++++ lib-src/emacsclient.c | 40 ++++------------------------------------ lisp/ChangeLog | 3 +++ lisp/server.el | 2 +- 4 files changed, 14 insertions(+), 37 deletions(-) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 02f9918ebd..0609f1e1e1 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,9 @@ +2009-03-10 Stefan Monnier + + * 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 * movemail.c (main) [MAIL_USE_POP]: Add -r to usage message. diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 559664f0d4..3197b2a727 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -1566,11 +1566,11 @@ main (argc, argv) 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 @@ main (argc, argv) { for (i = optind; i < argc; i++) { - int relative = 0; if (eval) { @@ -1635,40 +1634,9 @@ main (argc, argv) 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, " "); } diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ee521252b9..2170615668 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2009-03-10 Stefan Monnier + * 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 diff --git a/lisp/server.el b/lisp/server.el index 5e4e6e1548..10b08ad4a3 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -962,7 +962,7 @@ The following commands are accepted by the client: (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)) -- 2.20.1