Mercurial > emacs
comparison src/buffer.c @ 83376:de684325b343
Merged in changes from CVS trunk.
Patches applied:
* lorentey@elte.hu--2004/emacs--cvs-trunk--0--patch-6
Update from CVS
* lorentey@elte.hu--2004/emacs--cvs-trunk--0--patch-7
Sync with miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-539.
* lorentey@elte.hu--2004/emacs--cvs-trunk--0--version-0
Branch closed. Use miles@gnu.org--gnu-2005/emacs--cvs-trunk--0 instead.
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-475
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-476
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-477
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-478
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-479
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-480
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-481
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-482
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-483
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-484
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-485
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-486
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-487
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-488
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-489
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-490
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-491
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-492
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-493
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-494
Update from CVS: lisp/startup.el (command-line): Fix typo.
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-495
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-496
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-497
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-498
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-499
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-500
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-501
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-502
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-503
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-504
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-505
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-506
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-507
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-508
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-509
Update from CVS: .cvsignore: Add `lock'.
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-510
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-511
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-512
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-513
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-514
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-515
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-516
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-517
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-518
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-519
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-520
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-521
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-522
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-523
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-524
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-525
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-526
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-527
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-528
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-529
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-530
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-531
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-532
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-533
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-534
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-535
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-536
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-537
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-538
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-539
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-88
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-89
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-90
Update FSF's address in GPL notices
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-91
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-92
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-93
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-94
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-95
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-96
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-97
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-98
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-99
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-100
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-101
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-102
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-103
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-104
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-105
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-106
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-107
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-108
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-109
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-110
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-111
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-112
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-113
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-114
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-416
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sun, 11 Sep 2005 08:23:50 +0000 |
parents | 532e0a9335a9 1ffe6d4d0fc4 |
children | 1cd4072747c6 |
comparison
equal
deleted
inserted
replaced
83375:6e8cc0cd2f5a | 83376:de684325b343 |
---|---|
30 | 30 |
31 #ifndef USE_CRT_DLL | 31 #ifndef USE_CRT_DLL |
32 extern int errno; | 32 extern int errno; |
33 #endif | 33 #endif |
34 | 34 |
35 #ifndef MAXPATHLEN | |
36 /* in 4.1 [probably SunOS? -stef] , param.h fails to define this. */ | |
37 #define MAXPATHLEN 1024 | |
38 #endif /* not MAXPATHLEN */ | |
39 | 35 |
40 #ifdef HAVE_UNISTD_H | 36 #ifdef HAVE_UNISTD_H |
41 #include <unistd.h> | 37 #include <unistd.h> |
42 #endif | 38 #endif |
43 | 39 |
5113 } | 5109 } |
5114 | 5110 |
5115 void | 5111 void |
5116 init_buffer () | 5112 init_buffer () |
5117 { | 5113 { |
5118 char buf[MAXPATHLEN + 1]; | |
5119 char *pwd; | 5114 char *pwd; |
5120 struct stat dotstat, pwdstat; | 5115 struct stat dotstat, pwdstat; |
5121 Lisp_Object temp; | 5116 Lisp_Object temp; |
5122 int rc; | 5117 int rc; |
5123 | 5118 |
5136 | 5131 |
5137 Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); | 5132 Fset_buffer (Fget_buffer_create (build_string ("*scratch*"))); |
5138 if (NILP (buffer_defaults.enable_multibyte_characters)) | 5133 if (NILP (buffer_defaults.enable_multibyte_characters)) |
5139 Fset_buffer_multibyte (Qnil); | 5134 Fset_buffer_multibyte (Qnil); |
5140 | 5135 |
5141 /* If PWD is accurate, use it instead of calling getwd. PWD is | 5136 pwd = get_current_dir_name (); |
5142 sometimes a nicer name, and using it may avoid a fatal error if a | 5137 |
5143 parent directory is searchable but not readable. */ | 5138 if (!pwd) |
5144 if ((pwd = getenv ("PWD")) != 0 | 5139 fatal ("`get_current_dir_name' failed: %s\n", strerror (errno)); |
5145 && (IS_DIRECTORY_SEP (*pwd) || (*pwd && IS_DEVICE_SEP (pwd[1]))) | |
5146 && stat (pwd, &pwdstat) == 0 | |
5147 && stat (".", &dotstat) == 0 | |
5148 && dotstat.st_ino == pwdstat.st_ino | |
5149 && dotstat.st_dev == pwdstat.st_dev | |
5150 && strlen (pwd) < MAXPATHLEN) | |
5151 strcpy (buf, pwd); | |
5152 #ifdef HAVE_GETCWD | |
5153 else if (getcwd (buf, MAXPATHLEN+1) == 0) | |
5154 fatal ("`getcwd' failed: %s\n", strerror (errno)); | |
5155 #else | |
5156 else if (getwd (buf) == 0) | |
5157 fatal ("`getwd' failed: %s\n", buf); | |
5158 #endif | |
5159 | 5140 |
5160 #ifndef VMS | 5141 #ifndef VMS |
5161 /* Maybe this should really use some standard subroutine | 5142 /* Maybe this should really use some standard subroutine |
5162 whose definition is filename syntax dependent. */ | 5143 whose definition is filename syntax dependent. */ |
5163 rc = strlen (buf); | 5144 rc = strlen (pwd); |
5164 if (!(IS_DIRECTORY_SEP (buf[rc - 1]))) | 5145 if (!(IS_DIRECTORY_SEP (pwd[rc - 1]))) |
5165 { | 5146 { |
5166 buf[rc] = DIRECTORY_SEP; | 5147 /* Grow buffer to add directory separator and '\0'. */ |
5167 buf[rc + 1] = '\0'; | 5148 pwd = (char *) xrealloc (pwd, rc + 2); |
5149 pwd[rc] = DIRECTORY_SEP; | |
5150 pwd[rc + 1] = '\0'; | |
5168 } | 5151 } |
5169 #endif /* not VMS */ | 5152 #endif /* not VMS */ |
5170 | 5153 |
5171 current_buffer->directory = make_unibyte_string (buf, strlen (buf)); | 5154 current_buffer->directory = make_unibyte_string (pwd, strlen (pwd)); |
5172 if (! NILP (buffer_defaults.enable_multibyte_characters)) | 5155 if (! NILP (buffer_defaults.enable_multibyte_characters)) |
5173 /* At this momemnt, we still don't know how to decode the | 5156 /* At this moment, we still don't know how to decode the |
5174 direcotry name. So, we keep the bytes in multibyte form so | 5157 directory name. So, we keep the bytes in multibyte form so |
5175 that ENCODE_FILE correctly gets the original bytes. */ | 5158 that ENCODE_FILE correctly gets the original bytes. */ |
5176 current_buffer->directory | 5159 current_buffer->directory |
5177 = string_to_multibyte (current_buffer->directory); | 5160 = string_to_multibyte (current_buffer->directory); |
5178 | 5161 |
5179 /* Add /: to the front of the name | 5162 /* Add /: to the front of the name |
5188 current_buffer->directory | 5171 current_buffer->directory |
5189 = concat2 (build_string ("/:"), current_buffer->directory); | 5172 = concat2 (build_string ("/:"), current_buffer->directory); |
5190 | 5173 |
5191 temp = get_minibuffer (0); | 5174 temp = get_minibuffer (0); |
5192 XBUFFER (temp)->directory = current_buffer->directory; | 5175 XBUFFER (temp)->directory = current_buffer->directory; |
5176 | |
5177 free (pwd); | |
5193 } | 5178 } |
5194 | 5179 |
5195 /* initialize the buffer routines */ | 5180 /* initialize the buffer routines */ |
5196 void | 5181 void |
5197 syms_of_buffer () | 5182 syms_of_buffer () |