From 6cde1b21385d450f73b889deee4e11211b0036ec Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Wed, 11 Mar 2009 00:57:03 +0000 Subject: [PATCH] * emacsclient.c (main): Revert part of last change, so drive-relative file names again work on Windows. --- lib-src/ChangeLog | 5 +++++ lib-src/emacsclient.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 0609f1e1e10..c9c37ed76ff 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,8 @@ +2009-03-10 Stefan Monnier + + * emacsclient.c (main): Revert part of last change, so + drive-relative file names again work on Windows. + 2009-03-10 Stefan Monnier * emacsclient.c (main): Always pass cwd via "-dir". Pass the file diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 3197b2a7276..f66d6b4cd25 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -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 :, we hence need to be + careful to expand with the default directory + corresponding to . */ + { + 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]); -- 2.39.5