emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/buffer.c


From: Eli Zaretskii
Subject: [Emacs-diffs] Changes to emacs/src/buffer.c
Date: Sat, 10 Sep 2005 07:30:06 -0400

Index: emacs/src/buffer.c
diff -c emacs/src/buffer.c:1.488 emacs/src/buffer.c:1.489
*** emacs/src/buffer.c:1.488    Sun Aug  7 12:33:16 2005
--- emacs/src/buffer.c  Sat Sep 10 11:30:06 2005
***************
*** 32,41 ****
  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>
--- 32,37 ----
***************
*** 54,59 ****
--- 50,57 ----
  #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,5121 ****
  void
  init_buffer ()
  {
-   char buf[MAXPATHLEN + 1];
    char *pwd;
    struct stat dotstat, pwdstat;
    Lisp_Object temp;
--- 5113,5118 ----
***************
*** 5138,5174 ****
    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
  
  #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])))
      {
!       buf[rc] = DIRECTORY_SEP;
!       buf[rc + 1] = '\0';
      }
  #endif /* not VMS */
  
!   current_buffer->directory = make_unibyte_string (buf, strlen (buf));
    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
--- 5135,5157 ----
    if (NILP (buffer_defaults.enable_multibyte_characters))
      Fset_buffer_multibyte (Qnil);
  
!   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 (pwd);
!   if (!(IS_DIRECTORY_SEP (pwd[rc - 1])))
      {
!       pwd[rc] = DIRECTORY_SEP;
!       pwd[rc + 1] = '\0';
      }
  #endif /* not VMS */
  
!   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,5195 ****
--- 5173,5180 ----
  
    temp = get_minibuffer (0);
    XBUFFER (temp)->directory = current_buffer->directory;
+ 
+   free (pwd);
  }
  
  /* initialize the buffer routines */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]