# HG changeset patch # User Aidan Kehoe # Date 1257701246 0 # Node ID a5210e70ffbe54b7dbc651f8b3475261fa05ddd9 # Parent 2491a837112ce5a873c8d2df3e3b4f0d60760510 No need to fatal () on startup if $PWD doesn't exist; chdir to "/" instead. src/ChangeLog addition: 2009-11-08 Aidan Kehoe * 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. diff -r 2491a837112c -r a5210e70ffbe src/ChangeLog --- a/src/ChangeLog Mon Nov 02 14:00:49 2009 +0900 +++ b/src/ChangeLog Sun Nov 08 17:27:26 2009 +0000 @@ -1,3 +1,17 @@ +2009-11-08 Aidan Kehoe + + * 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. + 2009-11-02 Stephen Turnbull Fix issue145. diff -r 2491a837112c -r a5210e70ffbe src/buffer.c --- 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. diff -r 2491a837112c -r a5210e70ffbe src/editfns.c --- a/src/editfns.c Mon Nov 02 14:00:49 2009 +0900 +++ b/src/editfns.c Sun Nov 08 17:27:26 2009 +0000 @@ -862,20 +862,15 @@ homepath); } else +#endif /* !WIN32_NATIVE */ { - cached_home_directory = qxestrdup ((Ibyte *) "C:\\"); + /* Unix, typically. + Using "/" isn't quite right, but what should we do? + We probably should try to extract pw_dir from /etc/passwd, + before falling back to this. */ + cached_home_directory = qxestrdup (DEFAULT_DIRECTORY_FALLBACK); output_home_warning = 1; } -#else /* !WIN32_NATIVE */ - /* - * Unix, typically. - * Using "/" isn't quite right, but what should we do? - * We probably should try to extract pw_dir from /etc/passwd, - * before falling back to this. - */ - cached_home_directory = qxestrdup ((Ibyte *) "/"); - output_home_warning = 1; -#endif /* !WIN32_NATIVE */ } if (initialized && output_home_warning) { diff -r 2491a837112c -r a5210e70ffbe src/fileio.c --- a/src/fileio.c Mon Nov 02 14:00:49 2009 +0900 +++ b/src/fileio.c Sun Nov 08 17:27:26 2009 +0000 @@ -790,11 +790,7 @@ if (NILP (default_directory)) default_directory = current_buffer->directory; if (! STRINGP (default_directory)) -#ifdef WIN32_NATIVE - default_directory = build_string ("C:\\"); -#else - default_directory = build_string ("/"); -#endif + default_directory = build_string (DEFAULT_DIRECTORY_FALLBACK); if (!NILP (default_directory)) { diff -r 2491a837112c -r a5210e70ffbe src/sysfile.h --- a/src/sysfile.h Mon Nov 02 14:00:49 2009 +0900 +++ b/src/sysfile.h Sun Nov 08 17:27:26 2009 +0000 @@ -490,6 +490,8 @@ /* The above Lisp variables are not available to make-docfile, etc. */ #define DIRECTORY_SEP DEFAULT_DIRECTORY_SEP +#define DEFAULT_DIRECTORY_FALLBACK ((Ibyte *)"C:\\") + #endif /* emacs */ #else /* not WIN32_NATIVE */ @@ -497,6 +499,7 @@ #define SEPCHAR ':' #define DEFAULT_DIRECTORY_SEP '/' #define DIRECTORY_SEP '/' +#define DEFAULT_DIRECTORY_FALLBACK ((Ibyte *)"/") #endif /* WIN32_NATIVE */