]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix startup working dir bug on NeXTSTEP
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 13 Aug 2020 19:48:57 +0000 (12:48 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 13 Aug 2020 22:44:00 +0000 (15:44 -0700)
* src/emacs.c (main) [NS_IMPL_COCOA]: Update emacs_wd
after a NS GUI chdirs successfully (Bug#42836).

src/emacs.c

index 1dcf1958912865e19f0e1bc3ff90f64e032460de..11dcdb33fe02e5ce92de633586283cca61db2699 100644 (file)
@@ -1638,23 +1638,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 */