diff options
Diffstat (limited to 'src/emacs.c')
-rw-r--r-- | src/emacs.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/emacs.c b/src/emacs.c index 288ddb47bd7..8e52da75926 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -1643,23 +1643,27 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem { #ifdef NS_IMPL_COCOA /* Started from GUI? */ - /* FIXME: Do the right thing if get_homedir returns "", or if - chdir fails. */ - if (! inhibit_window_system && ! isatty (STDIN_FILENO) && ! ch_to_dir) - chdir (get_homedir ()); + bool go_home = (!ch_to_dir && !inhibit_window_system + && !isatty (STDIN_FILENO)); if (skip_args < argc) { if (!strncmp (argv[skip_args], "-psn", 4)) { skip_args += 1; - if (! ch_to_dir) chdir (get_homedir ()); + go_home |= !ch_to_dir; } else if (skip_args+1 < argc && !strncmp (argv[skip_args+1], "-psn", 4)) { skip_args += 2; - if (! ch_to_dir) chdir (get_homedir ()); + go_home |= !ch_to_dir; } } + if (go_home) + { + char const *home = get_homedir (); + if (*home && chdir (home) == 0) + emacs_wd = emacs_get_current_dir_name (); + } #endif /* COCOA */ } #endif /* HAVE_NS */ |