From 169d04b8ac416c71a8b89a9c4a975d0f014265e0 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 16 Sep 2019 17:51:25 +0300 Subject: [PATCH] Fix initialization of shared-game-score-directory on MS-Windows * src/callproc.c (init_callproc) [WINDOWSNT]: Run PATH_GAME through w32_relocate, to expand %emacs_dir%. [DOS_NT]: Accept EACCES as not "unusual" errno value. Reported by Richard Copley . --- src/callproc.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/callproc.c b/src/callproc.c index 20e0bc50dab..1ac0bdc710a 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -1595,10 +1595,21 @@ init_callproc (void) Lisp_Object gamedir = Qnil; if (PATH_GAME) { - Lisp_Object path_game = build_unibyte_string (PATH_GAME); + const char *cpath_game = PATH_GAME; +#ifdef WINDOWSNT + /* On MS-Windows, PATH_GAME normally starts with a literal + "%emacs_dir%", so it will never work without some tweaking. */ + cpath_game = w32_relocate (cpath_game); +#endif + Lisp_Object path_game = build_unibyte_string (cpath_game); if (file_accessible_directory_p (path_game)) gamedir = path_game; - else if (errno != ENOENT && errno != ENOTDIR) + else if (errno != ENOENT && errno != ENOTDIR +#ifdef DOS_NT + /* DOS/Windows sometimes return EACCES for bad file names */ + && errno != EACCES +#endif + ) dir_warning ("game dir", path_game); } Vshared_game_score_directory = gamedir; -- 2.39.5