summaryrefslogtreecommitdiff
path: root/lib-src
diff options
context:
space:
mode:
Diffstat (limited to 'lib-src')
-rw-r--r--lib-src/ChangeLog5
-rw-r--r--lib-src/emacsclient.c20
2 files changed, 25 insertions, 0 deletions
diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog
index 0609f1e1e10..c9c37ed76ff 100644
--- a/lib-src/ChangeLog
+++ b/lib-src/ChangeLog
@@ -1,5 +1,10 @@
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
names without prepending cwd to them, so Emacs uses its customary
rules to determine how to interpret the file name.
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 <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]);