From 8dcaeba2063164d2dfe11cfe0786fcb4c95d7105 Mon Sep 17 00:00:00 2001 From: Jason Rumney Date: Tue, 22 Jul 2008 15:28:21 +0000 Subject: [PATCH] (Fw32_long_file_name): Don't append dir separator to bare drive. --- src/ChangeLog | 6 +++++- src/w32proc.c | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/ChangeLog b/src/ChangeLog index 81d1006f56f..2e75084d5bf 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2008-07-22 Jason Rumney + + * w32proc.c (Fw32_long_file_name): Don't append dir separator to + bare drive. + 2008-07-22 Adrian Robert * nsgui.h: @@ -11526,7 +11531,6 @@ * w32fns.c (globals_of_w32fns): Init common controls. 2007-10-08 Richard Stallman - * image.c (our_memory_buffer): Rename from omfib_buffer. 2007-10-08 Richard Stallman diff --git a/src/w32proc.c b/src/w32proc.c index 33981445c7c..ed405cce9ff 100644 --- a/src/w32proc.c +++ b/src/w32proc.c @@ -1799,9 +1799,14 @@ All path elements in FILENAME are converted to their long names. */) Lisp_Object filename; { char longname[ MAX_PATH ]; + int drive_only = 0; CHECK_STRING (filename); + if (SBYTES (filename) == 2 + && *(SDATA (filename) + 1) == ':') + drive_only = 1; + /* first expand it. */ filename = Fexpand_file_name (filename, Qnil); @@ -1810,6 +1815,12 @@ All path elements in FILENAME are converted to their long names. */) CORRECT_DIR_SEPS (longname); + /* If we were passed only a drive, make sure that a slash is not appended + for consistency with directories. Allow for drive mapping via SUBST + in case expand-file-name is ever changed to expand those. */ + if (drive_only && longname[1] == ':' && longname[2] == '/' && !longname[3]) + longname[2] = '\0'; + return build_string (longname); } -- 2.39.2