Commit 01537133 authored by Eli Zaretskii's avatar Eli Zaretskii
Browse files

(init_buffer): Use get_current_dir_name.

parent f78f1a83
......@@ -32,10 +32,6 @@ Boston, MA 02110-1301, USA. */
extern int errno;
#endif
#ifndef MAXPATHLEN
/* in 4.1 [probably SunOS? -stef] , param.h fails to define this. */
#define MAXPATHLEN 1024
#endif /* not MAXPATHLEN */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
......@@ -54,6 +50,8 @@ extern int errno;
#include "keymap.h"
#include "frame.h"
extern char * get_current_dir_name ();
struct buffer *current_buffer; /* the current buffer */
/* First buffer in chain of all buffers (in reverse order of creation).
......@@ -5115,7 +5113,6 @@ init_buffer_once ()
void
init_buffer ()
{
char buf[MAXPATHLEN + 1];
char *pwd;
struct stat dotstat, pwdstat;
Lisp_Object temp;
......@@ -5138,37 +5135,23 @@ init_buffer ()
if (NILP (buffer_defaults.enable_multibyte_characters))
Fset_buffer_multibyte (Qnil);
/* If PWD is accurate, use it instead of calling getwd. PWD is
sometimes a nicer name, and using it may avoid a fatal error if a
parent directory is searchable but not readable. */
if ((pwd = getenv ("PWD")) != 0
&& (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1])))
&& stat (pwd, &pwdstat) == 0
&& stat (".", &dotstat) == 0
&& dotstat.st_ino == pwdstat.st_ino
&& dotstat.st_dev == pwdstat.st_dev
&& strlen (pwd) < MAXPATHLEN)
strcpy (buf, pwd);
#ifdef HAVE_GETCWD
else if (getcwd (buf, MAXPATHLEN+1) == 0)
fatal ("`getcwd' failed: %s\n", strerror (errno));
#else
else if (getwd (buf) == 0)
fatal ("`getwd' failed: %s\n", buf);
#endif
pwd = get_current_dir_name ();
if(!pwd)
fatal ("`get_cwd' failed: %s\n", strerror (errno));
#ifndef VMS
/* Maybe this should really use some standard subroutine
whose definition is filename syntax dependent. */
rc = strlen (buf);
if (!(IS_DIRECTORY_SEP (buf[rc - 1])))
rc = strlen (pwd);
if (!(IS_DIRECTORY_SEP (pwd[rc - 1])))
{
buf[rc] = DIRECTORY_SEP;
buf[rc + 1] = '\0';
pwd[rc] = DIRECTORY_SEP;
pwd[rc + 1] = '\0';
}
#endif /* not VMS */
current_buffer->directory = make_unibyte_string (buf, strlen (buf));
current_buffer->directory = make_unibyte_string (pwd, strlen (pwd));
if (! NILP (buffer_defaults.enable_multibyte_characters))
/* At this momemnt, we still don't know how to decode the
direcotry name. So, we keep the bytes in multibyte form so
......@@ -5190,6 +5173,8 @@ init_buffer ()
temp = get_minibuffer (0);
XBUFFER (temp)->directory = current_buffer->directory;
free (pwd);
}
/* initialize the buffer routines */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment