emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 4a5a175: Fix recent change in fileio.c


From: Eli Zaretskii
Subject: [Emacs-diffs] master 4a5a175: Fix recent change in fileio.c
Date: Tue, 13 Nov 2018 15:03:35 -0500 (EST)

branch: master
commit 4a5a17507fe1e12ee02c174350edc479fb01ac01
Author: Eli Zaretskii <address@hidden>
Commit: Eli Zaretskii <address@hidden>

    Fix recent change in fileio.c
    
    * src/fileio.c (get_homedir) [WINDOWSNT]: Convert $HOME to UTF-8.
    (Fexpand_file_name): Don't convert it here.
---
 src/fileio.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/src/fileio.c b/src/fileio.c
index e178c39..59446ac 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -1096,18 +1096,7 @@ the root directory.  */)
 
          newdir = get_homedir ();
          nm++;
-#ifdef WINDOWSNT
-         if (newdir[0])
-           {
-             char newdir_utf8[MAX_UTF8_PATH];
-
-             filename_from_ansi (newdir, newdir_utf8);
-             tem = make_unibyte_string (newdir_utf8, strlen (newdir_utf8));
-             newdir = SSDATA (tem);
-           }
-         else
-#endif
-           tem = build_string (newdir);
+         tem = build_string (newdir);
          newdirlim = newdir + SBYTES (tem);
          /* get_homedir may return a unibyte string, which will bite us
             if we expect the directory to be multibyte.  */
@@ -1669,6 +1658,19 @@ char const *
 get_homedir (void)
 {
   char const *home = egetenv ("HOME");
+
+#ifdef WINDOWSNT
+  /* getpw* functions return UTF-8 encoded file names, whereas egetenv
+     returns strings in locale encoding, so we need to convert for
+     consistency.  */
+  char homedir_utf8[MAX_UTF8_PATH];
+  if (home)
+    {
+      filename_from_ansi (home, homedir_utf8);
+      home = homedir_utf8;
+    }
+#endif
+
   if (!home)
     {
       static char const *userenv[] = {"LOGNAME", "USER"};



reply via email to

[Prev in Thread] Current Thread [Next in Thread]