From: Eli Zaretskii Date: Mon, 16 Sep 2019 14:51:25 +0000 (+0300) Subject: Fix initialization of shared-game-score-directory on MS-Windows X-Git-Tag: emacs-27.0.90~1551^2~39 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=169d04b8ac416c71a8b89a9c4a975d0f014265e0;p=emacs.git 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 . --- 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;