summaryrefslogtreecommitdiff
path: root/lib-src/emacsclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib-src/emacsclient.c')
-rw-r--r--lib-src/emacsclient.c20
1 files changed, 20 insertions, 0 deletions
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]);