diff src/buffer.c @ 4733:a5210e70ffbe

No need to fatal () on startup if $PWD doesn't exist; chdir to "/" instead. src/ChangeLog addition: 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * sysfile.h (DEFAULT_DIRECTORY_FALLBACK): New #define, "/" on Unix and "C:\\" on Win32 native, a directory that should "always" be available. * fileio.c (Fexpand_file_name): Use DEFAULT_DIRECTORY_FALLBACK here, instead of conditionalising on WIN32_NATIVE. * editfns.c (get_home_directory): Use DEFAULT_DIRECTORY_FALLBACK if looking up the home directory fails, on both Windows and Unix. * buffer.c (init_initial_directory): Don't give a fatal error if the current directory doesn't exist, chdir to DEFAULT_DIRECTORY_FALLBACK instead.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 08 Nov 2009 17:27:26 +0000
parents 77138fc618a9
children d261888e5069
line wrap: on
line diff
--- a/src/buffer.c	Mon Nov 02 14:00:49 2009 +0900
+++ b/src/buffer.c	Sun Nov 08 17:27:26 2009 +0000
@@ -2926,7 +2926,19 @@
       {
 	Ibyte *errmess;
 	GET_STRERROR (errmess, errno);
-	fatal ("`getcwd' failed: %s\n", errmess);
+	stderr_out ("`getcwd' failed: %s: changing default directory to %s\n",
+                    errmess, DEFAULT_DIRECTORY_FALLBACK);
+
+        if (qxe_chdir (DEFAULT_DIRECTORY_FALLBACK) < 0)
+          {
+            GET_STRERROR (errmess, errno);
+
+            fatal ("could not `chdir' to `%s': %s\n",
+                   DEFAULT_DIRECTORY_FALLBACK, errmess);
+          }
+
+        initial_directory = qxe_allocating_getcwd();
+        assert (initial_directory != NULL);
       }
 
   /* Make sure pwd is DIRECTORY_SEP-terminated.